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
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.
Nasıl Internet Explorer önbelleğe alın...
Nasıl css display none değişiklik veya...
Nasıl bir tablo hücre (tek hücre) bir ...
Nasıl Eclipse başlattığınızda açık son...
Nasıl jQuery kullanarak yönlendirmeler...