Saya pikir saya hampir memiliki pengaturan iptables saya selesai pada sistem CentOS 5.3 saya. Ini skrip saya ...
# Establish a clean slate
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F # Flush all rules
iptables -X # Delete all chains
# Disable routing. Drop packets if they reach the end of the chain.
iptables -P FORWARD DROP
# Drop all packets with a bad state
iptables -A INPUT -m state --state INVALID -j DROP
# Accept any packets that have something to do with ones we've sent on outbound
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# Accept any packets coming or going on localhost (this can be very important)
iptables -A INPUT -i lo -j ACCEPT
# Accept ICMP
iptables -A INPUT -p icmp -j ACCEPT
# Allow ssh
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# Allow httpd
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# Allow SSL
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# Block all other traffic
iptables -A INPUT -j DROP
Untuk konteks, mesin ini adalah host aplikasi Web Virtual Private Server.
Dalam pertanyaan sebelumnya , Lee B mengatakan bahwa saya harus "mengunci ICMP sedikit lagi." Mengapa tidak diblokir saja? Apa yang akan terjadi jika saya melakukan itu (hal buruk apa yang akan terjadi)?
Jika saya tidak perlu memblokir ICMP, bagaimana saya bisa menguncinya lebih banyak?
Jawaban:
ICMP adalah cara, cara lebih dari "traceroute" dan "ping." Ini digunakan untuk umpan balik ketika Anda menjalankan server DNS (port unreachable) yang, dalam server DNS modern, sebenarnya dapat membantu memilih mesin yang berbeda untuk meminta lebih cepat.
ICMP juga, seperti yang disebutkan di atas, digunakan untuk jalur penemuan MTU. Kemungkinannya adalah OS Anda menetapkan "DF" (jangan fragmen) pada paket TCP yang dikirim. Diharapkan untuk mendapatkan paket ICMP "diperlukan fragmentasi" kembali jika sesuatu di sepanjang jalur gagal menangani ukuran paket tersebut. Jika Anda memblokir semua ICMP, mesin Anda harus menggunakan mekanisme fallback lainnya, yang pada dasarnya menggunakan batas waktu untuk mendeteksi "lubang hitam" PMTU dan tidak akan pernah mengoptimalkan dengan benar.
Selain itu, Anda harus bertanya pada diri sendiri mengapa Anda ingin memblokir ICMP. Apa yang khusus Anda coba cegah di sini? Cukup jelas Anda tidak mengerti untuk apa ICMP digunakan, yang agak umum. Saya akan sangat berhati-hati dalam memblokir sesuatu yang Anda tidak sepenuhnya mengerti.
Untuk membuatnya lebih sulit untuk belajar tentang ini, banyak buku firewall umum mengatakan "blok ICMP" - jelas penulis mereka tidak pernah membaca RFC atau harus menyelesaikan masalah seputar saran tersebut. Saran yang buruk untuk memblokir semua ICMP.
Sekarang, membatasi tingkat itu juga bisa menyakitkan. Jika mesin Anda sibuk, atau bahkan jika tidak, Anda bisa mendapatkan jumlah lalu lintas ICMP yang baik. Server web saya mungkin mendapat sekitar 10-100 paket ICMP per menit, yang sebagian besar adalah penemuan PMTU. Bahkan jika seseorang memilih untuk menyerang server saya dengan paket ICMP dari beberapa jenis, itu benar-benar bukan masalah besar. Jika mesin Anda menerima bahkan satu koneksi TCP (ssh, http, mail, dll) kemungkinan itu adalah vektor serangan yang lebih besar daripada ICMP yang salah paham.
sumber
redirect
jenisnya. Itulah satu - satunya tipe ICMP yang harus Anda pertimbangkan untuk diblokir.redirect
. Saya mengerti sekarang bahwa saya harus mempertimbangkannya, tetapi saya tidak lebih baik - masih tidak dapat memutuskan satu atau lain cara :) Apakah ini risiko atau tidak?ICMP digunakan untuk berbagai fungsi diagnostik (mis. Ping, traceroute) dan kontrol jaringan (mis. Penemuan PMTU). Pemblokiran ICMP yang membabi buta menyebabkan orang lain semua jenis mulas, dan kecuali Anda tahu persis apa yang Anda lakukan, Anda harus membiarkannya sendirian.
sumber
Saya tidak pernah mengerti mengapa orang menggunakan ICMP, seperti yang dikatakan di atas hanya menyebabkan sakit kepala untuk diri sendiri dan orang lain. Anda dapat menentukan apakah sebuah host cukup mudah dan selama itu cukup terbatas karena tidak dapat digunakan sebagai DOS maka saya belum pernah mendengar alasan kuat untuk memblokirnya. (Jika seseorang dapat mengajukan alasan, silakan kirim)
sumber
Anda bisa mencoba membatasi icmp dengan cara itu tidak dapat digunakan sebagai serangan DOS. tetapi ada terlalu banyak alat pemecahan masalah seperti ping, mtr (saya lupa setara dengan windows), traceroute (tracert), yang menggunakan icmp. menjatuhkan mereka sepenuhnya adalah hal yang bodoh. Ini adalah cara yang baik untuk memeriksa apakah instance Anda sudah naik meskipun Anda tidak dapat melakukan telnet pada port apa pun.
untuk aturan icmp Anda (s) mungkin batas yang layak diberikan seberapa banyak komputer benar-benar dapat menangani.sumber
Inilah sudut pandang alternatif, dalam semangat apa yang akan disarankan teori keamanan. Poster-poster lain benar bahwa praktik keamanan sering kali terlalu bersemangat, tetapi ada dasar yang bagus untuk itu.
Teori keamanan umumnya bahwa Anda hanya mengaktifkan APA YANG ANDA BUTUHKAN. Hal-hal lain (yang bisa berguna - misalnya, respons ping) dapat digunakan oleh penyerang untuk membatasi sistem Anda, atau mungkin sebagai vektor serangan untuk beberapa kerentanan yang belum ditemukan.
Jadi, melihat jenis pesan ICMP, apa yang Anda BUTUHKAN untuk operasi sistem Anda yang normal dan benar?
...dan seterusnya. Jika Anda benar-benar ingin memahami ini, pelajari tentang berbagai jenis ICMP dan untuk apa mereka. The Artikel wikipedia adalah titik awal yang baik.
Dalam praktiknya, yang benar-benar jelek adalah pengalihan; jika Anda ingin melakukan sesuatu yang cepat dan berguna, blokir itu dan biarkan sisanya.
Saya akan menambahkan bahwa pelacakan koneksi IPtables akan memungkinkan paket ICMP kembali yang sesuai untuk koneksi aktif. Jadi, jika Anda menjalankan conntrack, Anda harus dapat memblokir sebagian besar ICMP inbound, selama Anda menerima paket-paket TERKAIT (sebelum Anda memblokir ICMP dalam aturan Anda).
sumber
Ini adalah alat diagnostik yang berguna untuk memecahkan masalah konektivitas jaringan.
Ini juga memungkinkan Anda untuk menggunakan koneksi di tempat lain di internet yang menggunakan MTU lebih kecil daripada yang ada di jaringan Anda. Jika Anda mencoba mengirim paket ke suatu tempat yang terlalu besar dan tidak dapat difragmentasi, perangkat menjatuhkan paket dan mengirimkan paket ICMP fragmentasi yang diperlukan kembali ke pengirim. Jika Anda menjatuhkan semua paket ICMP, Anda kehilangan itu dan hal-hal aneh terjadi di jaringan Anda.
Pertanyaan sebenarnya adalah "mengapa memblokir ICMP?" Apa yang kamu dapat? Hanya memiliki aturan penyaringan yang baik di perbatasan Anda dan di depan aset Anda yang berharga.
sumber
ping adalah alat diagnostik yang bagus, Anda akan benar-benar berharap Anda memilikinya suatu hari nanti. Saya menggunakan ini:
Anda mungkin juga ingin mencekiknya.
sumber
Saat ini bahkan membatasi paket ICMP di sisi server dapat membuat sakit kepala pada serangan DDoS. Serangan sebagian besar dilakukan dengan mengirimkan permintaan ICMP jendela besar ke satu server dan jika server berusaha merespons masing-masing, coba tebak apa yang terjadi?
Hal utama yang kami miliki adalah server tablespeak yang mendapatkan paket buruk setiap hari, ada beberapa hari dalam dua bulan kami memiliki beberapa "freetime". Apa yang kami lakukan sepenuhnya dinonaktifkan / diblokir respons ICMP, kami tidak memiliki server DNS di server, tidak ada server NTP, tidak ada server mail, tidak ada server FTP, hanya dua apache dan timpeak. semua port yang tidak dibutuhkan untuk layanan mati. Kami berencana untuk memblokir bahkan ssh dan membiarkan hanya dua port terbuka. Hari ini ada 21r (!) Larangan permanen.
Situasinya adalah bahwa penyerang menggunakan sebagian besar penerobosan ICMP dan beberapa garis log yang sangat menarik dibahas dengan admin server dan mereka mengatakan bahwa mereka memiliki permintaan ICMP server, sehingga penyerang menggunakannya untuk membuat terowongan serangan melalui mereka dan menyerang kami. Kedengarannya aneh tapi itu benar.
Jika Anda tidak memerlukan diagnosa server Anda dan jika Anda dapat sepenuhnya memblokir permintaan atau memfilternya untuk menjatuhkan jendela besar misalnya, maka lakukanlah. Saya juga menyarankan Anda untuk sepenuhnya memblokir: Cina, Korea, Thailand, Turki karena sebagian besar Alamat IP berasal dari sana. Saya memiliki seluruh daftar inetnum negara-negara ini tetapi hampir setiap hari datang beberapa yang baru dari sana.
Saya katakan apa yang saya lakukan, jika Anda tidak setuju - jangan lakukan itu. Sederhana seperti itu. Semoga berhasil
sumber
Minimal, Anda harus mengizinkan untuk melewati icmp tipe 3 (tujuan tidak dapat dijangkau), 4 (sumber padam) dan 11 (waktu terlampaui). Semua tipe ini digunakan untuk menangani masalah jaringan dan tidak boleh disaring.
(Jenis quench sumber saat ini sudah usang, tetapi tidak ada salahnya untuk membiarkan ini terbuka)
sumber
Saya mengizinkan lalu lintas ICMP dari intranet lokal, memblokirnya dari Internet. Dengan cara itu server saya semuanya tidak terlihat online (hanya merespons pada port SSH non standar).
Ini memasukkannya setelah loopback standar, ditetapkan, daftar putih LAN, daftar putih penyedia VOIP, dan ACCE port SSH port. Saya mengizinkan lalu lintas yang saya inginkan, dan kemudian melakukan yang terbaik untuk menjaga server tidak terlihat oleh seluruh dunia.
sumber