İptables'da -j REJECT veya -j DROP öğelerini ayarlamak daha mı iyidir?


33

Archlinux wiki'de iptables kurallarına bir örnek var:

# Generated by iptables-save v1.4.18 on Sun Mar 17 14:21:12 2013
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
:TCP - [0:0]
:UDP - [0:0]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -p icmp -m icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -p udp -m conntrack --ctstate NEW -j UDP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP
-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p tcp -j REJECT --reject-with tcp-reset
-A INPUT -j REJECT --reject-with icmp-proto-unreachable
COMMIT
# Completed on Sun Mar 17 14:21:12 2013

Birkaç gün önce arkadaşım neden REJECTson üç kuralda olduğunu sordu . Bunun DROPyerine olması gerektiğini söyledi ve durumunda daha iyi güvenlik konusunda bir şeyden bahsetti DROP.

Yani, iki sorum var:

  1. Üç kural ne yapar?

  2. Orada koyduğunuzda herhangi bir fark yaratır mı DROPyerinde REJECT --reject-with? Eğer evet ise, fark nedir?


Yanıtlar:


33

Üç kural ne yapar?

Bu 3 kural oldukça açıklayıcı görünüyor:

  1. Gelen UDP paketlerini "bağlantı noktasına erişilemiyor" ICMP mesajı ile reddet
  2. Gelen TCP paketlerini "tcp reset" ile reddet
  3. ICMP "protokolü erişilemiyor" mesajı ile gelen paketleri (başka herhangi bir protokolden) reddet

Daha fazla ayrıntı arıyorsanız (UDP / TCP paketleri hakkında, ICMP hakkında), ağ oluşturma belgelerine ve belki de bunlara man iptablesbakmanız gerekir.

Orada DROP'u yerine koyduğumda herhangi bir fark yaratıyor mu REJECT --reject-with? Evet ise, biri bana farkı açıklayabilir mi, gerçekten minnettar olacağım.

Bir fark yaratıyor. Ve popüler inanca aykırı, DROPdaha iyi güvenlik vermez REJECT. Meşru kullanıcıları rahatsız ediyor ve etkili bir şekilde kötü niyetli kullanıcılardan korunmuyor. Bu gönderi, nedenleri ayrıntılı olarak açıklar:

http://www.chiark.greenend.org.uk/~peterb/network/drop-vs-reject

REJECT yerine DROP kullanmanın yaygın bir nedeni, hangi portların açık olduğu hakkında bilgi vermekten kaçınmaktır, ancak paketleri atmak, reddetme kadar tam bilgi verir.

REJECT ile taramanızı yapıyor ve sonuçları "bağlantı kuruldu" ve "bağlantı reddedildi" olarak sınıflandırıyorsunuz.

DROP ile sonuçları "bağlantı kuruldu" ve "bağlantı zaman aşımına uğradı" olarak sınıflandırıyorsunuz.

En önemsiz tarayıcı işletim sistemi "connect" çağrısını kullanacak ve bir sonrakine başlamadan önce bir bağlantı denemesi tamamlanana kadar bekleyecektir. Bu tip tarayıcılar paketleri düşürerek önemli ölçüde yavaşlayacaktır. Bununla birlikte, saldırı bağlantı denemesi başına 5 saniyelik bir zaman aşımı ayarlarsa, bir makinede ayrılmış her portu (1.1023) sadece 1,5 saat içinde taramak mümkündür. Taramalar her zaman otomatiktir ve bir saldırgan sonucun derhal olmamasını önemsemez.

Daha gelişmiş bir tarayıcı, işletim sisteminin TCP uygulamasına güvenmek yerine paketleri kendisi gönderir. Bu tür tarayıcılar hızlı, verimli ve REJECT veya DROP seçimine kayıtsızdır.

SONUÇ

DROP, düşman güçlerine etkili bir engel teşkil etmiyor, ancak meşru kullanıcılar tarafından yürütülen uygulamaları önemli ölçüde yavaşlatabilir. DROP normalde kullanılmamalıdır.


@ janos - Bir paket üç kuralın her birine ulaştığında gerçekte ne olduğu hakkında biraz daha yazabilir misiniz?
Mikhail Morfikov

3
@Kiwy - Bağlantıyı oku ve kendin dene. DROP, REJECT'ten daha iyi güvenlik sağlamaz. Meşru kullanıcıları rahatsız ediyor ve etkili bir şekilde kötü niyetli kullanıcılardan korunmuyor. Bunun nedeni meşru kullanıcıların bağlantının zaman aşımına uğramasını beklerken yavaş bir bağlantıdan muzdarip olmaları ve krakerlerin araçlarını sadece bir zaman aşımı için beklemeyecek şekilde yapılandırmasıdır. bağlantının yavaş olması (bir zaman aşımı beklemesinden dolayı) sunucunuzun orada ve güvenlik duvarında olduğunu gösterir.
Panter

2
Ben bu sonuç ile gitmiyorum. Reddet, analiz edebilecek bir ICMP-cevabı oluşturur. Bu analize dayanarak, iyi saldırı motorları kullanılmakta olan işletim sistemini türetebilir. Bu nedenle, tüm bağlantı noktalarının bilinen bir sistemde düşüş daha iyi olabilir. Bu, üretim ortamındaki sunucular için geçerlidir.
Nils

1
Sadece belirli portları yönlendiren bir güvenlik duvarı daha iyidir. DAMLA BİR KONU, ilk etapta çalışan hiçbir hizmet ile aynı değildir. Pek çok liman tarayıcısı, her ikisi de dışarıdan algılanabileceği için orada REJECTS veya DROPS bulursanız, güvenlik duvarınızı çökertme umuduyla gelecekteki taramalar için ana makinenizi potansiyel bir hedef olarak işaretler. chiark.greenend.org.uk/~peterb/network/drop-vs-reject
Dagelf

1
Alıntılanan metnin bir paragrafı daha olduğunu, DROP'un daha nadir görülen bir DDoS saldırısı varsa daha iyi olduğunu söyleyen bir güncelleme olduğunu unutmayın, ancak bu gerçekleştiğinde, muhtemelen olması iyi olur ... siz ne düşünüyorsunuz?
Alexis Wilke,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.