Meine Website erhält täglich Tausende von Treffern von verschiedenen IP-Adressen, die versuchen, auf Folgendes zuzugreifen:
/php-myadmin/
/myadmin/
/mysql/
... und tausende andere Variationen. Keines dieser Verzeichnisse existiert, ich habe nicht einmal phpmyadmin auf meinem Server.
Ich glaube nicht, dass einer dieser Versuche erfolgreich war, aber sie müssen die Ressourcen des Servers belasten und Bandbreite verschwenden, deshalb möchte ich sie, wenn möglich, stoppen. Ich habe eine Handvoll dieser IPs blockiert, aber sie kommen immer wieder mit neuen IPs zurück. Kann ich dies auf irgendeine Weise dauerhafter verhindern?
web-server
hacking
amba88
quelle
quelle
mod_security
in diesem Thread, also checkt das aus . Beachten Sie, dass ein Kommentar unten darauf hinweist, dass dies tatsächlich dazu führen würde, dass der Server mehr Arbeit leistet. Wäre also vielleichtmod_evasive
auch gut umzusetzen .fail2ban
, aber das ist unten aufgeführt.Antworten:
Mach dir keine Sorgen. Das Serving eines 404 ist ein winziger, winziger Arbeitsaufwand für einen Webserver. Mit einer 486 könnten Sie wahrscheinlich zehn 404 pro Sekunde bedienen. Die Bandbreite pro 404 ist vernachlässigbar gering. eine winzige GET-Anfrage und eine winzige 404-Antwort.
Ernst; Mach dir keine Sorgen. Dies ist nur ein wesentlicher Bestandteil des Betriebs eines Servers im Internet.
quelle
Leider funktioniert das Internet so. Ignoriere es einfach. Tausende Bots / Trojaner durchsuchen das Internet. Die Quell-IP wird immer zufällig sein. Es gibt kein Heilmittel.
Die einzige 100% ige Lösung, um diesen Datenverkehr zu eliminieren, ist nachfolgend dargestellt:
Eine Alternative ist:
- mit https / http von Port 80/443 auf etwas anderes zu verschieben. Bots suchen normalerweise nicht auf allen anderen 65k-Ports nach http-Servern.
- Verwenden Sie VPN, um eine Verbindung zum Server herzustellen (ich denke, dies ist nicht möglich, wenn Sie eine öffentliche Website hosten).
quelle
Was Sie wollen, ist Fail2ban (vorausgesetzt, dies ist ein Linux-Rechner, haben Sie nicht gesagt ...)
Was ist Fail2ban?
Fail2ban analysiert Systemprotokolle und sucht nach bestimmten regulären Ausdrücken, die blockiert werden sollen. Wenn eine Übereinstimmung gefunden wird (oder mehrere Übereinstimmungen mit derselben IP-Adresse, je nachdem, wie Sie sie konfiguriert haben), wird sie normalerweise über IPTables blockiert. In der Regel wird dies verwendet, um fehlgeschlagene Authentifizierungsversuche gegen SSH oder Webserver zu blockieren.
Sie konfigurieren es so, dass sie für eine festgelegte Zeitspanne gesperrt werden (kann Minuten sein, kann Tage sein ... hängt davon ab, wie dauerhaft sie sind). Danach läuft das Verbot ab, es sei denn, sie versuchen es erneut.
Wie blockiert dies phpmyadmin-Scan-Bots?
Es kann genauso einfach verwendet werden, um häufige Anzeichen eines Angriffs zu erkennen, wie beispielsweise den Zugriff auf nicht vorhandene phpmyadmin-Ordner. Sie müssen den richtigen regulären Ausdruck finden, um diesen Versuchen zu entsprechen, und sicherstellen, dass Sie keine legitimen Benutzer blockieren.
Die in diesem Blog-Beitrag angegebene Konfiguration funktioniert möglicherweise wörtlich oder erfordert einige Anpassungen für Ihr Setup.
Warum sollte ich sie blockieren? Die 404-Fehler kosten nicht viel
Sie in iptables zu blockieren, hat eine gewisse Bedeutung. Wenn sie nach phpmyadmin-Schwachstellen suchen, versuchen sie möglicherweise auch andere Dienste auf Schwachstellen hin, bis sie auf etwas stoßen, das funktioniert. Wenn Sie sie verbieten, geben die meisten Bots / Skripte nach einer Weile auf und sie bewegen sich zu besseren Zielen.
Selbst wenn die Scans nicht viel kosten (es sei denn, sie stellen tatsächlich eine Sicherheitsanfälligkeit fest), überfluten sie Ihre Protokolle, sodass erfolgreiche Angriffe und Probleme mit Ihrem Webserver schwerer zu erkennen sind.
Wie der folgende Kommentar besagt, benötigt Fail2ban einige Systemressourcen. Aber nicht viel. Zumindest kann ich sagen, dass ich noch nie ein Leistungsproblem hatte, das ich Fail2ban zuschreiben könnte. Ich hatte jedoch Leistungsprobleme durch sehr aggressive Skripte, die versuchten, Passwörter zu erzwingen oder Tausende von SQL-Injektionsversuchen und andere Exploits pro Sekunde auf meinem Server auszulösen. Das Blockieren auf Firewall-Ebene erfordert weit weniger Ressourcen als das Blockieren auf Server- / Anwendungsebene. Es kann auch erweitert werden, um benutzerdefinierte Skripts zum Sperren von IP-Adressen auszuführen. Statt sie in IP-Tabellen zu sperren, können Sie sie möglicherweise in einer Hardware-Firewall sperren lassen oder jemandem eine E-Mail senden, wenn dieselbe Person weiterhin versucht, Sie anzugreifen, damit Sie sich beschweren können zu ihrem ISP oder lassen Sie sie von Ihrem Rechenzentrum auf ihren Firewalls blockieren.
Irgendwelche anderen Tipps?
Es wird DRINGEND EMPFOHLEN, einige von Ihnen kontrollierte IP-Adressen auf die Positivliste zu setzen, damit Sie sich nicht versehentlich aussperren.
quelle
Ich füge ein kleines Skript in das entsprechende Verzeichnis ein, damit es ausgeführt wird, wenn jemand auf / phpmyadmin / zugreift. Dieses Skript führt nichts anderes aus, als iptables (unter Linux) aufzurufen, wodurch die IP-Adresse für 30 Minuten blockiert wird, die auf das Skript zugreift.
Der Vorteil gegenüber fail2ban ist, dass Sie keine Ressourcen zum Parsen des Syslog / Access-Logs verwenden. Der Nachteil ist natürlich, dass Sie nichts anderes suchen, als auf diese ganz bestimmte Adresse zuzugreifen.
Warum mache ich das? Sicher, ein 404 zu bedienen wäre für den Server einfach, aber ich möchte nicht, dass sie herumstöbern, einfach so. Ich möchte die Zeit ihres Tools verschwenden, darauf warten, dass der Server antwortet und es erneut versucht, bis es schließlich aufgibt. Wenn Sie sie nicht blockieren, probieren sie außerdem viele verschiedene URLs aus, bevor sie endlich weitermachen - manchmal über tausend. Abhängig vom Tool kann es "nett" sein und diese über ein paar Stunden verteilen, oder es ist einfach nicht wichtig, Ihren Server innerhalb von Minuten mit all diesen Komponenten zu versorgen.
Warum versende ich keine gültige Seite? Ihr Tool hört möglicherweise auf, Sie zu scannen, und alarmiert den Skiddie, der es ausführt. Dieser muss das dann manuell auschecken. Die Kehrseite davon ist, dass sie Ihren Server viel genauer betrachten, als sie es getan hätten, wenn Sie durch ihren Scan nicht in ihren Ergebnissen aufgetaucht wären. Vielleicht stöbern sie ein bisschen mehr herum, vielleicht ein paar Port-Scans, vielleicht werden sie verrückt, und sie starten eine DoS, um zu sehen, ob sie etwas tun können. Wenn Sie sie einfach blockieren - aus ihrer Sicht führt dies zu einem Timeout des Servers, sobald Sie auf das phpmyadmin-Skript zugreifen -, wird die Zeit Ihres Tools effektiv verschwendet und unerwünschte Aufmerksamkeit vermieden.
Wenn Sie phpMyAdmin auf dem Server haben, könnte eine effektive Lösung darin bestehen, es in einem separaten Verzeichnis abzulegen und die Kennwortkontrolle Ihres Webservers (.htpasswd für Apache) zu verwenden, um den Zugriff zu blockieren, bevor etwas darauf gelangt.
quelle
FWIW beschränken wir den Zugriff auf / phpmyadmin / nur auf IP-Adressen, die auf der Whitelist stehen.
Wir verwenden auch mod_evasive (auf Apache2), um DOS / schlecht verhaltene Skriptangriffe abzuwehren.
quelle
Binden Sie das MySQL-Admin-Tool an die Loopback-Adresse 127.0.0.1 Ihres Computers
Verwenden Sie dann ssh mit Portweiterleitung, um auf das Back-End Ihres Administrators zuzugreifen.
Fügen Sie eine zusätzliche Sicherheitsebene hinzu, die recht transparent sein kann.
quelle
Der beste Weg, den wir gefunden haben, besteht darin, den Ordner, in dem sich phpmyadmin befindet, mit einem Kennwort zu schützen. Verwenden Sie auch nichts, was sich auf phpmyadmin bezieht, als Ordnernamen: pma, phpmy, etc ...
quelle
None of these directories exist, I don't even have phpmyadmin on my server.
- Er fragt nicht, wie er seine vorhandenen Installationen härten soll ... er fragt, was er mit Sachen tun soll, die es nicht gibt. Sie können nicht umbenennenPMA
oder was haben Sie, wenn es nicht existiert.