iptables, yerel kaynaklı tüm giden trafiğe izin vermek için kurar mı?


11

Birisi bana aşağıdaki iptables kuralı ile yardımcı olabilir merak ediyordum:

HERHANGİ ve TÜM yerel kaynaklı (iptables çalıştıran sunucuda olduğu gibi) trafiğe izin vermek istiyoruz.

DNS, HTTP, vb ... hepsi. İptables çalıştıran sunucu tarafından başlatılan bağlantıya izin verilmelidir.

Şu anda temelde OUTPUT varsayılan politikası olan ACCEPT kullanıyoruz. Bu doğru mu? Girişler engellendi, bu yüzden bu bağlantıların (izin verdiklerimiz hariç) başlatılamayacağı anlamına geliyor.

Üzgünüm, iptables yeteneklerim zayıf;)

Nazikçe teşekkür ederim.

Yanıtlar:


26

Bunu yapmak için iki kurala ihtiyacınız vardır:

iptables -I OUTPUT -o eth0 -d 0.0.0.0/0 -j ACCEPT
iptables -I INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

Bazı notlar.

  • Sahip olabileceğiniz önceden var olan kurallar bunu zaten yapabilir, ancak farklı görünebilir.
  • Bu, -Ibu kuralları ilk olmaya zorlamak için kullanır . iptableskurallar yukarıdan aşağıya değerlendirilir.
  • -oVe -ibayraklar sırasıyla "in" "out" ve anlamına gelir. Değiştir eth0uygun ethernet arayüzü adıyla.

ikimiz de var :) Dediğim gibi ... ben iptables becerileri zayıf sos vardır çünkü 2. bir söz başarısız oldu. açıklama için teşekkürler :)
anonim-bir

2
-d 0.0.0.0/0gereksizdir ve gerekli değildir.
zapstar

Mükemmel cevap. Ama şimdi sunucuya ping atıyorum ve nedenini anlamıyorum. Açıklayabilir misin?
Daniel

@Daniel Yalnızca giden trafiğe izin verirseniz, ping yanıtı, ana makinenize ulaştığında paket filtresi tarafından bırakılır. Bunu önlemek için, giden trafikle aynı oturumla ilişkilendirilmiş veya ilişkilendirilmiş gelen trafiğe de izin vermeniz gerekir. Başka bir deyişle, ping yanıtı ping isteğiyle ilgili olduğu için buna izin verilmelidir. Gelen bir ping isteği varsa ve oturum tablosuna kaydedilmiş bir ping yoksa, gelen paket bırakılır. Umarım mantıklıdır!
bahamat

@bahamat: Tekrar denedikten sonra, açık bir şekilde icmp trafiğine izin vermem gerektiğini buldum. Ve yukarıdaki kuralları uyguladığım sunucuya ping atmaktan bahsediyordum. Btw çoğaltılamaz., Belki bir yerde bir hata yaptım. Yine de teşekkürler.
Daniel

0

Şu anda temelde OUTPUT varsayılan politikası olan ACCEPT kullanıyoruz.

Bu, OUTPUT için yeterlidir, çünkü Netfilter durum bilgisi olan bağlantı izlemeyi başlatmak için özel kurallara ihtiyaç duymaz.

Ancak, gelen trafiği " varsayılan reddetme " politikasına göre filtrelemek istiyorsanız, INPUT-chain anahtarına şu şekilde geçiş yapılabilir DROP:iptables -P INPUT DROP

Daha sonra her şey sadece 2 kuralla belirlenir :

iptables -A INPUT -j ACCEPT -i lo
iptables -A INPUT -j ACCEPT -m state --state RELATED,ESTABLISHED

Geridöngü arabiriminde giriş trafiğine izin veren kurala dikkat edin - blogumda " son kullanıcı için minimum güvenlik duvarı " yayınladığına dikkat çektiğimden , açıkça izin verilmedikçe, geri dönüş trafiği, geri dönüşle karşılaştırıldığında "yerleşik" durum denetimi tarafından işlenmeyecektir trafik bitti, diyelim eth0.

Sağlamak için "yüklenen bu asgari kural setine olduğu gibi / o zaten orada olabilecek kurallar müdahale w, bu faydalanmak için uygundur" iptables-restoreKABUK-oturumda:

lptables-restore <<__EOF__
-P INPUT DROP
-A INPUT -j ACCEPT -i lo
-A INPUT -j ACCEPT -m state --state RELATED,ESTABLISHED
__EOF__

Bunu gerçekleştirmeden önce emin kendi ağ bağlantısı kesmeyecek markasını 1 zaten açık SSH oturumları açık yenileri olmaz iş için, normalde girişimleri çalışmaya devam etmelidir rağmen,.

__

  1. Elbette bu tür bağlantılara izin vermek için başka kurallar ekleyebilirsiniz. Bu kadar basit olabilir -A INPUT -j ACCEPT -p tcp --dport 22- -m stateburada uğraşmanıza gerek yok. Ayrıca düzeltmek unutmayın lptables-restoregeri iptables-restorebunu denemeden önce;)
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.