SORU
22 Mart 2013, Cuma


Nasıl 100.000 Tek Tek IP adreslerini Engellemek için

Giriş

Nasıl web uygulaması/IP address çok sayıda sunucu Blok. Açıkçası bu kadar kolay PHP veya herhangi bir programlama dili ile yapılabilir

$ipList = []; // array list or from database
if (in_array(getIP(), $ipList)) {
    // Log IP & Access information
    header("https://www.google.com.ng/search?q=fool"); // redirect
    exit(); // exit
} 

Ya Da Kullanarak 10**

order allow,deny
deny from 123.45.6.7
deny from 012.34.5.
# .... the list continues
allow from all

Sorunları

  • Bir mahalleye çalışıyorum 100k plus individual IPs subnets
  • Kullanıcı önlemek için çalışıyorum bu IP engelleme önce PHP için alıyorum
  • 100000 bilgi htaccess Her zaman yükleme için eğer bir şey üzerinde 1.5 MB
  • IP veritabanı hala ... ve dinamik olarak daha fazla değer eklemek için nee olurdu büyüyor
  • 100000 iptables kilidini ayarlamak için sadece saçma (yanlış Olabilir)

Aptalca Bir Fikir

order allow,deny
deny from database    <-------- Not sure if this is possible
allow from all

Soru

  • htaccess veritabanından listesi () Redis,Crunchbase,Mongo, MySQL veya Sqlite bile ... herhangi almak mümkün
  • Görünür bir çözüm üretiminde sorun bu tür yönetmek için var
  • En iyi çözüm Block the IPs at the firewall level pragmatik/güvenlik duvarı IP kaldırmak için herhangi bir yolu olduğunu biliyorum

Nihayet

Benim yaklaşımım tamamen yanlış olabilir ... istediğim tüm Spam ve botnet artış olduğu gözle görülür bir çözüm

Lütfen bu hiçbir şeyi DOS ile bir basit saldırı ...get lost response

Güncelleme

  • Güvenlik duvarı :Cisco PIX 515UR

CEVAP
22 Mart 2013, Cuma


Deneyebileceğiniz bir şey text file engellemek istediğiniz IP adresleri listesini tutuyor ya ** 29, kullanım büyü RewriteMap dönüştürmek. Bu sanal konak config server kurmak gerekiyor.Olamaz debug dosyasında bir harita başlatılamadı.

RewriteEngine On
RewriteMap deny_ips txt:/path/to/deny_ips.txt

RewriteCond ${deny_ips:%{REMOTE_ADDR}|0} !=0
RewriteRule ^ - [L,F]

/path/to/deny_ips.txtdosya bu gibi bir şey olacaktır:

12.34.56.78 1
11.22.33.44 1
etc.

Aslında, inkar etmek istediğiniz bir İP ve bir boşluk sonra bir "1". Bu metin dosyasında herhangi bir IP sunucusu dönmek için neden olur403 Yasak. İşleri biraz hızlandırmak için httxt2dbm special bir karma oluşturmak için kullanabilirsiniz ve sonra eşleme olarak tanımlarsınız:

RewriteMap deny_ips dbm:/path/to/deny_ips.dbm

Tam emin değilim performansı vurmak için kullanarak büyü gibi bir sürü IPs, ama hızlı bir karşılaştırma testi üzerinde apache 2.2 üzerinde çalışan bir 3 GHz i686 altında linux arasındaki fark 5 IPs liste karşı 102418 olduğu önemsiz. Göreab's neredeyse aynılar çıktı.


Belirli sorular hitaben:

Mümkün debug için veritabanından listesi () Redis,Crunchbase,Mongo, MySQL veya Sqlite bile ... herhangi bir elde etmektir

Yeniden bir harita kullanarak, kullanabilirsiniz "prg" eşleme türü için harici bir programı çalıştırmak için harita türü. Perl, php, vb yazabilirsiniz. script bir IP adresi aramak için bir veritabanı ile konuşmak. Ayrıca bu uyarılar altında listelenen"". Dikkat O zaman bu gibi herhangi bir diğer harita (RewriteCond ${deny_ips:%{REMOTE_ADDR}|0} !=0) harita kullanmak istiyorum. Bu aslında tüm istekleri için bir darboğaz yaratır. Bir veritabanı konuşmak için en iyi çözüm değil.

Apache 2.4 rağmen, seni mod_dbd sorgu oluşturmak, dbd/fastdbd bir harita türü vardır. Bu çok daha iyi bir seçenektir ve yapılandırma modülü veritabanı, havuzlar bağlantılar, vb bağlantıları yönetir. Harita tanımı gibi görünecektir:

RewriteMap deny_ips "fastdbd:SELECT active FROM deny_ips WHERE source = %s"

Bir tablo olduğunu varsayarsak "deny_ips"2 sütun"kaynak"(IP adresi) ve "aktif"(1 aktif, 0 pasif).

Görünür bir çözüm üretiminde sorun bu tür yönetmek için var

Eğer veritabanında engellenen IP'leri tüm depolama, veritabanı tablosunun içeriğini yönetme meselesi. Eğer special harita türü kullanıyorsanız, en azından special dosyaları yönetmek için perl has a DBI biliyorum,/inkar listesinden IP girişleri eklemek veya kaldırmak için kullanabilirsiniz. Hiç bu konuda fazla bir şey söyleyemem daha önce kullandım. Düz bir metin dosyası yönetme özellikle eğer girdileri kaldırma planlıyorsanız çok daha zor olacak, ve sadece bunu Ekle. Bir veritabanı kullanarak ve apache dışında 2.4 nde, bu çözümlerin herhangi bir kutu veya üretimi hazır dışında sanmıyorum. Özel çalışma gerektiriyor.

En iyi çözüm güvenlik duvarı var pragmatik bir yolu/IP Kaldır güvenlik duvarı düzeyinde IPs Blok olduğunu biliyorum

Örneğin, Beta olarak işaretlenmiş olan perl interface var, ama daha önce hiç kullanmadım. libiptc ama netfilter's faq göre

Kaldırma kuralları ekleme/C/C API var mı?

Cevap ne yazık ki Hayır.

Şimdi düşünebilirsiniz 'ama libiptc ne olacak?'. Oldu libiptc bu mailinglist(s), birçok kez işaret edilmiştirASLAortak bir arayüz olarak kullanılması gerekiyordu. İstikrarlı bir arayüz garanti etmiyoruz, ve linux paket filtreleme sonraki yaşamında çıkarmak için planlanmıştır. libiptc çok düşük katman makul zaten kullanılacak.

Böyle bir API için temel bir eksikliği olduğunu biliyoruz, ve bu durumun iyileştirilmesi üzerinde çalışıyoruz. O zamana kadar, ya da sistem kullanılması tavsiye edilir() veya open Input-geri stdın içine bir boru. İkinci bir yol daha iyi performans verir.

Ne kadar uygun bir libiptc bir çözüm eğer API istikrar yoksa orada hiç bilmiyorum.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • edwin maldonado

    edwin maldon

    28 Mart 2009
  • hydejiaqi

    hydejiaqi

    12 Mart 2008
  • xCraash

    xCraash

    6 Temmuz 2012