Membuat iptables lebih mudah dipelihara

13

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 iptablesmengatakan:

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?

David Kennedy
sumber
Anda akan mendapatkan jawaban yang lebih baik di security.stackexchange.com
Jim B
Anda mungkin benar bahwa pertanyaan ini adalah milik situs itu, tetapi jika Anda memiliki masalah dengan jawaban yang diterima tolong jelaskan alasannya.
David Kennedy
Jika Anda ingin tahu tentang mengunci jaringan Anda dan bagaimana melakukannya, tanyakan keamanan, jika Anda ingin menggunakan iptables (yang bertentangan dengan menggunakan IPtables) maka inilah tempatnya.
Jim B

Jawaban:

27
  • Nama DNS diselesaikan ketika aturan ditambahkan, tidak, ketika paket diperiksa. Ini melanggar harapan kebanyakan orang.
    • Aturan tidak diperbarui untuk mencerminkan hasil DNS yang berubah. Itu diselesaikan ketika ditambahkan dan hanya itu. Anda perlu memuat ulang aturan secara berkala, atau beberapa situs mungkin melanggar.
  • Ada sedikit masalah keamanan karena pada dasarnya Anda mendelegasikan kontrol aturan firewall Anda ke entitas eksternal.
    • Bagaimana jika server DNS orang tua Anda dikompromikan dan mengembalikan data palsu.

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).

Sakit kepala
sumber
1) Saya melihat bagaimana ini bisa menjadi masalah - google.com bisa menyelesaikan ke 1.2.3.4 hari ini tapi besok alamat itu tidak valid. Apakah dengan hanya me-restart firewall dapat mengatasi hal ini? 2) Apakah masih merupakan masalah keamanan jika server DNS terkenal - seperti DNS Google atau OpenDNS?
David Kennedy
Saya menandai ini sebagai jawaban karena itu menjelaskan mengapa saya tidak boleh menggunakan nama host dalam aturan iptables dan memberi saya tindakan untuk menyederhanakan firewall saya.
David Kennedy
Saya ingin menambahkan dukungan saya untuk Squid. Saya menerapkan Squid untuk kantor saya, dan sekali mengaturnya sangat mudah untuk memelihara host yang masuk daftar putih (meskipun saya menggunakannya untuk daftar hitam). Sepertinya Anda memiliki usaha monumental di tangan Anda; Saya bahkan tidak tahu harus mulai dari mana memasukkan daftar putih Google. www.google.com memutuskan hanya 5 IP, yang tidak mengatakan apa-apa untuk ssl.gstatic.com, dan semua host lain yang terlibat dalam otentikasi, G +, dll. yang mungkin masing-masing menyelesaikan beberapa IP.
s.co.tt
Monumental adalah cara yang baik untuk menggambarkannya. Tapi saya hanya menggunakan Google sebagai contoh. Garis dasar dasar dari firwall saya seperti ini: jika tujuan paket masuk daftar putih, terimalah. Kalau tidak, kirimkan melalui server proxy.
David Kennedy
Ada juga masalah sistem yang menggunakan DNS untuk load balancing. Anda mungkin tidak mendapatkan hasil yang sama jika mencari domain tersebut dua kali berturut-turut, sehingga pencarian tunggal bahkan tidak akan memberi Anda daftar lengkap alamat IP yang mungkin bisa diselesaikan oleh domain.
cdhowie
9

Jika Anda menggunakan nama host di firewall Anda, firewall Anda sekarang tergantung pada DNS. Ini membuka firewall ke sejumlah masalah:

  • Pencarian DNS di bawah volume tinggi dapat menyebabkan latensi.
  • Perubahan DNS tidak menyebar secara instan. Jadi firewall Anda bisa menggunakan IP cache.
  • DNS dapat dipalsukan, dibajak, diretas.
  • DNS dapat gagal - artinya firewall Anda gagal.
  • Aturan firewall Anda sekarang dikendalikan oleh pihak ke-3.

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.

jeffatrackaid
sumber
2
Ini adalah jawaban yang bagus tetapi tidak ada bagian yang akan membantu saya menyederhanakan firewall.
David Kennedy
3

Anda bisa menggunakan pembungkus di sekitar iptables seperti shorewall untuk membuat aturan Anda lebih mudah dipertahankan.

Jure1873
sumber
Ini adalah ide yang bagus tetapi Anda tidak memberi tahu saya mengapa saya tidak boleh menggunakan nama host dalam aturan iptables.
David Kennedy
Saya tidak tahu banyak tentang Shorewall, tapi saya mendapat kesan bahwa davidkennedy85 masih perlu mempertahankan daftar setiap alamat IP dari layanan yang ingin ia izinkan dalam konfigurasi Shorewall. Ini mungkin membuat mengelola netfilter [& etc] sedikit lebih mudah, tetapi tidak akan menyelesaikan masalah intinya, yang merupakan daftar besar IP.
s.co.tt
1

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:

  1. Gunakan rantai kustom untuk secara logis memisahkan aturan
  2. Gunakan ipsets agar alamat dikelompokkan dan dipisahkan dari aturan
  3. Tambahkan komentar ke aturan

Juga 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.

skarap
sumber
1

Saya pribadi menetapkan nama host ke ip secara manual di / etc / hosts dan kemudian menggunakannya di iptables.

Kamu dengan cara ini

  1. Jangan membongkar aturan Firewall Anda ke entitas eksternal
  2. Memiliki iptables yang mudah dirawat
T4cC0re
sumber