it-swarm.com.de

Wie blockiere ich automatisch und vorübergehend eine IP-Adresse, die in kurzer Zeit zu viele Treffer auf dem Server verursacht?

Einer meiner LAMP-Server wurde kürzlich von einer Art Skript-Bot heruntergefahren, der nach Exploits suchte. Wie es aussah, wurden so viele Anfragen pro Sekunde gestellt, dass es die RAM auf dem Server) überlastete und meine gesamte Site für eine Stunde herunterfuhr. Dieser "Angriff" kam alle von a einzelne IP-Adresse.

Wie kann ich also automatisch und vorübergehend eine IP-Adresse blockieren, die in kurzer Zeit zu viele Treffer auf meinem LAMP-Server erzielt? Was ist das beste Tool für diesen Job, und sollte ich dies auf Betriebssystemebene oder über PHP lösen?

21
ProgrammerGirl

Fail2Ban . Die Goldstandard-/Standardlösung für dieses Problem auf der Linux-Plattform.

25
HopelessN00b

Sie sollten vermeiden, dies mit PHP zu versuchen. Zu dem Zeitpunkt, an dem PHP beteiligt ist), ist es bereits zu spät - der Speicher wurde bereits zugewiesen.

Sie können IP-Adressen auf jeder Ebene sperren, aber die niedrigste Ebene, die am wenigsten Ressourcen verbraucht, ist die Route, die Sie einschlagen möchten. Dies ist normalerweise die Firewall. Zumindest möchten Sie iptables (Linux-Firewall) verwenden. Es gibt Tools, die andere erwähnt haben, wie z. B. Fail2Ban, die dies für Sie automatisieren können. Externe Firewall wäre besser.

Neben dem Versuch, beleidigende IP-Adressen zu verbieten, sollten Sie versuchen, Ihre Ressourcen besser zu nutzen. Wenn eine Anforderung weniger Ressourcen benötigt, dauert es länger, bis ein Angriff wirksam wird.

Apache verwendet auch viel Speicher. Wenn Sie mod_php verwenden, ist es noch schlimmer, weil PHP wird in jeden untergeordneten Apache-Prozess geladen. Dies bedeutet, dass sogar Anforderungen an statischen Inhalt (css/js/images) geladen werden PHP auch wenn PHP wird nicht verwendet. Sie können dieses Problem lösen, indem Sie stattdessen FastCGI verwenden. Mod_fcgid ist eine gute Option.

Es gibt auch andere Webserver, die ressourceneffizienter sind. Nginx ist mein Favorit. Es gibt auch Lighttpd. Viele Leute mögen Litespeed (Ersatz für Apache).

Wenn Sie bei Apache bleiben möchten, sollten Sie es so gut wie möglich optimieren. Deaktivieren Sie .htaccess. Hier ist eine gute Erklärung warum .

5
Luke
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 kann diese Art von Dingen automatisch und transparent basierend auf den Syslogs ausführen.

2
gmck

Um den http-Verkehr zu steuern oder zu blockieren, können Sie Folgendes verwenden:

Beachten Sie jedoch, dass diese Tools möglicherweise auch Webspider blockieren/verlangsamen und sich daher auf die Suchmaschinenoptimierung auswirken.

2
user130370