Sunucuya kısa sürede çok fazla isabet yapan bir IP adresini otomatik olarak ve geçici olarak nasıl engellerim?


21

LAMP sunucularımdan biri son zamanlarda bir çeşit script bot tarafından istismar arayışı içinde kaldı. Görünüşe göre, saniyede çok fazla istek yapıyordu, sunucudaki RAM'i aşırı yüklüyor ve tüm sitemi bir saatliğine indirdi. Bu "attacK" hepsi tek bir IP adresinden geldi.

Öyleyse, kısa sürede LAMP Sunucumda çok fazla isabet yapan bir IP adresini otomatik olarak ve geçici olarak nasıl engelleyebilirim? İş için en iyi araç nedir ve bunu İşletim Sistemi düzeyinde mi yoksa PHP üzerinden mi çözmeliyim?

Yanıtlar:


25

Başarısız2Ban . Linux platformunda bu soruna altın standart / varsayılan çözüm.


İlginç, teşekkürler. Bu, Google gibi web tarayıcılarını nasıl ele alıyor veya etkiliyor?
ProgrammerGirl

1
@Programcı Bir şeyi nasıl yapılandıracağınıza bağlıdır, ancak bir web tarayıcısının kötü şifreler girmesini, istismar aramasını ya da iyi tanımlanmış bir eşiği tetiklemek için yeterli isabet elde etmesini beklemeyebilirsiniz - bu yüzden sadece bulmak için günlüklerinizi kontrol edin eşiklerinizi ne tanımlayacağınız.
UmutsuzN00b

5

Bunu PHP ile yapmaya çalışmaktan kaçınmalısınız. PHP işin içine girdiğinde, zaten çok geç oldu - bellek zaten tahsis edildi.

IP adreslerini herhangi bir katmanda yasaklayabilirsiniz, ancak en az miktarda kaynak kullanan en düşük seviye almak istediğiniz yoldur. Bu genellikle güvenlik duvarıdır. En azından iptables (linux firewall) kullanmak istediğiniz şeydir. Bunu sizin için otomatikleştirebilecek olan Fail2Ban gibi başkalarının da bahsettiği araçlar var. Dış güvenlik duvarı daha iyi olurdu.

Suçlu IP adreslerini yasaklamaya çalışmanın yanı sıra, kaynaklarınızı daha iyi kullanmaya çalışmalısınız. Bir istek daha az kaynak alırsa bir saldırının etkili olması daha uzun sürer.

Apache ayrıca çok fazla hafıza kullanır. Mod_php kullanıyorsanız, PHP her Apache alt sürecinin içine yüklendiği için daha da kötüdür. Bu, PHP kullanılmadığında bile statik içerik (css / js / images) isteklerinin bile PHP yüklüyor demektir. Bunun yerine FastCGI kullanarak bu sorunu çözebilirsiniz. mod_fcgid iyi bir seçenek.

Daha fazla kaynak verimli başka web sunucuları da vardır. Nginx benim favorim. Ayrıca Lighttpd de var. Litespeed gibi pek çok insan (Apache'nin yerine).

Apache'ye bağlı kalmak istiyorsanız, olabildiğince iyi ayarlamayı düşünün. .Htaccess'i devre dışı bırakmayı düşünün. İşte neden iyi bir açıklama .


2

Http trafiğini kontrol etmek veya engellemek için şunları kullanabilirsiniz:

Ancak, bu aracın web tarayıcılarını da engelleyebileceğini / yavaşlatacağını ve dolayısıyla SEO’yu etkileyebileceğini unutmayın.


2
iptables -I INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP

ossec , bu tür şeyleri syslog'larına göre otomatik ve şeffaf bir şekilde yapabilir.


1
Lütfen ilk kod satırının tam olarak ne yaptığını açıklayabilir misiniz? Ayrıca, ossec fail2ban ile nasıl karşılaştırılır? Teşekkürler.
ProgrammerGirl

2
Bu bir iptables kuralı. Ne kadar yeni bağlantı denemesi yapıldığını sayar ve 60 saniye içinde 4 denemeyi geçtikten sonra onları bırakır. man iptablesHer bayrağın ne anlama geldiğini ve birlikte nasıl çalıştıklarını görmenizi ve görmenizi tavsiye ediyorum .
Luke,

-3

NoooBS,

--- sel ---

iptables -N logdrop iptables -Bir logdrop -m son - set - isim kara liste

iptables -Bir logdrop -m limit - 1 / s sınırla - limit-1 patlama burst -j LOG - önek "Flood:"

iptables -bir kayıt alanı -j DROP

iptables -N ddos ​​iptables -Bir ddos ​​-m son --rcheck - isim karalistesi - ikinci 300 --update - name - tekrar - 60 - toplam 2 - j logdrop iptables - Bir ddos ​​- j GERİ DÖN

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.