GNU/Linux >> Belajar Linux >  >> Linux

Mengapa tidak memblokir ICMP?

Solusi 1:

ICMP jauh lebih dari "traceroute" dan "ping." Ini digunakan untuk umpan balik saat Anda menjalankan server DNS (port tidak dapat dijangkau) yang, di server DNS modern, sebenarnya dapat membantu memilih mesin lain untuk membuat kueri lebih cepat.

ICMP juga, seperti yang disebutkan di atas, digunakan untuk penemuan jalur MTU. Kemungkinan OS Anda menyetel "DF" (jangan terfragmentasi) pada paket TCP yang dikirimkannya. Ia mengharapkan untuk mendapatkan paket "fragmentasi diperlukan" ICMP kembali jika sesuatu di sepanjang jalur gagal menangani ukuran paket itu. Jika Anda memblokir semua ICMP, mesin Anda harus menggunakan mekanisme fallback lainnya, yang pada dasarnya menggunakan waktu tunggu untuk mendeteksi "lubang hitam" PMTU dan tidak akan pernah dioptimalkan dengan benar.

Selain itu, Anda harus bertanya pada diri sendiri mengapa Anda ingin memblokir ICMP. Apa yang secara 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 tidak sepenuhnya Anda pahami.

Untuk membuatnya lebih sulit untuk mempelajari hal ini, banyak buku firewall umum mengatakan "blokir ICMP" - jelas penulisnya tidak pernah membaca RFC atau harus menyelesaikan masalah seputar saran semacam itu. Merupakan saran yang buruk untuk memblokir semua ICMP.

Sekarang, membatasi laju juga bisa merugikan. Jika mesin Anda sibuk, atau bahkan jika tidak, Anda bisa mendapatkan jumlah lalu lintas ICMP yang bagus. Server web saya mungkin mendapatkan sekitar 10-100 paket ICMP per menit, sebagian besar adalah penemuan PMTU. Bahkan jika seseorang memilih untuk menyerang server saya dengan paket ICMP dari beberapa jenis, itu 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 disalahpahami.

Solusi 2:

ICMP digunakan untuk berbagai fungsi diagnostik (misalnya ping, traceroute) dan kontrol jaringan (misalnya penemuan PMTU). Pemblokiran ICMP tanpa pandang bulu menyebabkan orang lain sakit maag, dan kecuali Anda tahu persis apa yang Anda lakukan, sebaiknya biarkan saja.

Solusi 3:

Saya tidak pernah mengerti mengapa orang mencatat ICMP, seperti yang dikatakan di atas, itu hanya menyebabkan sakit kepala bagi diri sendiri dan orang lain. Anda dapat menentukan apakah sebuah host aktif dengan cukup mudah dan selama itu cukup terbatas untuk tidak digunakan sebagai DOS maka saya tidak pernah mendengar alasan kuat untuk memblokirnya. (Jika seseorang dapat memberikan alasan, silakan posting)

Solusi 4:

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 yang setara dengan windows), traceroute (tracert), yang menggunakan icmp. menjatuhkan mereka sepenuhnya adalah tindakan bodoh. Ini adalah cara yang baik untuk memeriksa apakah instans Anda aktif meskipun Anda tidak dapat melakukan telnet di port mana pun.

--limit 10/second
ke aturan icmp Anda mungkin merupakan batas yang layak mengingat seberapa banyak komputer sebenarnya dapat menangani.

Solusi 5:

Inilah sudut pandang alternatif, dalam semangat yang disarankan oleh teori keamanan. Poster lain benar bahwa praktik keamanan sering kali terlalu bersemangat, tetapi sebagian besar memiliki dasar yang baik.

Teori keamanan umumnya adalah Anda hanya mengaktifkan APA YANG ANDA BUTUHKAN. Hal lain (yang mungkin berguna - misalnya, tanggapan ping) dapat digunakan oleh penyerang untuk menjangkau sistem Anda, atau mungkin sebagai vektor serangan untuk beberapa kerentanan yang belum ditemukan.

Jadi, melihat jenis pesan ICMP, apa yang Anda BUTUHKAN untuk pengoperasian sistem yang normal dan benar?

  • echo reply (ping) - tidak terlalu banyak
  • tujuan tidak dapat dijangkau - banyak informasi berguna di sini. Nonaktifkan ini dan Anda akan memutuskan akses ke server Anda untuk beberapa klien.
  • quench sumber - tidak digunakan lagi sejak 1995, dan tampaknya dihapus dari implementasi host sejak (paling lambat) 2005. tools.ietf.org/html/rfc6633#section-1.
  • pengalihan - hampir pasti tidak
  • periklanan &permohonan router - tidak perlu jika Anda mengonfigurasi rute Anda secara statis, dan dapat digunakan untuk DoS. Saya akan memblokirnya kecuali Anda tahu Anda membutuhkannya, dan jika Anda membutuhkannya, mungkin membuat kode aturan untuk menerima info hanya dari kemungkinan router yang dikenal.
  • ttl terlampaui - bukan hanya untuk traceroute, memberi tahu Anda bahwa lalu lintas Anda tidak mencapai tujuannya

...dan seterusnya. Jika Anda benar-benar ingin memahami ini, pelajari tentang berbagai jenis ICMP dan kegunaannya. Artikel wikipedia adalah titik awal yang baik.

Dalam praktiknya, yang paling jelek adalah redirect; jika Anda hanya ingin melakukan sesuatu yang cepat dan berguna, blokir itu dan izinkan sisanya.

Saya akan menambahkan bahwa pelacakan koneksi IPtables akan memungkinkan pengembalian paket ICMP yang sesuai untuk koneksi aktif. Jadi jika Anda menjalankan conntrack, Anda seharusnya dapat memblokir sebagian besar ICMP yang masuk, selama Anda menerima paket TERKAIT (sebelum Anda memblokir ICMP di kumpulan aturan Anda).


Linux
  1. Mengapa Server Memblokir IP Saya?

  2. Mengapa Cd Bukan Program?

  3. Linux – Mengapa Kami Menggunakan Su – Dan Bukan Hanya Su?

  1. Mengapa Nullglob Tidak Default?

  2. Linux – Mengapa Setuid Tidak Bekerja??

  3. Mengapa `keluar &` Tidak Berfungsi?

  1. Mengapa pemetaan MAP_GROWSDOWN tidak tumbuh?

  2. mengapa sftp rmdir tidak berfungsi?

  3. Mengapa polling tidak diganti dengan epoll?