Jawaban:
Sebagai aturan umum, gunakan TOLAKAN ketika Anda ingin ujung lainnya mengetahui port tidak dapat dijangkau - gunakan DROP untuk koneksi ke host yang tidak Anda inginkan dilihat orang.
Biasanya, semua aturan untuk koneksi di dalam LAN Anda harus menggunakan TOLAK. Untuk Internet, Dengan pengecualian ident pada server tertentu, koneksi dari Internet biasanya DROPPED.
Menggunakan DROP membuat koneksi tampak ke alamat IP yang tidak dihuni. Pemindai dapat memilih untuk tidak melanjutkan memindai alamat yang tampak kosong. Mengingat bahwa NAT dapat digunakan untuk mengalihkan koneksi pada firewall, keberadaan layanan yang terkenal tidak selalu menunjukkan keberadaan server pada alamat.
Ident harus dilewatkan atau ditolak pada alamat apa pun yang menyediakan layanan SMTP. Namun, penggunaan Ident look-up oleh SMTP serve sudah tidak digunakan lagi. Ada protokol obrolan yang juga mengandalkan layanan identitas yang berfungsi.
EDIT: Saat menggunakan aturan DROP: - Paket UDP akan dihapus dan perilaku akan sama dengan menghubungkan ke port yang tidak disembunyikan tanpa layanan. - Paket TCP akan mengembalikan ACK / RST yang merupakan respons yang sama yang akan ditanggapi oleh port terbuka tanpa layanan. Beberapa router akan merespons dengan dan ACK / RST atas nama server yang sedang down.
Saat menggunakan aturan TOLAK, paket ICMP dikirim yang mengindikasikan port tidak tersedia.
Perbedaannya adalah bahwa target REJECT mengirimkan respons tolak ke sumber, sementara target DROP tidak mengirim apa pun.
Ini dapat bermanfaat misalnya untuk layanan ident. Jika Anda menggunakan TOLAK maka klien tidak perlu menunggu waktu habis.
Lebih lanjut tentang ini: http://www.linuxtopia.org/Linux_Firewall_iptables/x4550.html
Biasanya, Anda ingin mengabaikan probe dari penyerang ke port tertentu, yang saya maksudkan Anda tidak ingin mengirim kembali 'koneksi ditolak'. 'Sambungan ditolak' berarti: 'ada server di sini', dan mungkin memberikan lebih banyak informasi, sedangkan menjatuhkan paket tidak memberikan petunjuk tentang versi perangkat lunak, kemungkinan kerentanan atau bahkan fakta bahwa server mendengarkan IP Anda.
Di atas adalah salah satu alasan utama untuk menggunakan DROP bukan TOLAK.
Saya melihat banyak jawaban yang saling bertentangan di sini dan mengingat ini adalah artikel pertama di Google dengan kata kunci yang tepat; ini penjelasan yang benar.
Sederhana:
DROP tidak melakukan apa-apa dengan paket. Itu tidak diteruskan ke tuan rumah, itu tidak dijawab. Halaman manual dari IPtables mengatakan ia menjatuhkan paket ke lantai, artinya ia tidak melakukan apa-apa dengan paket tersebut.
TOLAKAN berbeda dengan DROP yang mengirim paket kembali, tetapi jawabannya adalah seolah-olah server terletak pada IP, tetapi tidak memiliki port dalam keadaan mendengarkan. IPtables akan mengirim RST / ACK jika ada TCP atau dengan UDP port tujuan ICMP tidak dapat dijangkau.
Jika Anda mencoba untuk menyembunyikan keberadaan mesin Anda sepenuhnya, -j DROP
itu tepat. Misalnya, Anda dapat menggunakan ini untuk menerapkan daftar hitam.
Jika Anda mencoba menyembunyikan fakta bahwa port terbuka, Anda harus meniru perilaku yang akan terjadi jika port tidak terbuka:
-p tcp -j REJECT --reject-with tcp-reset
-p udp -j REJECT --reject-with icmp-port-unreachable
Jika pemindai port melihat bahwa beberapa port menjatuhkan paket sementara sebagian besar menolaknya, itu dapat mengasumsikan paket yang dijatuhkan berada pada port yang terbuka tapi tersembunyi.
Meskipun banyak jawaban yang benar, hanya dua sen saya:
Berikut ini adalah PoC FW.IDS-DROP-vs-REJECT saya tentang masalah ini sehubungan dengan aturan untuk sistem larangan (firewall, IDS, dll).
Segera:
DROP
dapat digunakan untuk penyusup residen, jika melarang semua port (jadi sepertinya server turun di sisi penyusup)REJECT --reject-with tcp-reset
adalah pilihan terbaik untuk pelarangan multi-port, karena tampaknya berperilaku sebagai port tertutup nyataDROP
dan REJECT
(tanpa tcp-reset
) akan memberi "sinyal" kepada penyusup bahwa ada sesuatu yang menghalangi (sehingga dapat merangsang dia untuk melanjutkan "serangan" dengan harapan dapat menyediakan data yang diperlukan) dalam beberapa kasus)Ya, menggunakan DROP tidak ada gunanya. Gunakan TOLAKAN.
Bahkan ketika aturan mengatakan "DROP" sistem masih membalas ke SYN yang masuk dengan TCP RST / ACK - yang merupakan perilaku default untuk port tanpa layanan yang berjalan. (tcpdump et al tidak mencatat ini.)
Jika suatu layanan berjalan, SYN bertemu dengan TCP SYN / ACK.
Karena DROP tidak merespons seperti biasa dengan TCP SYN / ACK, tetapi dengan RST / ACK sebagai gantinya, aturan DROP Anda akan mengiklankan firewall Anda dan port-scanner akan tahu bahwa Anda sedang melakukan firewall sesuatu dan mungkin terus memalu Anda dengan harapan menangkap firewall Anda.
Ini sekarang nmap dapat melaporkan "difilter" bukannya "ditutup" misalnya:
$ nmap localhost
Starting Nmap 6.40 ( http://nmap.org ) at 2018-03-14 00:21 SAST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000060s latency).
Not shown: 986 closed ports
PORT STATE SERVICE
21/tcp open ftp
53/tcp open domain
80/tcp open http
Nmap done: 1 IP address (1 host up) scanned in 1.60 seconds
$ iptables -I INPUT -p tcp --dport 1111 -j DROP
$ nmap localhost
Starting Nmap 6.40 ( http://nmap.org ) at 2018-03-14 00:21 SAST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000060s latency).
Not shown: 986 closed ports
PORT STATE SERVICE
21/tcp open ftp
53/tcp open domain
80/tcp open http
1111/tcp filtered lmsocialserver
Nmap done: 1 IP address (1 host up) scanned in 1.60 seconds
$ iptables -D INPUT 1
Dengan demikian, satu-satunya pengaturan firewall "tidak terlihat" adalah di mana perangkat khusus duduk di antara perangkat Anda dan hanya secara selangkah memajukan porta.
Jika Anda benar-benar ingin mengacaukan pemindai dasar, Anda bisa TARPIT koneksi tcp, yang mengatur TCP Window ke 0 sehingga tidak ada data yang dapat ditransfer setelah koneksi dibuka, mengabaikan permintaan untuk menutup koneksi, artinya pemindai harus menunggu untuk waktu habis koneksi terjadi, jika ingin memastikan. Tapi itu sepele bagi penyerang untuk mendeteksi ini dan membuat waktu tunggu sangat singkat.
Semua hal dipertimbangkan, Anda mungkin lebih baik menggunakan REJECT - atau meletakkan perangkat port forwarding khusus antara server Anda dan internet.
Atau hanya menjalankan layanan di mesin Anda yang menghadapi internet yang tidak memerlukan firewall.
Umumnya REJECT adalah yang terbaik untuk server web, karena layanan apa pun yang mencoba mengaksesnya (mungkin lebih sering daripada tidak, Anda) akan dengan cepat mendapatkan respons dan pengguna atau layanan lain tidak akan terus menunggu bertanya-tanya apakah ada pemadaman jaringan.
DROP
akan mengeluarkan SYN/ACK
? Saya tidak pernah melihat ini di komputer saya.
DROP
mengembalikan a SYN/ACK
. Saya juga belum pernah melihat perilaku ini dalam versi apa pun iptables
. Jika Anda memiliki sumber yang mendukung klaim Anda, akan sangat berguna untuk melihatnya; tentu saja, paket dump yang baru saja saya lakukan tidak mendukung klaim Anda.