Verbot nicht aufgelöster IP-Adressen


7

Mein Server hat in den letzten zwei Tagen einige Male keinen Arbeitsspeicher mehr, weshalb die Site abgestürzt ist. Ich habe AWstats überprüft und festgestellt, dass Hunderte von ungelösten IP-Adressen protokolliert wurden und die Anzahl der Treffer von ihnen unangemessen erscheint:

Geben Sie hier die Bildbeschreibung ein

Ich werde die Top 10 IP-Adressen verbieten, da sie mir alle als Spam erscheinen. Aber es gibt noch andere Hunderte von IP-Adressen, die Tausende von Treffern verursachen, und ich weiß wirklich nicht, ob es sich um legitime Anfragen von Benutzern handelt, die Browser verwenden. Ich könnte sie alle mit htaccess verbieten, aber das scheint weder sehr praktisch noch eine langfristige Lösung zu sein. (Die Site erhält ungefähr 3 Millionen Seitenaufrufe pro Monat.)

Meine Fragen sind:

  1. Wie filtere ich legitime Benutzer aus unerwünschten Bots oder IP-Adressen heraus, die Inhalte entfernen?
  2. Soll ich alle "ungelösten IP-Adressen" sperren?
  3. Gibt es eine automatisierte Möglichkeit, Spam-IP-Adressen zu verbieten?

4
Sie beheben das falsche Problem. Was Sie versuchen sollten zu beheben, ist, warum der Site der Speicherplatz ausgeht?
Josh

1
Ist der Screenshot ein Beispiel für diese "ungelösten IPs"? Weil sie nicht ungelöst sind, weil sie unlösbar sind . Es scheint, dass AWStats einfach nicht konfiguriert ist, um diese IP-Adressen aufzulösen?
MrWhite

@ Josh Fair genug. Dies war das erste, was ich mir ansah, als ich das Speicherproblem fand. Und ich kann noch nichts finden, da die Abstürze so zufällig erscheinen. Ich bin nicht wirklich gut in serverseitigen Verwaltungssachen und lerne. Irgendwelche Vorschläge?
Yeti

1
Sicher, und tut mir leid, wenn mein Kommentar hart schien. Möglicherweise möchten Sie eine neue Frage stellen, in der die spezifischen Symptome der Speichererschöpfung und Ihre Konfiguration (PHP Fpm, Mod PHP, httpd.conf usw.) aufgeführt sind, da wahrscheinlich viel Hin- und Her-Kommunikation stattfinden wird
Josh

Antworten:


8

BOTS, CRAWLERS und SCRAPERS verwenden IP-Adressen in Blöcken. Es ist selten, dass eine IP-Adresse immer wieder dieselbe IP-Adresse verwendet. IP-Blöcke werden oft verkauft, gebracht und dann wieder verkauft! Einige dieser Blöcke werden aufgelöst, andere hängen nicht vom verwendeten Setup ab, da das Verbot der IP-Adresse für eine Auflösung nutzlos ist, da Sie das Risiko eingehen, echte Benutzer mit VPNs, Proxies usw. zu sperren, die möglicherweise ebenfalls nicht aufgelöst werden.

Das Sperren von IP-Adressen durch selbstüberwachende Protokolle ist nicht nur Zeitverschwendung, sondern funktioniert auch nur vorübergehend, bis die IP-Blöcke wieder gedreht werden. Der einfachste und beste Weg ... besteht darin, Ihren Server so einzurichten, dass Benutzer / Bots / Crawler, die viel zu schnell anfordern, vorübergehend blockiert werden, ähnlich wie bei Stack Exchange, und alle anderen Top-Sites, die wahnsinnigen Datenverkehr erhalten.

Wenn Sie nicht die Zeit oder die Fähigkeiten haben, Ihren eigenen internen Blocker zu bauen, ist es am besten, sich fail2ban anzuschauen.

Fail2Ban

Am besten stellen Sie sicherheitsrelevante Fragen zum Sicherheitsstapel, da dieser offensichtlich mehr Experten auf diesem Gebiet anzieht. Hier ist eine Frage und Antwort, die ich zum Einrichten von fail2ban mit einem temporären Block gefunden habe, wenn Besucher zu schnell fragen . Beachten Sie, dass Sie zusätzlich zum zeitweiligen Blockieren einer Dauerwelle auch einrichten können, falls diese dies weiterhin tun, während sie blockiert sind.

fail2ban ist in diesen Fällen eine einfach zu implementierende Lösung. Fügen Sie block-all-dem-noobs.confIhrem filter.dVerzeichnis eine Datei hinzu :

[Definition]
failregex = ^ -.*GET

Übersetzung: ein RegExp, um GET-Anfragen zu finden

Erstellen Sie dann einen neuen Eintrag in Ihrer jail.conf

[block-all-dem-noobs]
enabled = true
port = http,https
filter = block-all-dem-noobs
logpath = /var/log/httpd/access.log
maxretry = 100
findtime = 5
bantime = 600
action = iptables[name=HTTP, port=http, protocol=tcp]

Übersetzung: Durchsuchen Sie meine Datei access.log und blockieren Sie die IP-Adressen, die in 5 Sekunden 100 Anfragen gestellt haben, für 600 Sekunden (10 Minuten)

Ein Hauptnachteil ist jedoch, dass dies für NAT-Benutzer zu Fehlalarmen führen kann, da sie alle als eine IP-Adresse für Sie angezeigt werden.


Danke für die Antwort. Ich werde fail2ban auschecken. Wird dies jedoch Googlebot betreffen? Googlebot macht ~ 1 Million Anfragen / Tag auf der Website!
Yeti

2
Google hämmert Ihre Website nicht, es hat zeitliche Verzögerungen. Ihr Ziel sollte es sein, die Anzahl der serverseitigen Anforderungen pro Sekunde zu begrenzen. Dies spart Ihnen letztendlich Bandbreite und Ressourcen. Wenn böse Bots Ihre Website verschrotten möchten, dauert es lange, bis sie dies tun. Google hingegen hat Ihre Website schon lange gecrawlt und muss nicht hämmern, um sofort einen großen Teil zu erhalten Sie können jedoch jederzeit Google / Bing zu IP-Adressen auf der weißen Liste hinzufügen, aber Sie müssen sich darum kümmern. Ich persönlich aktualisiere nur das Hosting und verbiete Wiederholungstäter automatisch.
Simon Hayter

1

Verwenden Sie auf jeden Fall fail2ban, wie in Simons Antwort empfohlen, da es in seiner Standardkonfiguration vor anderen Problemen schützt. Sie erwähnen jedoch, dass auf dem Computer nicht genügend Arbeitsspeicher vorhanden ist und fail2ban Ihre Protokolle überwachen und auf diese Bots reagieren muss, die Arbeitsspeicher verwenden. Möglicherweise gehen Ihnen immer noch die Ressourcen aus, und wenn dies passiert, benötigen Sie etwas Effizienteres.

Ich empfehle Ihnen auch iptablesdirekt zu verwenden. Fail2ban verwendet iptables, um auf Angriffe zu reagieren, indem problematische IP-Adressen gelöscht werden. Es gibt jedoch keinen Grund, warum Sie nicht proaktiv sein und einfach einen Block bekannter fehlerhafter IPs vorab laden können.

Als Beispiel verwende ich Folgendes, um die gesamte IP-Palette von poneytelecom stillschweigend zu löschen:

sudo iptables -A INPUT -s 62.210.0.0/16 -j DROP

Um den gesamten Datenverkehr von den Top 8 der größten Treffer in Ihrem Screenshot effizient zu löschen, können Sie ihn verwenden

sudo iptables -A INPUT -s 123.30.175.0/16 -j DROP

Zwei wichtige Dinge, an die Sie sich erinnern sollten. Änderungen bleiben bei Neustarts nicht bestehen, und Sie können legitime Besucher aus diesen IP-Adressbereichen blockieren. Für letztere müssen Sie die IP-Adressen nachschlagen (versuchen Sie es mit WHOIS) und entscheiden, ob es sich um einen akzeptablen Verlust handelt. Für mich war poneytelecom definitiv.

Und um Ihre iptables-Regel (n) in jeder Debian-basierten Distribution dauerhaft zu erhalten, probieren Sie das iptables-persistentPaket aus. Installieren und aktivieren Sie es mit diesem Befehl:

sudo aptitude install iptables-persistent && sudo service iptables-persistent start

Wenn Sie später Regeln ändern, müssen Sie diese mit speichern sudo service iptables-persistent save. (Hinweis iptables-persistentkann auch netfilter-persistentin einigen Distributionen genannt werden)

Viel Glück und Vorsicht iptables, meine Beispiele funktionieren einwandfrei und werden getestet. Wenn Sie jedoch neue anpassen und testen, lesen Sie unbedingt die Manpages und verstehen Sie die Konsequenzen jeder neuen Regel. Andernfalls besteht die Gefahr, dass der Server für alle unzugänglich wird Möglicherweise müssen Sie ein neues Image erstellen und von vorne beginnen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.