Sistem akıl sağlığını kaybetmeden iptables'a kaç talimat doldurulabilir?


9

Diyelim ki engellenen IP adreslerinin bir listesini almak istiyor.

Aşağıdaki örnek komut dosyasını gördüm:

BLOCKDB="/path/to/ip.blocked.file"
# omit comments lines
IPS=$(grep -Ev "^#" $BLOCKDB)
for i in $IPS
do
    iptables -A INPUT -s $i -j DROP
    iptables -A OUTPUT -d $i -j DROP
done

Binlerce iptables girişine dönüşen binlerce satır aklı başında mı?

Sistem verimliliğinin önemli ölçüde etkileneceği üst sınır nedir?


2
Görünüşe göre sorunuzun yanıtını buldunuz. Öyleyse, cevabı sorunuzun dışına taşımalı ve "Sorunuzu cevaplayın" düğmesini kullanmalı ve cevabı buraya göndermelisiniz. Ardından, cevabınızı kabul edebilirsiniz ve işler çok daha güzel organize edilecektir.
Scott Severance

@ScottSeverance önerdiğiniz gibi yapılır, ancak kişinin kendi cevaplarını kabul etmesi 4 saat sürer.
Tzury Bar Yochay

Yanıtlar:


8

Sanırım bu makale aracılığıyla bir çözüm buldum ve cevap IPSet gibi görünüyor

Toplamda:

IP adresleri kümesinde binlerce öğe varsa iptables performansı düşer (aslında, nettabilter performansı iptables sadece güvenlik duvarını yönetmek için bir araçtır). CPU yükünüz de artabilir. Neyse ki mükemmel bir çözüm var - ipsets

IPSet aşağıdakileri yapmak için mükemmel bir araçtır:

  • Birden fazla IP adresini veya bağlantı noktası numarasını saklayın ve tek bir geçişte iptables tarafından koleksiyonla eşleştirin;
  • IPtables veya portlara karşı iptables kurallarını performans cezası olmadan dinamik olarak güncelleyin;
  • Tek bir iptables kuralı ile karmaşık IP adresini ve bağlantı noktası tabanlı kural kümelerini ifade edin ve IP setlerinin hızından yararlanın

Ipset'i kurmak çok basit sudo apt-get install ipset

Sonra aşağıdakileri çalıştırın

ipset -N autoban iphash ––hashsize 4096 ––probes 2 ––resize 50

Iptables zincirinize ekleyin. Güvenlik duvarı ayarlarınıza bağlı olarak değişebilir. Burada ethin zinciri kullanıyoruz.

iptables -I ethin 2 -p tcp -m multiport ––dport 80,443 -m set ––match-set autoban src -j DROP

Artık tüm kötü IP'leri ipset'inize ekleyebilirsiniz. Örneğin, satır başına bir IP içeren bots.txt adlı metin dosyanız var. Böylece basit bash betiğini kullanarak bunları ipset'e ekleyebilirsiniz:

for i in $( cat /tmp/bots.txt ) ; do ipset -A autoban $i ; done

Çalışmayı kontrol etmek için:

ipset -L autoban

Cevap için teşekkürler. İşte ipset'e aşina olmayanlar için ipset hakkında hızlı bir eğitim (benim gibi 8-) - linuxjournal.com/content/advanced-firewall-configurations-ipset
Tzunghsing David Wong
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.