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.