Soru İptables kullanırken DROP vs REJECT


Sahip olmak istemem için herhangi bir sebep var mı

iptables -A INPUT -j REJECT

yerine

iptables -A INPUT -j DROP

81
2017-07-04 09:49


Menşei




Cevaplar:


Genel kural olarak, diğer ucun bağlantı noktasına erişilemediğini bilmek istediğinizde REJECT kullanın. 'İnsanların görmesini istemediğiniz ana bilgisayarlara bağlantılar için DROP'u kullanın.

Genellikle, LAN'ınızdaki bağlantılar için tüm kurallar REJECT kullanmalıdır. İnternet için, belirli sunucularda kimlik dışında, Internet'ten gelen bağlantılar genellikle DAMLADIR.

DROP kullanımı bağlantıyı boş bir IP adresine yapıyor gibi görünüyor. Tarayıcılar, kullanılmayan görünen tarama adreslerine devam etmemeyi seçebilirler. NAT'ın güvenlik duvarındaki bir bağlantıyı yeniden yönlendirmek için kullanılabileceği düşünüldüğünde, iyi bilinen bir hizmetin varlığı, mutlaka bir adresin bir sunucuda varlığını belirtmez.

Kimlik, SMTP hizmeti veren herhangi bir adreste geçirilmeli veya reddedilmelidir. Bununla birlikte, SMTP hizmetlerinin kimlik aramalarının kullanımı kullanım dışı bırakılmıştır. Aynı zamanda çalışan bir kimlik hizmetine de dayanan sohbet protokolleri vardır.

DÜZENLEME: DROP kurallarını kullanırken:  - UDP paketleri düşürülecek ve davranış, servis verilmeden korunmayan bir bağlantı noktasına bağlanacak.  - TCP paketleri bir ACK / RST döndürecek ve bu da yanıtsız bir açık portun cevap vereceği yanıtla aynıdır. Bazı yönlendiriciler, aşağı olan sunucular adına ACK / RST ile yanıt verecektir.

REJECT kuralları kullanılırken, portun kullanılamayacağını belirten bir ICMP paketi gönderilir.


73
2017-07-04 16:40



Bu doğru değil. Kural "DROP" yazdığında bile sistem, gelen paketin açık olduğu gibi bir TCP SYN / ACK ile yanıt verecektir. Bir paketi gerçekten düşürmek için, sistemin bir güvenlik duvarı kuralı olmadığı bir TCP RST / ACK ile yanıtlaması gerekir. Bu nedenle, en iyi güvenlik duvarı kurulumu yalnızca seçilen bağlantı noktalarının iletildiği yerdir. DROP kuralınız, güvenlik duvarınızın reklamını yapacak ve port tarayıcıları, bir şeyleri güvenlik duvarına aldığınızı ve güvenlik duvarınızı yakalama umuduyla sizi vurmaya devam edeceğinizi bilecek. - Dagelf
@Dagelf Düzenleme bölümüne bakın. RST / ACK, tarayıcılara herhangi bir şeyi güvenlik duvarı yaptığınızı göstermez. Bazı bilgisayar korsanları bu yanıttan sonra araştırmaya devam edebilirken, bu, hizmetlerinizi güvenlik duvarı yanıtı olarak bilmeme temeline dayanmalıdır. Kesinlikle deneyimlediğim taramaların sayısını ve uzunluğunu düşürdüm. - BillThor
Benim amacım, bir şeyleri güvenlik duvarı yapıyor olsanız da dışarıdan algılanabilir, çünkü TCP yığınının, DROP yaparken ilk etapta çalışan bir servisiniz olmadığı zaman farklı davrandığından farklıdır! - Dagelf
Farkı esas alan ve sonuç olarak portlarınızı izleyen botnetlerin olması gerçeğini değiştirmez. - Dagelf
@DAG kendini DROP'un bir cevap gönderdiği bilgiyi nereden alıyor? Bu büyük bir haber ve gözlemlediğim ve söylendiği her şeye karşı koşuyor. Bu davranışı açıklayan belgelerin bağlantısı var mı? - Score_Under


Fark, REJECT hedefinin kaynağa reddetme yanıtı gönderirken DROP hedefi hiçbir şey göndermemesidir.

Bu yararlı olabilir, örn. kimlik servisi için. REJECT kullanıyorsanız, istemcilerin zaman aşımını beklemesi gerekmez.

Bu konuda daha fazlası: http://www.linuxtopia.org/Linux_Firewall_iptables/x4550.html


25
2017-07-04 09:59



DROP hedefi hiçbir şey göndermiyor. Kabul edilen cevap hakkındaki yorumumu kontrol edin ve ayrıntılarla ilgileniyorsanız konuyu araştırmaya başlayın! - Dagelf


Genellikle, sen istiyorsun aldırmamak saldırganlardan belirli portlara sondalar, demek istediğim 'geri çevrilen bağlantı' göndermek istemiyorsunuz. 'Bağlantı reddedildi' şu anlama gelir: 'burada bir sunucu var' ve muhtemelen daha fazla bilgi verirken, bir paketin düşürülmesi yazılım sürümleri, olası güvenlik açıkları ve bir sunucunun size IP dinlemesi gibi bir ipucu vermez.

Yukarıdaki, REJECT yerine DROP kullanmanın temel nedenlerinden biridir.


8
2017-07-04 13:09



İptables kuralları olmadan, kapalı bir port varsayılan olarak REJECT. Her bağlantı noktasını DROP yaparsanız, iyi bir alternatiftir (sunucunuz görünür) ancak sadece belirli portları DROP yaparsanız, REJECT'den daha fazla bilgi verirsiniz. Birisi nmap gibi bir battaniye probu kullanırsa, paketleri düşüren belirli portlar "filtrelenmiş" olarak görünecektir, yani saklandığınız bir hizmetiniz olduğunu bilirler. - Raptor007


Burada çok sayıda çelişen cevap görüyorum ve bu, Google’da doğru anahtar kelimelerle ilk makaledir; İşte doğru açıklama.
Basit:

DROP paketle hiç bir şey yapmıyor. Bir ev sahibine iletilmez, cevap alamaz. IPtables'in man sayfası, paketi yere düşürdüğünü, yani paketle hiçbir şey yapmadığını söylüyor.

REJECT, DROP'a bir paket geri gönderdiğine göre farklıdır, ancak yanıt, bir sunucu IP üzerinde bulunuyormuş gibi, ancak bir dinleme durumunda bağlantı noktasına sahip değil gibidir. IPtables, TCP durumunda veya UDP'ye ICMP hedef bağlantı noktasına ulaşılamıyorsa bir RST / ACK gönderir.


6
2018-01-11 12:29



+1 benden, ama cevaplar gerçekten katılmıyor. Hepsi, görebildiğim kadarıyla, Dagelf hariç - kimin yanlış olduğunu kabul eder. - MadHatter
Tamam, işte size biraz hile: "nmap localhost" yapın. Şimdi "açık" olmayan bir port seçin ... ve "hiçbir şey yapmıyor" gibi bir kural ekleyin, örneğin: "iptables -I INPUT -p tcp --dport 888 -j DROP". Şimdi tekrar "nmap localhost". Ne görüyorsun? ... - Dagelf


Makinenizin varlığını tamamen gizlemeye çalışıyorsanız, -j DROPuygun. Örneğin, bir kara listeyi uygulamak için bunu kullanabilirsiniz.

Bir bağlantı noktasının açık olduğunu gizlemeye çalışıyorsanız, bağlantı noktası açık değilse ortaya çıkabilecek davranışı taklit etmeniz gerekir:

  • TCP: -p tcp -j REJECT --reject-with tcp-reset
  • UDP: -p udp -j REJECT --reject-with icmp-port-unreachable

Bir bağlantı noktası tarayıcısı, çoğu bağlantı noktasını reddederken birkaç bağlantı noktasının paketleri düşürdüğünü görürse, bırakılan paketlerin açık, ancak gizli olan bağlantı noktalarında olduğunu varsayabilir.


3
2017-08-13 01:29



Ya birkaç limanı açarsanız (yani, 22, 25, 53, 80, 443) ve sonra her şeyi DROP? Artık MySQL, PostgreSQL, SQLite veya Cassandra'nın çalışıp çalışmadığı ... tarayıcı bunu doğru söyleyemez mi? - Alexis Wilke
@AlexisWilke Bu durumda, port tarayıcıya verdiğiniz tek ek bilgi, varsayılan bir DROP ilkesiyle birlikte bir çeşit güvenlik duvarınızın bulunmasıdır. - Raptor007


Birçok doğru cevaba rağmen, sadece iki sentim:

İşte kısa bir PoC FW.IDS-DÖNÜŞ vs-REDDET Ban sisteme (güvenlik duvarı, IDS, vb.) ilişkin kurallara ilişkin olarak benim için.

kısaca:

  • DROP Tüm kapıları yasaklıyorsa (böylece sunucu izinsiz giriş tarafında olduğu gibi), davetsiz misafir saldırganlar için kullanılabilir
  • REJECT --reject-with tcp-reset çok kapılı yasak için en iyi seçimdir, çünkü gerçek bir kapalı liman gibi davranır
  • eğer bazı portlar cevap veriyorsa (izinsiz misafir ev sahibinin hayatta olduğunu bilir), DROP ve REJECT (olmadan tcp-reset) davetsiz misafirlere bir engelin var olduğunu bir "sinyaline" verecektir (böylece bir noktada gerekli verileri sağlama umuduyla "saldırıya" devam etmesini sağlayabilir)

0
2017-09-20 16:49





Evet, DROP kullanmak anlamsız. REJECT kullanın.

Kural "DROP" yazdığında bile, sistem hala bir TCP RST / ACK ile gelen SYN'ye yanıt verir - bu, hiçbir hizmetin sunulmadığı portların varsayılan davranışıdır. (tcpdump et al bunu kaydetmez.)

Bir hizmet çalışıyorsa, SYN TCP SYN / ACK ile karşılanır.

DROP, TCP SYN / ACK ile normal olarak yanıt vermediğinden, bunun yerine RST / ACK ile, DROP kuralınız güvenlik duvarınızın reklamını yapar ve port tarayıcıları, bir şeyleri güvenlik duvarına aldığınızı ve umutlarınızda sizi vurmaya devam edeceğinizi bilir Güvenlik duvarını yakalamak.

Bu şimdi nmap, örneğin "kapalı" yerine "filtrelenmiş" olduğunu bildirebilir:

$ 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, tek "görünmez" güvenlik duvarı kurulumu, özel bir aygıtın aygıtlarınız arasında ve yalnızca seçici olarak ileriye doğru yönlendirilen bağlantı noktalarının bulunduğu bir sistemdir.

Temel tarayıcılarla uğraşmak isterseniz, TCP Penceresini 0'a ayarlayan tIP bağlantıları yapabilir, böylece bağlantı açıldıktan sonra hiçbir veri aktarılamaz, bağlantıyı kesmek için istekleri göz ardı ederek tarayıcının beklemesi gerekir. emin olmak istiyorsa, bağlantı zaman aşımı oluşması için. Ancak bir saldırganın bunu algılaması ve zaman aşımını çok kısa tutması önemsiz.

Her şey göz önünde bulundurulduğunda, muhtemelen REJECT kullanarak ya da sunucunuzla internet arasında özel bir port yönlendirme aygıtı kullanmaktan daha iyi bir seçim olacaktır.

Ya da sadece internete bakan makinelerinizde güvenlik duvarı gerektirmeyen servisler.

Genelde REJECT web sunucuları için en iyisidir, her hangi bir hizmete erişmeye çalışıyorsa (muhtemelen daha sık değil, siz) hızlıca bir cevap alacaksınız ve kullanıcılar veya diğer hizmetler ağ kesintisi olup olmadığını merak ederek beklemeye devam etmeyecektir.


-3



Bu cevap yanlış. Tcpdump ile, DROP kuralının, HERHANGİ bir yanıt göndermeyecek şekilde sisteme yol açacağı kolayca görülebilir. Ve "Gerçekten bir paket düşürmek için, sistem bir TCP RST / ACK ile cevap vermek zorundadır" ifadesi, bir şeyi yanıtlamak gibi bir anlam ifade etmemektedir. Bir paketi gerçekten "bırakırsanız, sadece cevap vermezsiniz ve bu, DROP kuralının etkisidir. - Juliane Holzt
Bu iddia için bir kaynak verebilir misiniz DROP bir sorun çıkarır SYN/ACK? Bunu makinelerimde hiç görmedim. - motobói
@Dagelf Makaleniz "DROP (aka DENY, BLACKHOLE) Bir paketin geçmesini yasaklar. Cevap gönderilmez." - JeanT
Normal cevabı göndermiyor, ama açıklandığı gibi birini açıklıyor. - Dagelf
Bağladığınız dokümanda "DROP ... Yanıt gönder"Gördüğüm kadarıyla değil, DROP bir döndürür SYN/ACK. Ben de, bu davranış herhangi bir sürümü altında hiç görmedim iptables. Hak talebinizi destekleyen bir kaynağınız varsa, bunu görmek en yararlı olacaktır; şüphesiz, yaptığım paket çöplükler iddiayı desteklemiyor. - MadHatter