İptables kuralının açıklamasına ihtiyacınız var


1

Aşağıdaki iptables kuralını anlamama yardımcı olan var mı?

iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

Cevap ruhu hakında olduğumu bulduğum gibi silindi ama syn-flood hakkındaki yorumunuzu ararken ayrıntıları çok yanlış yaptım. Kısa cevap, hayır, olmazdı. Daha fazla detay için nitelikli birini bırakacağım.
Radhil

Yanıtlar:


3

Radhil, entegrasyona rağmen doğru olan cevabını silerek çok dikkatli davrandı.

İlk olarak, kuralın değişmez anlamı: TCP protokolü için SYN tipinde olmayan (! - syn) olmayan yeni bir bağlantıya başlayan (-m durum --state YENİ) tüm paketleri (-j DROP) bırakır (- p tcp).

O zaman birkaç yorum. TCP protokolünde, üç paketin ritüel değişimi ile bir bağlantı başlatılır, SYN (istemciden sunucuya) -> SYN / ACK (sunucudan istemciye) -> ACK (istemciden sunucuya). Bir bağlantı değil yukarıdaki iptables kural tarafından bırakılan gibi SYN paketi tarafından başlatılan, yanı doğru radhil tarafından işaret, farklı hedefleri gütmektedir bağlantı kurmak için uygunsuz bir yoldur.

Bu kural genellikle ve yanlış bir şekilde, Web’deki sele baskın saldırılarını bastırmak için gerekli kabul edilir: örneğin , açıkça belirtildiği gibi bu Web sayfasına bakın :

Reddedilecek bir sonraki model, bir sele taşkın saldırısı.

iptables-Bir GİRİŞ -p tcp! --syn -m durum - devlet YENİ -j DROP

SYN-Flood-Attacks, saldırganların yeni bir bağlantı açtıklarını, ancak istediklerini belirtmedikleri anlamına gelir (örn., SYN, ACK, her neyse). Sadece sunucularımızın kaynaklarını almak istiyorlar. Bu tür paketleri kabul etmiyoruz.

Tabii ki, yeni bağlantılar için (!!!!) SYN paketlerini kabul ederek syn-flood saldırılarını denemek ve etkisiz hale getirmek bir anlam ifade etmiyor . Paketler değil paketler olmalı.

Sele taşkın saldırıları henüz tam olarak çözülmemiş bazı problemler yaratır. Bu, burada tartışılan bulabileceğiniz SYNPROXY adlı yeni bir iptables modülünün geliştirilmesine yol açtı . Hız sınırlaması sıklıkla kullanılır, örneğin burada görün , ancak bu önceki referansta belirtilen soruna yol açar , yani hangi bağlantıların yeni olduğunu, hangi eski ve hangi durumda sorunsuz çalıştığını izlemek için gereken bağlantı modülü sınırlı sayıda bağlantı için, ancak bağlantı sayısı arttıkça (örneğin, bir SYN-taşması saldırısı nedeniyle) orantısız miktarda zaman tüketir. Ölçeklenebilirlik sorunu ile kastedilen budur .

Toplamda, yukarıdaki iptables kuralının herhangi bir anlamlı amaca hizmet ettiği bana açık değildir.


Cevabımda temel bir TCP'yi karıştırdı, yeniden yazmak için zaman / enerji yoktu, bu yüzden tekrar anlaşıldı. Seninkiler çok daha kapsamlı, ama teşekkürler.
Radhil

1

-A INPUT - "GİRİŞ" zincirinin sonuna ekleme

-p tcp - TCP protokolünü eşleştirin

! --syn - TCP SYN bayrağı olmayan paketleri eşleştirme

-m state - "state" modülünü kullan (kullanımdan kaldırıldı; yeni kurallar bunun yerine "conntrack" kullanmalı)

--state NEW - paketleri "YENİ" durumuyla eşleştirin (yani, kurulan herhangi bir bağlantıya ait değil)

-j DROP - "DROP" hedefine atla (ki bu paketi yok eden son hedef)

Temel olarak TCP paketleri ya yeni bir bağlantı açar (ve her zaman SYN bayrağına sahiptir) ya da mevcut bir bağlantıya aittir ya da iptal edilmiş bir bağlantıyı kapatmaya çalışın (RST bayrağını kullanarak) ya da çöp. Bu nedenle, bu kural, ne yeni bir bağlantı açmaya çalışan ne de var olan birine ait olan paketleri son kategoriye atmaya çalışır.

IMHO bu biraz gereksiz ... Belki de çeşitli garip portscan türlerine (nmap'te görüldüğü gibi) karşı koruma sağlaması gerekiyordu. Sadece paranoya da olabilir.

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.