iptables: YENİ, KURULAN ve İLGİLİ paketler arasındaki fark


46

Bir sunucudaki güvenlik duvarının bir parçası:

iptables -A INPUT -p tcp --dport 22 -m state NEW --state -m recent --set

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 100 --hitcount 10 -j DROP

Çevrimiçi arama yaptığımda, her zaman YENİ'nin bu kuralda kullanıldığını görüyorum, ancak KURULAN VE İLGİLİ'nin neden kullanılmadığını anlamakta zorlanıyorum.

Bunun gibi, böyle :

iptables -A INPUT -p tcp --dport 22 -m state NEW,ESTABLISHED,RELATED --state -m recent --set

iptables -A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED,RELATED -m recent --update --seconds 100 --hitcount 10 -j DROP

YENİ bir paket KURULDU ve İLGİLİ olarak değiştiğinde birisi bana açıklayabilir mi?

Yanıtlar:


46

Alıcıyı almadan önce YENİ bir paket telefon görüşmesi yapın. KURULAN bir paket, "Merhaba" dır. Ve İLGİLİ bir paket, göndereceğiniz bir e-postadan bahsetmek için arayacak olsaydınız olurdu. (E-posta İLGİLİDİR.)

Analojimin çok iyi olmaması durumunda, şahsen adam sayfalarının iyi idare ettiğini düşünüyorum:

YENİ - paketin yeni bir bağlantı başlattığını veya başka bir şekilde paketleri her iki yönde görmemiş bir bağlantıyla ilişkilendirdiği anlamına gelir ve

KURULAN - paketin her iki yönde de paketler görmüş bir bağlantıyla ilişkili olduğu anlamına gelir,

İLGİLİ - paketin yeni bir bağlantı başlattığı, ancak FTP veri aktarımı veya bir ICMP hatası gibi mevcut bir bağlantıyla ilişkili olduğu anlamına gelir.

iptables (8) - Linux kılavuz sayfası


9
Merak etmeden, İLGİLİ paketleri nasıl belirlediğini biliyor musun? Uygulamaların iptables'lere bir bağlantının ilgili bir bağlantı olacağını bildirmek için kullanabileceği bir mekanizma var mı, yoksa bu tamamen iptables'ın durumlu kısmının bir parçası mı?
Matthew Scharley

9
Her biri ilgisiz bağlantılar kullanan belirli bir protokol için yazılmış (FTP gibi) ip_conntrack_ * adlı bir dizi çekirdek modülü tarafından yönetilir. Sorunuzu cevaplamak için, uygulamanız için benzer bir modül yüklemeniz gerekeceğini düşünüyorum.
Kyle Smith

4
Tamam teşekkürler. Ancak içinde NEW olan kurala geri dönersek, zaten bir KURULDUĞU gibi görünmesi ve bir kural tarafından engellenmemiş gibi görünmesi için bir paket yapılması mümkün değil mi?
Kris

2
@Kris: Giden paketleri taklit etmek oldukça zor, bu yüzden cevaptaki man sayfasının ifadesiyle, nasıl olduğunu anlamıyorum. Açık bir bağlantıya bağlı gibi görünen bir paketi taklit etmek doğru, ancak bir güvenlik duvarı olmasa bile, TCP yığını, açık bir bağlantıyı zaten bilmiyorsa, paketi yere bırakacaktı. gönderen. Eğer bu bir yönlendiricideki güvenlik duvarında ise, SYN/ ACK/ RST/ etc paketlerini yönlendiriciden geçerken inceleyerek bu durumu korumak mümkündür ve iptables'ın bunu yapmasını beklerdim.
Matthew Scharley

2
@Kris: Buna benzer bir şey (teknik olarak özdeş olmasa da) TeamViewer gibi VNC Yazılımı tarafından güvenlik duvarları / yönlendiriciler aracılığıyla tünel açmak için kullanılır. Süreci delik açma denir . Kısacası, farklı bir cihazdan (internet üzerinden) bağlanmak istediğiniz bir ana bilgisayara (kısıtlayıcı bir güvenlik duvarının arkasında olabilir) sahip olursunuz. Her iki bilgisayar da aralarında "arabuluculuk yapan" ayrı bir sunucuya (örn. TeamViewer Server) ayrı bir bağlantı açar, böylece güvenlik duvarları paketler birbiriyle ilişkiliymiş gibi görünür ve böylece bu bilgisayarlar her biriyle ayrı bir bağlantı kurabilir diğer.
Levit,

14

Sunucu ile istemci kısıtlayıcı hem de Asumming INPUTve açık OUTPUT, yani:

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT

Ve iptables-extensions'den (8) aktif modda FTP örneği üzerinden:

1. YENİ

YENİ Paket yeni bir bağlantı başlattı ya da her iki yönde de paket görmemiş bir bağlantıyla ilişkilendirildi.

Bağlantı noktasındaki istemci 50000(herhangi bir rasgele ayrıcalıklı bağlantı noktası değil) bağlantı noktasındaki FTP sunucusuna bağlanır 21; sunucu bu gelen bağlantıyı kabul etmek için en azından buna ihtiyaç duyar:

iptables -A INPUT --dport 21 -m state --state NEW -j ACCEPT

2. KURULAN

KURULAN Paket, her iki yönde de paketler görmüş bir bağlantıyla ilişkilidir.

Şimdi istemci tarafında, o bağlantı noktasında sunucuya giden bir bağlantı açılmış 21bir yerel bağlantı noktasını kullanarak 50000ve o gelmeye yanıtı sağlamak için aşağıdaki iptables ihtiyacı server (21)için client (50000):

sudo iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT

3. İLGİLİ

İLGİLİ Paket yeni bir bağlantı başlatıyor, ancak FTP veri aktarımı veya ICMP hatası gibi mevcut bir bağlantıyla ilişkili.

Şimdi, FTP bağlantısı kurulduktan ve bir veri bağlantısı gerçekleştirildikten sonra, istemci bağlantı noktasında bir sunucu soketi açacak (evet, aktif FTP istemcisi ile veri bağlantısı için bir sunucu haline 60000gelecektir ) bağlantı noktasında (benim müşterim bu bağlantı noktasını işaretleyecektir) 60000olarak RELATEDdiğer bağlantısına 50000->21) ve FTP kullanarak sunucuya bu port numarasını gönderir PORTkomutu. Ardından, FTP sunucusu , istemcideki 20bağlantı noktasından bağlantı noktasına yeni bir bağlantı açar 60000ve şimdi de istemcinin bu yeni bağlantının başarılı olmasına izin vermek için aşağıdakileri yapması gerekir:

sudo iptables -A INPUT -m state --state RELATED -j ACCEPT

Son olarak, bunun çalışması için ip_conntrack_ftpçekirdek modülünün sistemin bağlantıları / paketleri şu şekilde işaretlemesine izin vermesini sağlamanız gerekir RELATED(bu benim anlayışım, bu konuyu çok fazla kazmadım):

modprobe ip_conntrack_ftp

kurulan sadece daha önce yerel kaynaklı tek yönlü akış gerektirir, tcp 3 yollu el sıkışma değil, anlayışım doğru mu?
sdaffa23fdsf

Cevabınız için teşekkürler, kurduğunuz için "sunucunun (21) istemciye (50000) yanıt vermesine izin verilebilir iptables" demiştiniz, istemciden sunucuya FROM ise neden GİRDİ değil?
Medya

@Medya, müşteri perspektifinden, sunucudan (21) müşteriye (50000) gönderilen paketler gelen paketlerdir, yani müşteri için birdir INPUT.
Jaime Hablutzel
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.