Belirli ips'lere izin verebilir ve iptables'daki diğer tüm bağlantıları nasıl engelleyebilirim?
Belirli ips'lere izin verebilir ve iptables'daki diğer tüm bağlantıları nasıl engelleyebilirim?
Yanıtlar:
Uzun süre önce masaüstü kullanıcısı için temel Iptables kuralları hakkında bir blog yazısı yazdım ve muhtemelen onu ve Stateful firewall tasarımı ile ilgili makalesini okumalısınız . Ancak öncesi 2.6.39 öncesi çekirdek (bu içerir ipset
ve 10'dan fazla beyaz listeye sahipseniz (10'un keyfi olduğu durumlarda) IP'yi beyaz listeye eklemek için kullanabilirsiniz.
Öncelikle, kabul ya da düşürmek istediğimizi bildiğimiz durumla ilgilenir ve arayüzler kurarız.
iptables -P FORWARD DROP # we aren't a router
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -s 192.168.1.1 -j ACCEPT
iptables -P INPUT DROP # Drop everything we don't accept
Sadece IP ile izinsiz yapmak istiyorsanız, devletsiz
iptables -A INPUT -s 192.168.1.1 -j ACCEPT
iptables -A OUTPUT -d 192.168.1.1 -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP
Bunu yaparken sorunlarla karşılaşmanız muhtemeldir ve hayatınızı kolaylaştırmak için devlet kullanmayı öneriyorum. Örneğin, izin vermemek -i lo
ve -o lo
kesinlikle bazı uygulamalar için sorunlara neden olacaktır.
iptables -F
, tüm kuralları temizlemem gerekiyorsa, ubuntu.com adresine ping bile yapamıyorum
İşte yalnızca gelen bağlantıları engelleyen (denenmemiş!) Bir örnek . 192.168.3.x, ICMP veya SSH bağlantı noktasına gelen geridöngü arabirimi üzerinden bağlantılara izin verilir. Diğer tüm bağlantılar reddedilir.
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 192.168.3.0/24 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -j REJECT
lo
Yukarıdaki örnekte durum eşleştirmesinin dışında tutulur ve her zaman izin verilir.
Aşağıdaki kural, yalnızca IP’nize izin verir ve diğer tüm IP’leri 22 veya ssh portu üzerinden engeller. Bağlantıyı kesmeden önce yeni bir terminal ile test edin.
iptables -I INPUT -p tcp ! -s yourIPaddress --dport 22 -j DROP
yourIPaddress
birkaç IP adresi ve aralığı ekleyebilir miyim? Ve eğer SSH'yi 2888 gibi standart olmayan bir bağlantı noktasında kullanıyorsam, o zaman komut 22
sizin örneğinizde 2288
? Ayrıca, rsync, sftp, vb. İzin verilenler dışındaki tüm IP'lerden bu sunucuya engellenir mi?
-p tcp
Burada önemli olduğuna dikkat edin çünkü --dport
onsuz çalışmaz. Bunun -j REJECT
yerine kullanmayı öneririm , DROP
çünkü REJECT
limanı kapalı bağlantı DROP
noktasıyla aynı yapar ve bu bağlantı noktasına yönlendirilmiş paketleri siyah delikli yapar. Pratikte, uzaktan saldırgan, DROP
aslında kapalı portlardan yapılandırılmış portları algılayabilir .
İşte tam çalışma örneği.
Ayrıca uygulamaları çalışır kılar (yeniden: keepass başlamadığına dair yorumum)