Wie kann ich Hacking-Versuche auf phpMyAdmin blockieren?

35

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?

amba88
quelle
8
Tausende Treffer pro Tag sind nichts. Haben Sie tatsächlich Leistungsschwierigkeiten oder gehen Sie nur davon aus? Ein paar tausend 404s an einem Tag sind wirklich nichts .
MDMarra
Nein, ich habe keine Leistungsprobleme. Aber es nervt mich und ich habe mich gefragt, ob ich irgendetwas tun kann.
amba88
6
Seien Sie vorsichtig beim Blockieren von IP-Adressen. Viele IP-Adressen werden an legitime Benutzer weitergeleitet. Einige legitime Benutzer können auch als Teil eines Botnetzes infiziert werden. Wenn Sie eine IP-basierte Blockierung vornehmen, stellen Sie sicher, dass diese einen angemessen kurzen Ablauf hat.
Bob
Keine Erwähnung mod_securityin 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 vielleicht mod_evasiveauch gut umzusetzen . fail2ban, aber das ist unten aufgeführt.
mbrownnyc

Antworten:

42

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.

Mark Henderson
quelle
14
Höllenverbot: Servieren Sie eine normale Seite (200 OK) mit Kauderwelschausgabe. Die Tools, die die Kinder verwenden, melden gefundene Seiten und müssen von Hand untersucht werden (eine gefälschte Anmeldeseite wäre sicherlich ein Teufelsgerät) :)
arul
4
@arul - Einige Angreifer nehmen dies möglicherweise als Herausforderung und widmen Ihrem Server aus Trotz besondere Aufmerksamkeit. Wäre es hier überhaupt sinnvoll, einen kleineren oder einen anderen 404 zu bedienen? Wenn der Host beispielsweise normalerweise einen 404 mit einem Support-Link bedient, sollte / könnte er stattdessen einen einfachen 404 ohne Inhalt für diese Ziel-URLs liefern?
Freiheit
1
Der Gegner muss zusätzliche Ressourcen (Zeit) aufwenden, um die Ergebnisse zu analysieren. Wenn Sie einen 404 erhalten, wissen Sie, dass der Angriff nicht erfolgreich war. OK-Ergebnisse mit variabler Länge sind [ohne weitere Untersuchung] nicht von den erwarteten Ergebnissen zu unterscheiden. Sie führen diese Scans durch, weil Geduld nicht ihre Tugend ist. Demotivieren Sie sie also, und sie hören auf :)
arul
1
Für Bonuspunkte geben Sie eine statische Seite zurück, die genau wie die echte phpmyadmin-Seite aussieht, jedoch nicht funktionsfähig ist.
Captncraig
1
Bauen Sie für zusätzliche Bonuspunkte eine Verzögerung von 0,5 - 1 Sekunde ein. Dies wird die Zeit für das Laden durch legitime Benutzer nicht wesentlich verlängern, aber das Scannen, das die bösen Jungs machen, verlangsamen. (Sie müssen nur sicherstellen, dass Ihr Server Verbindungen länger als nötig offen hält und weiterhin legitime Anfragen verarbeitet.)
Moshe Katz,
38

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: Bildbeschreibung hier eingeben

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).

Bartłomiej Zarzecki
quelle
LOL +1 für das Diagramm :-) Ich habe dieses nervige Problem (wie wir alle) auf einer statischen Site und dies ist die nützlichste Antwort.
Dave Everitt
30

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.

Gewähren
quelle
6
das wird eine Verschwendung von Ressourcen sein :) Ich denke, Sie werden mehr CPU-Zyklen auf Fail2ban verwenden als auf einfach mal 404 dienen :)
Bartłomiej Zarzecki
4
@ BartłomiejZarzecki Bessere Sicherheit erfordert immer mehr Ressourcen
user11153
3
@ heinrich5991 wird es nach den ersten versuchen sperren . Für einige Scans macht dies keinen Unterschied, für Scans, die mehrere Versuche auf dem Server ausführen, jedoch einen großen Unterschied.
Grant
2
Fail2ban (oder ähnliches) wird hoffentlich mehr als nur / phpmyadmin betreffen. Angenommen, er hat irgendeine Art von Fernzugriff, dann ist der F2B-Blocker (3 Passwörter und Sie ... sind ... weg!) Für mehr als nur 404s.
WernerCD
3
Wenn Sie so etwas tun, stellen Sie sicher, dass die Sperre relativ schnell (maximal einige Stunden) abläuft. Andernfalls besteht die Gefahr, dass legitime Benutzer ausgesperrt werden, wenn der Angriff von einer dynamisch zugewiesenen IP-Adresse ausgeht.
Jens Neubauer
7

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.

Aaa
quelle
Klingt nach einer guten Alternative ... erfordert dies jedoch nicht, dass der Webserver das Skript mit Root-Berechtigungen ausführen kann?
Grant
1
Passen Sie den Alias ​​für Tools wie phpMyAdmin an. Einfache Änderung an der Konfigurationsdatei, um sie in adminMyPhp oder chrisPhpAdmin zu ändern.
WernerCD
Entschuldigung für die verspätete Antwort - tut es nicht (unbedingt). Sie können sudo (mit der sudoers-Datei) verwenden, um dem Webserver die Ausführung eines bekannten Skripts (und nur dieses Skripts) mit Root-Berechtigungen zu ermöglichen. Dieses Skript würde die IP akzeptieren (als Parameter), und Sie vergleichen sie mit einem regulären Ausdruck ([0-9] + \. [0-9] + \. [0-9] + \. [0-9] + ), um sicherzustellen, dass nichts Ungewöhnliches injiziert wird.
Aaa
1

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.

user204880
quelle
1

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.

Der Unix-Hausmeister
quelle
-4

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 ...

WeWatchYourWebsite
quelle
2
Aus der Frage: 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 umbenennen PMAoder was haben Sie, wenn es nicht existiert.
WernerCD