Saya menyadari ada pendapat yang berbeda, tetapi satu sikap utama orang yang benar-benar tahu tentang jaringan dan keamanan adalah bahwa sebagian besar aturan iptables/sysctl ini mubazir, jika tidak merusak Anda dan jaringan. Beberapa akan secara agresif mengkritik Anda karena melanggar perilaku standar tanpa alasan. Beberapa contoh:
-
Perilaku standar TCP/IP adalah MENOLAK sehingga peer mendapat beberapa petunjuk tentang apa yang sedang terjadi. Mungkin seseorang salah mengetik URL atau admin Anda menghitung host atau seseorang ingin terhubung ke server game Anda tetapi mengetik porta yang salah. Dengan DROP, mereka hanya mendapatkan waktu tunggu yang tidak jelas dan mengganggu.
-
Tidak perlu menjatuhkan paket yang tidak valid atau salah bentuk, semua serangan ini berumur satu dekade. Pengembang kernel Linux jauh lebih mutakhir daripada Anda mengenai jenis paket mana yang valid dan mana yang tidak. "Bagaimana dengan kekurangan di masa depan", beberapa orang mungkin berpendapat. Nah, bagaimana Anda tahu bahwa kelemahan di masa depan akan ada di penangan TCP dan bukan di parser TCP iptables?
-
Sebagian besar pengaturan sysctl adalah default. Jika tidak, biasanya ada alasannya. Misalnya, mengapa menonaktifkan pengiriman pengalihan? Saya merasa sangat berguna untuk diberi tahu oleh rekan bahwa perutean saya buruk, bahkan jika saya tidak akan pernah bereaksi("accept_redirects", default=0) secara otomatis.
-
Dengan log_martians Anda dan aturan logging lainnya, saya harap Anda juga memiliki kuota di /var/log, atau akan sangat menyenangkan mengisi disk Anda dari jarak jauh, biasanya mematikan layanan/aplikasi Anda. Selain itu, Anda harus menggunakan batas tarif untuk logging atau seseorang mungkin mengisi kuota untuk mencegah Anda melihat upaya bruteforce kata sandi SSH di auth.log, atau hal lainnya. Apakah Anda benar-benar membaca log tersebut di desktop? Saya merekomendasikan logcheck.
-
Anda tampaknya memblokir ICMP. Terlepas dari masalah DHCP yang disebutkan, ini juga mencegah penemuan PMTU. Tanpa PMTUD, Anda akan mendapatkan perilaku aneh saat menggunakan sistem di tempat dengan koneksi DSL atau pengaturan jaringan lainnya. Beberapa paket hanya akan dijatuhkan dan tidak ada yang memberi tahu Anda alasannya.
-
Memfilter paket keluar agak tidak jelas. Apakah kamu tidak percaya diri? Anda umumnya tidak boleh menjalankan program apa pun yang tidak dapat Anda percayai. Sistem operasi komoditas sebagian besar tidak mampu mengisolasi program ini dari penyadapan atau bahkan memanipulasi data program lain (mis., serangan waktu cache)
-
Anda memerlukan paket BARU untuk memiliki SYN. Ini akan terputus jika koneksi TCP dilanjutkan setelah status masing-masing di iptables sudah habis. Tidak yakin apa waktu tunggu defaultnya, tetapi beberapa orang netfilter memperingatkannya.
Jadi, kapan desktop harus memiliki firewall?
-
Jika ada serangan khusus dalam berita yang rentan terhadap OS atau server Anda saat ini, dan salah satu perbaikan cepat yang disarankan adalah aturan firewall.
-
Anda harus menjalankan layanan tertentu yang tidak mengizinkan konfigurasi aman. Sebagian besar melakukannya, dan sisanya sebaiknya diganti dengan alternatif yang aman.
-
Anda memiliki jaringan yang lebih kompleks dengan beberapa VM dan/atau antarmuka di desktop Anda.
Alat pertama dan terpenting untuk keamanan jaringan Anda adalah pembaruan sistem. Kedua, ada netstat dan nmap, yang harus Anda gunakan untuk menemukan dan mengonfirmasi layanan apa yang Anda jalankan. Kemudian nonaktifkan saja yang tidak Anda perlukan atau batasi ke 127.0.0.1.
Bonus jika Anda membaca sejauh ini:Paket adalah ESTABLISHED,RELATED atau BARU, semua yang Anda jatuhkan. Anda juga menjatuhkan BARU kecuali hanya SYN yang disetel. Karena ESTABLISHED,RELATED tampaknya memeriksa flag, ini membuat semua aturan --tcp-flags dan juga aturan -f menjadi mubazir. Sama untuk OUTPUT, tetapi karena tidak ada paket yang DITERIMA untuk OUTPUT, mungkin tidak masalah.
Saya akan berhati-hati dalam membuat bagian ini dari kumpulan aturan yang sama untuk perangkat di dalam jaringan tepercaya dan yang ada di DMZ. Dengan menggunakan aturan yang telah Anda tentukan di sana, Anda tidak akan menanggapi permintaan server DHCP (ICMP echo) jika IP Anda sedang digunakan. Ini dapat menyebabkan situasi alamat duplikat.
Saya akan membuat dua rangkaian aturan yang berbeda untuk diterapkan pada setiap skenario, sesuatu seperti yang tercantum di atas adalah garis dasar yang baik untuk mesin DMZ, tetapi menciptakan beberapa tantangan pada LAN biasa.
Juga saya pasti akan merekomendasikan menambahkan logging ke Mars, drop outbound, koneksi inbound drop dll. Ini bisa sangat penting untuk pemecahan masalah dan bisa menjadi data yang lebih berguna untuk dimakan SIEM Anda.
Untuk PC klien, yang terhubung langsung ke internet melalui ppp, aturan berikut adalah awal yang baik:
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
iptables -A INPUT -p udp -j REJECT
ip6tables -A INPUT -i lo -j ACCEPT
ip6tables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
ip6tables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
ip6tables -A INPUT -j REJECT
- Itu memungkinkan semua yang ada di antarmuka lokal internal.
- Ini memungkinkan paket apa pun yang merupakan jawaban untuk paket yang Anda kirim. Ini termasuk paket dalam koneksi TCP, jawaban untuk paket UDP seperti kueri DNS kecil. Untuk protokol FTP tidak terenkripsi gaya lama, ini termasuk koneksi data, dengan asumsi ip_conntrack_ftp dimuat
- Tolak semua upaya untuk membuka koneksi tcp dari luar
- Tolak semua paket udp awal (bukan jawaban).
Atau Anda dapat menggunakan -j DROP dalam dua aturan terakhir. Untuk diskusi tentang topik ini, lihat Tolak paket IP dengan kesalahan ICMP, atau jatuhkan saja?