Iptables için iyi bir giriş tavsiye edebilir misiniz? [kapalı]


15

Bir Linux sunucusunda bir güvenlik duvarı ayarlamam gerekiyor (önceki tüm deneyimim Windows ile). Kurallarım oldukça basit olmalı - hepsini yasakla, bazı bağlantı noktalarına izin ver, belirli IP alt ağları için bazı bağlantı noktalarına izin ver, ağ küçük ama karmaşıkken (her ana bilgisayarda en az 2 192.168 ... ağda IP var, herkes yapabilir birçok farklı şekilde birbirine bağlanabilir). Ben iptables sarmalayıcılar kullanarak gereksiz birçok varlık mantıksal olarak mantıksal sistemi aşırı karmaşık olabilir ve basit tutmak ve doğrudan iptables kullanmak daha iyi olacağını düşünüyorum.

Iptables kurallarının nasıl yazılacağına dair hızlı bir giriş önerebilir misiniz?

Yanıtlar:


26

Netfilter Web sitesinde resmi ve önerilen belgelere bağlantılar bulunmaktadır.

Bu yeni bir konu değil, kaynaklar sınırsız .

Temel komutların çoğu oldukça sezgiseldir ve bu sayfaya kolayca atıfta bulunabilir .

Paket filtrelemeyi sağlayan çekirdek seviyesi teknolojisi olan netfilter oldukça ileridir. Paketleri yönetebilen, paketleri çevirebilen ve yönlendirmeyi başka şekilde etkileyebilen ek tablolar vardır. Yardımcı iptablesprogram, netfilter ile etkileşim için kullanıcı alanı aracıdır. Gelişmiş işlevsellik hakkında bilgi edinmek istiyorsanız, yukarıda belirtilen belgelere başvurmanızı öneririm. Temel işlevlere giriş için lütfen daha fazla bilgi edinin.

Mevcut tüm kuralları listelemek için:

iptables -L -n

-n iptables'ın daha hızlı çıktı üreten ips çözümlemesini engeller.

Varsayılan tablo, filterüç zincire temel güvenlik duvarı kurallarını uygulamak için kullanılan tablodur. Üç varsayılan zincirleri filtermasaya vardır INPUT, OUTPUTve FORWARD.

Zincirler büyük ölçüde kendi kendini açıklar niteliktedir. GİRİŞ zinciri gelen paketleri etkiler, ÇIKIŞ zinciri yerel olarak oluşturulan paketleri etkiler ve son olarak sistemden geçen paketler için İLERİ.

Belirtebileceğiniz hedefler arasında, DROPpaketleri yok sayabilirsiniz, yani basitçe yok sayın ve yanıt vermeyin. REJECTReddetme kaynağına bir icmp yanıtının gönderileceği paketleri yapabilirsiniz . Son olarak, ACCEPTpaketlerin yönlendirmeye devam etmesini sağlayan bunları yapabilirsiniz .

Genellikle dışa bakan bir güvenlik duvarı ile varsayılan seçim, ağınızın Internet üzerindeki görünür ayak izini azalttığı için DROPaksine olacaktır REJECT. Örneğin, hizmetleri belirli bir ana bilgisayarla başka şekilde sınırlayan bir IP'nin görünürlüğü daha az olur DROP.

Dikkat, -Azincirin sonuna anlamına gelir. En üste yerleştirmek isterseniz kullanabilirsiniz -I. Tüm kurallar yukarıdan aşağıya doğru işlenir. -Dsilmek için.

To DROPgelen bir gelen paket 192.168.235.235:

iptables -A INPUT -s 192.168.235.235 -j DROP

Bu DROP, IP'den gelen tüm protokoller için hedefe atlar .

Kabul etmek:

iptables -A INPUT -s 192.168.235.235 -j ACCEPT

Bu IP'ye yerel sunucunuzdan veya ağınızdan erişimi önlemek için:

iptables -A OUTPUT -d 192.168.235.235 -j DROP

-pProtokolü, -spaketin kaynağını, paketin -dhedefini, hedef bağlantı noktasını --dport, kaynak bağlantı noktasını --sportve paketlerin kural tarafından nasıl ele alınacağını etkileyecek diğer birçok bayrağı belirtebilirsiniz .

Varsayılan INPUTpolitikanız buysa DROPve 192.168.123.0/24alt ağdaki herkesin sunucunuzdaki SSH'ye erişmesine izin vermek istiyorsanız , işte size bir örnek:

iptables -A INPUT -s 192.168.123.0/24 -p tcp --dport 22 -j ACCEPT

Doğru, CIDR gösterimini de kullanabilirsiniz !

Genel olarak, en iyi varsayılan politika DROPtüm zincirler içindir. Her zincirin, -Pbayrakla belirtilen varsayılan bir politikası vardır . Politikanızı varsayılan olarak ayarlamış olsanız bile DROP, yine de bir zincirdeki son girişin de olması tavsiye edilir DROP.

Örneğin DROP, GİRİŞ, İLERİ ve ÇIKIŞ zincirlerinin politikasını değiştirmek için:

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

Dikkatli olun , önce SSH erişimine izin vermeden uzak bir sistemde INPUT için varsayılan DROP ilkesini belirtirseniz, sisteme erişmenizi engelleyebilirsiniz. Uzak bir sistemdeyseniz, her 5 dakikada bir tüm hataları bir arıza güvenliği olarak temizlemek için geçici bir crontab belirtebilirsiniz.

Tüm kuralları silmek ve tüm trafiğe izin vermek için:

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -X
iptables -F

Not, -Xoluşturulan tüm zincirleri kaldırır. -Ftüm kuralları yıkar.

Kuralları kaydetmek ve geri yüklemek için yerel araçlar vardır. Özellikle, iptables-saveve iptables-restore. Modern Linux dağıtımlarının çoğu , sistemle birlikte sağlanan bir iptables init dosyası içinde çalışır saveve restoreçalışır.

Hatalı oluşturulmuş paketleri ve diğer istenmeyen trafik türlerini bırakmak gibi başka güvenlik duvarı en iyi uygulamaları da vardır. Bu, varsayılan olarak bu politikaların çoğunu uygulayacağı için Shorewall gibi bir ön uç yardımcı programının kullanılmasının bir avantajıdır . Yine de, yaklaşımınıza katılıyorum ve kendi kurallarımı da doğrudan korumayı tercih ediyorum ve bu en iyi uygulamalar bir ön uç olmadan uygulanabilir.


2
Sadece burada bazı rastgele iptables şeyler ararken bu cevap geldi (artık Google / SF önce SF / SO arama!), Ve bu çok ayrıntılı cevap daha fazla oy aşk hak gibi görünüyor, bu yüzden biraz verdim!
Andrew Barber

+1 güzel cevap. Debian WIKI'den de söz ederdim .
michal.kreuzman


1

Son zamanlarda https://help.ubuntu.com/community/IptablesHowTo adresini yararlı buldum . Orada hiçbir şeyin özellikle Ubuntu'ya özgü olduğunu düşünmüyorum.


Arch'ı dizüstü bilgisayarımda kullanıyorum, ancak bir Ubuntu Lucid Server tam olarak ayarlanacak görev. Bu eskimiş değilse el ele gelebilir (gördüğüm kadarıyla Ubuntu 8.04'e hitap eder).
Ivan
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.