Jaringan saya sepenuhnya dikunci kecuali untuk beberapa situs yang masuk daftar putih. Ini semua dilakukan melalui iptables, yang terlihat seperti ini:
# Allow traffic to google.com
iptables -A zone_lan_forward -p tcp -d 1.2.3.0/24 -j ACCEPT
iptables -A zone_lan_forward -p udp -d 1.2.3.0/24 -j ACCEPT
iptables -A zone_lan_forward -p tcp -d 11.12.13.0/24 -j ACCEPT
iptables -A zone_lan_forward -p udp -d 11.12.13.0/24 -j ACCEPT
iptables -A zone_lan_forward -p tcp -d 101.102.103.0/24 -j ACCEPT
iptables -A zone_lan_forward -p udp -d 101.102.103.0/24 -j ACCEPT
...
Jelas alamat-alamat itu hipotetis, tetapi Anda mendapatkan idenya. Firewall saya menjadi sangat besar. Akan lebih mudah untuk mempertahankannya jika saya bisa melakukan ini:
# Allow traffic to google.com
iptables -A zone_lan_forward -p tcp -d google.com -j ACCEPT
iptables -A zone_lan_forward -p udp -d google.com -j ACCEPT
Saya percaya ini mungkin, karena man iptables
mengatakan:
Alamat dapat berupa nama jaringan, nama host (harap dicatat bahwa menentukan nama apa pun untuk diselesaikan dengan kueri jarak jauh seperti DNS adalah ide yang sangat buruk), alamat IP jaringan (dengan / mask), atau alamat IP biasa.
Tetapi yang saya khawatirkan adalah bagian yang mengatakan "menentukan nama apa saja untuk diselesaikan dengan ... DNS adalah ide yang sangat buruk". Mengapa ini ide yang buruk? Apakah itu hanya memperlambat semuanya?
Jika saya benar-benar tidak boleh menggunakan nama host dalam aturan iptables, lalu apa yang harus saya lakukan untuk menyederhanakan firewall saya?
sumber
Jawaban:
Jika tujuan Anda adalah untuk memblokir akses HTTP, maka Anda biasanya jauh lebih baik menyiapkan perangkat lunak yang dirancang untuk memfilter pada tingkat itu (misalnya squid + squidquard).
sumber
Jika Anda menggunakan nama host di firewall Anda, firewall Anda sekarang tergantung pada DNS. Ini membuka firewall ke sejumlah masalah:
Jika Anda menggunakan nama host dan Anda tidak mengontrol DNS, maka orang lain secara efektif mengontrol aturan IPtables Anda. Kesalahan, kesalahan atau masalah keamanan pada akhirnya menjadi masalah bagi Anda.
Satu-satunya saat saya melihat nama host digunakan dengan baik adalah untuk operasi internal. Saya telah bekerja di kantor tempat IP dan nama host diberikan melalui DHCP. Firewall menggunakan nama host untuk menempatkan penghalang di antara berbagai kelompok. Karena ini semua dikontrol secara internal, itu bekerja dengan baik.
sumber
Anda bisa menggunakan pembungkus di sekitar iptables seperti shorewall untuk membuat aturan Anda lebih mudah dipertahankan.
sumber
Seperti yang lain telah mengatakan Anda tidak akan menggunakan nama yang dapat diselesaikan DNS dalam aturan iptables. Mereka tidak akurat, dikendalikan oleh pihak ketiga dan umumnya adalah Hal Buruk (tm). Saya juga menambahkan bahwa DNS Anda mungkin gagal atau mungkin tidak dapat dijangkau pada saat layanan iptables dimulai. Dalam hal ini aturan tidak akan ditambahkan sama sekali dan jenis masalah yang sama sekali baru dapat terjadi (seperti kehilangan akses ssh setelah restart).
Yang dapat Anda lakukan adalah:
ipset
s agar alamat dikelompokkan dan dipisahkan dari aturanJuga tidak ada yang mengatakan hal buruk tentang nama host yang tidak diselesaikan oleh DNS (mis. Ditentukan
hosts
. Anda dapat menggunakannya jika Anda benar-benar perlu.sumber
Saya pribadi menetapkan nama host ke ip secara manual di / etc / hosts dan kemudian menggunakannya di iptables.
Kamu dengan cara ini
sumber