Saya akan melakukan ini dengan menambahkan sumber ke zona. Pertama checkout sumber mana yang tersedia untuk zona Anda:
firewall-cmd --permanent --zone=public --list-sources
Jika tidak ada, Anda dapat mulai menambahkannya, ini adalah "daftar putih" Anda
firewall-cmd --permanent --zone=public --add-source=192.168.100.0/24
firewall-cmd --permanent --zone=public --add-source=192.168.222.123/32
(Itu menambahkan /24
IP keseluruhan dan tunggal, sehingga Anda memiliki referensi untuk subnet dan IP tunggal)
Tetapkan rentang port yang ingin Anda buka:
firewall-cmd --permanent --zone=public --add-port=1-22/tcp
firewall-cmd --permanent --zone=public --add-port=1-22/udp
Ini hanya melakukan port 1 hingga 22. Anda dapat memperluas ini, jika mau.
Sekarang, muat ulang apa yang telah Anda lakukan.
firewall-cmd --reload
Dan periksa pekerjaan Anda:
firewall-cmd --zone=public --list-all
Catatan samping / editorial: Tidak masalah tapi saya suka zona "tepercaya" untuk satu set IP yang terdaftar di firewalld. Anda dapat membuat penilaian lebih lanjut dengan membaca saran redhat tentang memilih zona .
Lihat juga:
Jika Anda ingin DROP
paket di luar sumber ini, berikut adalah contoh untuk menjatuhkan yang di luar yang /24
saya gunakan sebagai contoh sebelumnya, Anda dapat menggunakan aturan kaya untuk ini , saya percaya. Ini konseptual, saya belum mengujinya (lebih jauh daripada melihat bahwa centos 7 menerima perintah), tetapi, harus cukup mudah untuk melakukan pcap dan melihat apakah berperilaku seperti yang Anda harapkan
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.100.0/24" invert="True" drop'
Bahkan jika jawaban telah diterima dan dipilih, saya tidak berpikir itu adalah jawaban yang benar. Saya gagal menemukan penjelasan yang jelas dalam dokumentasi, tetapi dari perilaku yang diterapkan sepertinya:
Jadi jawabannya adalah:
Misalnya, dengan asumsi zona default bersifat publik dan tidak memiliki port terbuka, tambahkan sumber dan rentang port ke zona "berfungsi":
sekarang periksa zona aktif (zona default selalu aktif):
Anda akan mendapatkan:
jadi aturan zona "kerja" akan berlaku untuk subnet tertentu. Anda akan memiliki serangkaian port terbuka untuk "daftar putih" = subnet seperti yang diminta. Dan tentu saja menggunakan
--permanent
opsi dalam--add-xxx
pernyataan untuk membuat perilaku tetap.Pada gilirannya, port atau layanan apa pun yang Anda miliki di zona "publik" (default) akan berlaku untuk semua antarmuka dan alamat sumber.
Sistem yang sama berfungsi untuk antarmuka. Katakan dengan menambahkan antarmuka "ens3" ke zona "kerja":
Anda akan menggunakan aturan zona "kerja" untuk setiap permintaan dari antarmuka tertentu - pemilih yang lebih kasar daripada "sumber".
sumber
sources
daftar putih. Alasannya adalah bahwa zona memiliki antarmuka yang ditetapkan.public
zona, jika ada (layanan ini akan tersedia untuk semua alamat karena antarmuka ditetapkan kepublic
zona secara default). Atau ubah zona default ke yang lain:block
ataudrop
(ini adalah praktik umum). Atau ubahpublic
target zona menjadi%%REJECT%%
atauDROP
.Penafian: Saya belum benar-benar mencoba apa yang saya sarankan, di sini, tapi itu cukup dekat dengan pengaturan firewalld terakhir yang saya lakukan, jadi saya akan pergi dari itu. Firewalld memberi Anda beberapa zona pra-konfigurasi, hanya untuk tujuan ini. Ada satu yang disebut "drop", yang menjatuhkan apa pun yang masuk, dan satu disebut "tepercaya", yang memungkinkan koneksi apa pun (yaitu, jadi Anda bahkan tidak perlu membuka port individual, saya pikir). Triknya adalah mendapatkan zona yang tepat untuk memicu apa yang Anda inginkan.
Firewalld akan menerapkan aturan untuk zona berdasarkan prioritas berikut:
Jadi, pertama-tama, Anda ingin mengikat IP tepercaya Anda ke zona "tepercaya":
Lalu, atur zona default Anda ke "drop" atau ikat antarmuka Anda ke sana:
dan kemudian buat perubahan berlaku (peringatan: ini mungkin akan menjatuhkan koneksi Anda jika Anda melakukan ini melalui jaringan dan Anda tidak menambahkan IP sumber Anda ke zona tepercaya):
Tentu saja, Anda juga bisa menguji ini sementara dengan menghilangkan "--permanent" (dan kemudian Anda tidak perlu --muat ulang, juga).
sumber
block
juga dapat digunakan (alih-alihdrop
) jika Anda ingin memberi tahu host lain bahwa Anda tidak berbicara dengan mereka ....Saya mengoperasikan firewall saya dengan cara ini. Inilah metode pilihan saya untuk mencapai apa yang Anda inginkan.
Anda akan melihat zona default Anda bersifat publik dan layanan yang diaktifkan adalah dhcpv6-client dan ssh. Kami tidak ingin ada layanan publik yang tersedia, kan? Hanya IP yang masuk daftar putih yang diotorisasi. Jadi mari kita hapus dua layanan publik.
Sekarang, mari masuk daftar putih IP tertentu yang memberikan akses ke port apa pun.
Sekarang, mari masuk daftar putih IP lain, yang kami hanya ingin memiliki akses ke akses SSH, http, dan https. Tidak ada port lain.
Jika Anda terhubung melalui SSH, pastikan untuk mengotorisasi IP Anda sebelum menerapkan set aturan baru Anda. Saat siap menerapkan aturan baru.
sumber
Anda dapat mengelola dengan mudah dengan Aturan Kaya.
Langkah pertama
Langkah Kedua - Tambahkan Aturan Kaya
Semua port dapat diakses oleh 192.168.2.2 setelah Anda menambahkan aturan kaya dan memblokir setiap port dari sumber lain.
Jika Anda akan menambahkan port atau layanan dengan perintah di bawah ini maka itu akan dapat diakses oleh semua sumber.
Jika Anda ingin membuka port spesifik untuk Ip tertentu daripada perintah di bawah ini
sumber
Jawaban teratas dari dougBTV salah. Saya tidak dapat menjawab jawabannya karena saya belum memiliki poin perwakilan yang diperlukan sehingga saya akan menjelaskan di sini:
Dia menggunakan zona default "publik". Dia mengikat jaringan ke zona itu dan kemudian membuka port di zona itu. Tetapi, pada konfigurasi default, semua lalu lintas melewati zona default, bukan hanya jaringan sumber yang Anda hubungkan dengannya. Jadi perintah --add-source-nya tidak membuat perbedaan dan perintah -add-port-nya kini telah memungkinkan seluruh dunia untuk mengakses port-port tersebut.
Jawaban ke-2 dari Normunds Kalnberzins benar. Anda ingin membuat zona terpisah, ikat jaringan / IP Anda ke zona itu, dan buka port di zona itu.
Atau, Anda dapat meninggalkan semuanya di zona default dan menggunakan aturan kaya firewalld untuk mengizinkan akses dari IP tertentu:
Ini memungkinkan semua lalu lintas dari 192.168.2.2 ke semua port dan karena saya belum menentukan zona ini akan diterapkan ke zona default "publik" (gunakan --get-default-zone untuk memverifikasi apa zona default Anda dan - get-active-zone untuk melihat zona mana yang sedang digunakan).
Untuk mengizinkan akses dari IP ini hanya ke port tertentu yang akan saya lakukan:
Praktik terbaik adalah menjalankan perintah-perintah ini tanpa --permanent (atau --perm singkatnya) yang mempengaruhi firewall yang sedang berjalan. Setelah menguji apakah aturan Anda berfungsi, jalankan lagi dengan --perm yang ditambahkan sehingga diingat pada firewalld berikutnya yang dimuat ulang.
sumber
Hanya untuk menambah jawaban Normunds:
Untuk memblokir semua lalu lintas lainnya:
Peringatan: jika Anda mengakses dari mesin jarak jauh, ini dapat memutuskan sesi login Anda. Jika Anda tidak mendapatkan pengaturan IP zona 'berfungsi' dengan benar, Anda tidak akan dapat terhubung ke server Anda.
Untuk memuat ulang firewall:
Saya tidak tahu bagaimana cara menambahkan dua IP yang berbeda dengan '--add-rich-rule'.
sumber
ipset
sepertifirewall-cmd --permanent --new-ipset=blacklist --type=hash:ip
tambah ips ke ipset denganfirewall-cmd --ipset=blacklist --add-entry=192.168.1.4
maka Anda bisa menggunakanfirewall-cmd --add-rich-rule='rule source ipset=blacklist drop'
Saya terkejut jawaban zona tepercaya bukanlah jawaban yang dipilih. Zona tepercaya memiliki "target: ACCEPT" default sedangkan sisanya "target: default". Meskipun benar-benar tidak masalah itu tampaknya menjadi metode yang dimaksudkan karena nama dan nilai target default.
Cara mengunci kotak dengan cepat sehingga hanya Anda yang dapat mengaksesnya:
Setelah mendaftar semua zona, Anda akan melihat sesuatu seperti ini:
Catatan: Saya menghapus baris dengan nilai nol / hilang. Yang penting adalah bahwa dipercaya dan drop keduanya (aktif) dan drop memiliki antarmuka publik Anda.
Apa yang dilakukan untuk iptables untuk demonstrasi:
sumber