Yanıtlar:
Genel bir kural olarak, diğer ucun bağlantı noktasının erişilemez olduğunu bilmesini istiyorsanız REJECT kullanın, insanların görmesini istemediğiniz ana bilgisayarlara bağlantı için DROP kullanın.
Genellikle, LAN’ınızdaki bağlantılar için tüm kurallar REJECT’i kullanmalıdır. İnternet için, Bazı sunuculardaki kimlikler haricinde, İnternet bağlantısı genellikle DROPPED'dir.
DROP kullanmak, bağlantının boş bir IP adresine görünmesini sağlar. Tarayıcılar boş görünen adresleri taramaya devam etmemeyi seçebilir. NAT'ın güvenlik duvarı üzerindeki bir bağlantıyı yeniden yönlendirmek için kullanılabileceği göz önüne alındığında, iyi bilinen bir hizmetin varlığı mutlaka bir adresin bir sunucunun varlığını göstermez.
Kimlik, SMTP hizmeti veren herhangi bir adrese iletilmeli veya reddedilmelidir. Bununla birlikte, SMTP servislerinin Ident-up'ların kullanımı kullanım dışı kalmıştır. Çalışan bir kimlik servisine de bağlı olan sohbet protokolleri var.
DÜZENLEME: DROP kurallarını kullanırken: - UDP paketleri düşürülecek ve davranış, hizmetsiz bir güvenlik duvarı portuna bağlanmakla aynı olacaktır. - TCP paketleri, üzerinde servisi olmayan açık bir portun cevap vereceği cevapla aynı ACK / RST'yi döndürür. Bazı yönlendiriciler kapalı olan sunucular adına ve ACK / RST ile yanıt verir.
REJECT kurallarını kullanırken, portun uygun olmadığını belirten bir ICMP paketi gönderilir.
Aradaki fark, REJECT hedefinin kaynağa reddedilen bir yanıt göndermesi ve DROP hedefinin hiçbir şey göndermemesidir.
Bu, örneğin kimlik servisi için faydalı olabilir. REJECT kullanıyorsanız, istemcilerin zaman aşımını beklemelerine gerek kalmaz.
Bu konuda daha fazlası: http://www.linuxtopia.org/Linux_Firewall_iptables/x4550.html
Genellikle, saldırganlardan belirli bağlantı noktalarına giden probları yok saymak istersiniz , bu nedenle 'bağlantı reddedildi'yi geri göndermek istemezsiniz. 'Bağlantı reddedildi' şu anlama gelir: 'burada bir sunucu var' ve muhtemelen daha fazla bilgi verir, oysa bir paketin bırakılması yazılım sürümleri, olası güvenlik açıkları ve hatta bir sunucunun sizi dinlemesi gerçeği hakkında ipucu vermez.
Yukarıdakiler, REJECT yerine DROP kullanmanın temel nedenlerinden biridir.
Burada pek çok çelişkili cevap görüyorum ve bu Google’a doğru anahtar kelimelerle yazılmış ilk makale; İşte doğru açıklama.
Çok basit:
DROP paketle hiçbir şey yapmaz. Bir ana bilgisayara iletilmez, yanıtlanmaz. IPtables'ın manpage paketi yere düştüğünü, yani paket ile hiçbir şey yapmadığını söylüyor.
REJECT, DROP'a bir paket geri gönderdiği için farklıdır, ancak cevap IP'de bir sunucudaymış gibi fakat bağlantı noktası dinleme durumunda değil. IPtables, TCP veya UDP ile ulaşılamayan bir ICMP hedef portu durumunda bir RST / ACK gönderir.
Makinenizin varlığını tamamen gizlemeye çalışıyorsanız -j DROP
, uygundur. Örneğin, bunu bir kara liste uygulamak için kullanabilirsiniz.
Bir portun açık olduğu gerçeğini gizlemeye çalışıyorsanız, port açık değilse meydana gelebilecek davranışı taklit etmelisiniz:
-p tcp -j REJECT --reject-with tcp-reset
-p udp -j REJECT --reject-with icmp-port-unreachable
Bir port tarayıcı çoğu reddettiğinde birkaç portun paketleri bıraktığını görürse, bırakılan paketlerin açık fakat gizli portlarda olduğunu varsayabilir.
Pek çok doğru cevaba rağmen, sadece iki sentim:
İşte ban sistemi kurallarına (firewall, IDS, vb.) İlişkin olarak kısa bir PoC FW.IDS-DROP-vs-REJECT .
kısaca:
DROP
Tüm portları yasaklama durumunda (davetsiz misafir sunucu aşağıdaymış gibi gözüküyorsa) tekrarlayan davetsiz misafirler için kullanılabilirREJECT --reject-with tcp-reset
Çok portlu yasaklama için en iyi seçenek, çünkü gerçek bir kapalı liman gibi davranıyorDROP
ve REJECT
(olmadan tcp-reset
) davetsiz misafirlere engelleyici bir şey olduğu konusunda bir sinyal gönderir (böylece gerekli veri sağlama umuduyla "saldırıya" devam etmesi için onu teşvik edebilir) bir noktada)Evet, DROP kullanmak anlamsız. REJECT kullanın.
Kural "DROP" dese bile, sistem hala çalışan bir SYN'ye TCP RST / ACK ile cevap verir - bu, hizmet vermeyen bağlantı noktalarının varsayılan davranışıdır. (tcpdump ve diğerleri bunu kaydetmez.)
Bir servis çalışıyorsa, SYN, TCP SYN / ACK ile karşılanır.
DROP, bir TCP SYN / ACK ile normal olarak yanıt vermediğinden, bunun yerine bir RST / ACK ile yanıt vermediğinden, DROP kuralınız güvenlik duvarınızın reklamını yapar ve bağlantı noktası tarayıcıları güvenlik duvarını kurduğunuzu bilir ve sizi ümitlere sokmaya devam eder Güvenlik duvarını yıkma.
Bu şimdi nmap örneğin "kapalı" yerine "filtrelenmiş" olarak rapor edebilir:
$ 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
Bu nedenle, yalnızca "görünmez" güvenlik duvarı kurulumu, özel bir cihazın aygıtlarınız arasında oturduğu ve yalnızca seçici olarak bağlantı noktalarını ilettiği bir kurulumdur.
Temel tarayıcılarla gerçekten uğraşmak istiyorsanız, TCP Penceresini 0'a ayarlayan TARptcp bağlantılarını ayarlayabilirsiniz, böylece bağlantı açıldıktan sonra hiçbir veri aktarılmayabilir, bağlantıyı kapatma istekleri göz ardı edilerek tarayıcının beklemesi gerekir. emin olmak isterse bağlantı zaman aşımının gerçekleşmesi için. Ancak bir saldırganın bunu tespit etmesi ve zaman aşımını çok kısa tutması çok önemlidir.
Her şey düşünüldüğünde, muhtemelen sadece REJECT kullanarak ya da sunucunuz ve internet arasında özel bir port yönlendirme cihazı takıyor olmanız en iyi yoldur.
Ya da yalnızca İnternet'e bakan makinelerde güvenlik duvarı gerektirmeyen hizmetler çalıştırarak.
Genel olarak REJECT web sunucuları için en iyisidir, çünkü hangi hizmetin erişmeye çalıştığı her ne olursa olsun (muhtemelen sizden daha sık), hızlı bir şekilde yanıt alır ve kullanıcılar veya diğer hizmetler bir ağ kesintisi olup olmadığını merak etmeyi beklemez.
DROP
sorun çıkacak iddia için bir kaynak sağlayabilir misiniz SYN/ACK
? Bunu makinelerimde hiç görmedim.
DROP
geri dönen talebinizi desteklemez SYN/ACK
. Ben de bu davranışı hiçbir versiyonunda görmedim iptables
. Talebinizi destekleyen bir kaynağınız varsa, onu görmek çok yararlı olacaktır; şüphesiz, henüz yaptığım paket dökümleri talebinizi desteklemiyor.