Frage Wie kann ich Hackerangriffe gegen phpMyAdmin blockieren?


Meine Website bekommt täglich tausende Zugriffe von verschiedenen IPs, die versuchen 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 irgendwelche dieser Versuche erfolgreich waren, aber sie müssen ihren Tribut an den Ressourcen des Servers und der Verschwendung von Bandbreite fordern, also 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 das auf Dauer verhindern?


31
2018-01-08 01:04


Ursprung


Tausende von Treffern pro Tag sind nichts. Haben Sie tatsächlich Leistungsschwierigkeiten oder nehmen Sie gerade an? Ein paar tausend 404s an einem Tag ist wirklich nichts. - MDMarra
Nein, ich habe keine Leistungsprobleme. Aber es nervt mich und ich fragte mich, ob ich irgendetwas tun kann. - amba88
Seien Sie vorsichtig bei der IP-basierten Blockierung - viele IP-Adressen landen bei legitimen Benutzern. Außerdem können einige legitime Benutzer als Teil eines Botnets infiziert sein. Wenn Sie eine IP-basierte Blockierung durchführen, stellen Sie bitte sicher, dass sie einen relativ kurzen Ablauf hat. - Bob
Keine Erwähnung von mod_security in diesem Thread, also Schau dir das an. Beachten Sie einen Kommentar unten, dass dies tatsächlich mehr Arbeit auf dem Server verursachen würde. Vielleicht mod_evasive wäre auch gut implementieren. fail2ban, aber das ist unten aufgeführt. - mbrownnyc


Antworten:


Mach dir keine Sorgen darüber. Die Bedienung eines 404 ist eine winzige, winzige Menge Arbeit für einen Webserver. Sie könnten wahrscheinlich zehn 404s pro Sekunde mit einem 486 bedienen. Die Bandbreite pro 404 ist vernachlässigbar; eine winzige GET-Anfrage und eine winzige 404-Antwort.

Ernst; Mach dir keine Sorgen. Dies ist nur ein Teil des Betriebs eines Servers im Internet.


41
2018-01-08 02:03



Hell-Banning: Serve eine normale Seite (200 OK) mit Gibberish-Ausgabe. Die Tools, die die Kinder verwenden, werden die gefundene Seite melden und sie müssen von Hand nachforschen (eine gefälschte Anmeldeseite wäre sicherlich ein Teufelsgerät) :) - arul
@arul - Einige Angreifer könnten dies als Herausforderung betrachten und aus Verzweiflung besonders auf deinen Server achten. Wäre hier eine kleinere oder andere 404 nützlich? Zum Beispiel, wenn der Host normalerweise einen 404 mit einem Support-Link anbietet, sollte / könnte er stattdessen einen einfachen 404 ohne Inhalt für diese Ziel-URLs bereitstellen? - Freiheit
Der Zweck besteht darin, den Gegner zusätzliche Ressourcen (Zeit) aufzuwenden, um die Ergebnisse zu analysieren. Wenn Sie einen 404 erhalten, wissen Sie, dass der Angriff nicht funktionieren konnte. Das OK-Ergebnis variabler Länge ist [ohne weitere Untersuchung] nicht von den erwarteten Ergebnissen zu unterscheiden. Sie führen diese Scans durch, weil Geduld nicht ihre Tugend ist, also demotiviere die Hölle aus ihnen und sie hören auf :) - arul
Für Bonuspunkte gib eine statische Seite zurück, die genau wie die echte phpmyadmin-Seite aussieht, aber völlig funktionslos ist. - captncraig
Beachten Sie, dass String-Matching (z. B. mod_sec oder anderswo) den Server nur dazu bringt, härter zu arbeiten als einfach einen 404 zu senden (was nicht vorgeschlagen wurde, ich notiere ihn hier, falls jemand darüber nachdenkt). Dies sind nur Geräusche, die Sie sicher übertönen können, vorausgesetzt, Ihr Setup ist ordnungsgemäß gesichert. - Tim Post♦


Leider funktioniert das Internet so. Ignoriere es einfach. Tausende Bots / Trojaner scannen das Internet. Quell-IP wird immer zufällig sein. Es gibt kein Heilmittel.

Die einzige 100% ige Lösung zum Eliminieren dieses Datenverkehrs ist unten dargestellt: enter image description here

Eine Alternative ist:
 - mit https / http von Port 80/443 zu etwas anderem wechseln. Bots suchen normalerweise nicht nach http-Servern auf allen anderen 65k-Ports.
 - Verwenden Sie VPN, um sich mit dem Server zu verbinden (ich denke, das ist nicht möglich, wenn Sie eine öffentliche Website hosten).


36
2018-01-08 02:00



LOL +1 für das Diagramm :-) Ich habe dieses nervige Problem (wie wir alle) auf einer statischen Seite und das ist die nützlichste Antwort. - Dave Everitt


Was du willst ist Fail2Ban (Angenommen, das ist eine Linux-Maschine, hast du 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 von derselben IP-Adresse, je nachdem, wie Sie sie konfigurieren), wird sie normalerweise über IPTables blockiert. Normalerweise wird dies verwendet, um fehlgeschlagene Authentifizierungsversuche gegen SSH oder Webserver zu blockieren.

Sie konfigurieren es so, dass sie für eine bestimmte Zeit verbannt werden (das können Minuten sein, können Tage sein ... hängt davon ab, wie hartnäckig sie sind), nach denen das Verbot abläuft, es sei denn, sie versuchen es erneut.

Wie blockiert dies phpmyadmin scannen Bots?

Es kann genauso leicht verwendet werden, um übliche Anzeichen eines Angriffs zu erkennen, wie den Versuch, auf nicht existierende phpmyadmin-Ordner zuzugreifen. Sie müssen den richtigen regulären Ausdruck herausfinden, um diesen Versuchen zu entsprechen, und sicherstellen, dass Sie keine legitimen Benutzer blockieren.

Die Konfiguration in dieser Blogbeitrag kann wörtlich funktionieren oder einige Feinabstimmungen für die Einrichtung erfordern.

Warum sollte ich sie blockieren? Die 404-Fehler kosten nicht viel

Blocking sie in iptables hat einige Nutzen - die Chancen sind, wenn sie für phpmyadmin Sicherheitslücken zu überprüfen, können sie versuchen, andere Dienste für Schwachstellen sowie bis sie treffen etwas, das funktioniert. Wenn man sie verbannt, werden die meisten Bots / Scripts nach einer Weile aufgeben und sie werden zu besseren Zielen übergehen.

Auch wenn die Scans nicht viel kosten (es sei denn, sie finden tatsächlich eine Sicherheitslücke), überfluten sie Ihre Logs, was es schwerer macht, erfolgreiche Angriffe und Probleme mit Ihrem Webserver zu sehen.

Wie der Kommentar unten sagt, benötigt Fail2ban einige Systemressourcen. Aber nicht viel. Zumindest kann ich sagen, dass ich nie ein Performance-Problem hatte, das ich Fail2ban zuordnen konnte. Ich hatte jedoch Leistungsprobleme durch sehr aggressive Skripte, die versuchen, Passwörter brutal zu erzwingen oder tausende von SQL-Injection-Versuchen und andere Exploits pro Sekunde auf meinem Server auszulösen. Wenn sie auf Firewall-Ebene blockiert werden, benötigt FAR weniger Ressourcen, als sie auf der Server- / Anwendungsebene zu blockieren. Es kann auch erweitert werden, um benutzerdefinierte Skripte zu verwenden, um IP-Adressen zu verbieten. Anstatt sie in IPtables zu verbieten, können Sie sie in einer Hardware-Firewall verbannen oder eine E-Mail an jemanden senden, damit Sie sich beschweren können zu ihrem ISP oder lassen Sie Ihr Datencenter sie auf ihren Firewalls blockieren.

Irgendwelche anderen Tipps?

Es wird EMPFOHLEN, dass Sie einige IP-Adressen, die Sie kontrollieren, auf die weiße Liste setzen, damit Sie sich nicht versehentlich aussperren.


29
2018-01-08 02:22



das wird eine Verschwendung von Ressourcen sein :) Ich denke, du wirst mehr CPU-Zyklen auf Fail2ban verwenden als auf einfach mal 404 zu bedienen :) - Bartłomiej Zarzecki
@ BartłomiejZarzecki Bessere Sicherheit erfordert immer mehr Ressourcen - user11153
@ heinrich5991 wird es nach dem blockieren zuerst Versuche. Für einige Scans ist das kein Unterschied, aber für Scans, die mehrere Versuche auf dem Server versuchen, ist ein großer Unterschied. - Grant
Fail2ban (oder ähnlich) wird hoffentlich für mehr als nur / phpmyadmin sein. Vorausgesetzt, er hat irgendeine Art von Remote-Zugriff, F2B Typ Blockieren (3 Passwörter und Sie ... sind ... weg!) Ist für mehr als nur 404s. - WernerCD
Wenn Sie so etwas tun, stellen Sie sicher, dass das Verbot relativ schnell abläuft (maximal einige Stunden), oder Sie riskieren, legitime Benutzer auszuschließen, wenn der Angriff von einer dynamisch zugewiesenen IP stammt. - Jens Neubauer


Was ich mache, ist ein kleines Skript in das entsprechende Verzeichnis zu schreiben, so dass es ausgeführt wird, wenn jemand auf / phpmyadmin / zugreift. Dieses Skript führt nur iptables (unter Linux) aus, wodurch die IP-Adresse blockiert wird, die 30 Minuten lang auf das Skript zugreift (danach löscht ein Cron-Job die iptables-Kette, der die IP-Adresse hinzugefügt wird).

Der Vorteil gegenüber fail2ban ist, dass Sie keine Ressourcen für die Analyse des Syslog / Access-Logs verwenden. Der Nachteil ist natürlich, dass Sie nicht nach etwas anderem suchen, außer auf diese sehr spezifische Adresse zuzugreifen.

Warum tue ich das? Sicher, eine 404 zu bedienen wäre für den Server einfach, aber ich will nicht, dass sie herumstochern, einfach so. Ich möchte die Zeit ihres Werkzeugs verschwenden und warten, bis der Server antwortet, und es erneut versuchen, bis es schließlich aufgibt. Wenn du sie nicht blockierst, werden sie es versuchen viel von verschiedenen URLs, bevor es schließlich weitergeht - manchmal über tausend. Abhängig von dem Tool, könnte es "nett" sein und diese innerhalb von ein paar Stunden ausräumen, oder es könnte sich einfach nicht interessieren und deinen Server mit allen innerhalb von Minuten zerstoßen.

Warum liefere ich keine gültige Seite? Ihr Tool hört möglicherweise auf, Sie zu scannen und alarmiert den Skiddie, der es ausführt - wer dann das manuell überprüfen muss. Die Kehrseite davon ist, dass sie Ihrem Server einen viel genaueren Blick geben, als sie hätten, wenn ihr Scan Sie nicht in ihren Ergebnissen erscheinen lassen würde. Vielleicht werden sie ein bisschen mehr herumstöbern, vielleicht ein paar Port-Scans, vielleicht machst du sie wütend, und sie starten ein DoS, um zu sehen, ob sie irgendetwas tun können. Sie einfach zu blockieren - was aus ihrer Sicht den Server zum Zeitpunkt des Zugriffs auf das phpmyadmin-Skript aussperrt - ist effektiv, um die Zeit ihres Tools zu verschwenden und unerwünschte Aufmerksamkeit zu vermeiden.

Wenn du phpMyAdmin auf dem Server hast, kann es eine effektive Lösung sein, sie in ein separates Verzeichnis zu stellen und die Passwortregelung deines Webservers (.htpasswd für Apache) zu verwenden, um den Zugriff zu blockieren, bevor irgend etwas erreicht wird.


3
2018-01-08 13:17



Klingt wie eine gute Alternative ... aber erfordert das nicht, dass der Webserver das Skript mit Root-Rechten ausführen kann? - Grant
Passen Sie den Alias ​​für Tools wie phpMyAdmin an. Einfache Änderung an der Konfigurationsdatei, um sie in adminMyPhp oder chrisPhpAdmin zu ändern ... oder etwas, das nicht Skript-kiddied ist. - WernerCD
Sorry für die späte Antwort - es tut (unbedingt) nicht. Sie können sudo (mit der sudoers-Datei) verwenden, damit der Webserver ein bekanntes Skript (und genau dieses Skript) mit root-Berechtigungen ausführen kann. Dieses Skript würde (als Parameter) die IP akzeptieren und sie gegen einen regulären Ausdruck prüfen ([0-9] + \. [0-9] + \. [0-9] + \. [0-9] + ) um sicherzustellen, dass es nichts Ungewöhnliches injiziert. - Aaa


FWIW beschränken wir den Zugriff auf / phpmyadmin / nur auf Whitelist-IP-Adressen.

Wir verwenden auch mod_evasive (auf apache2), um DOS / schlecht benützte Skriptangriffe zu verhindern.


0
2018-01-09 09:04





Binden Sie das mysql-Admin-Tool an die Maschinen-Loopback-Adresse 127.0.0.1

Verwenden Sie dann ssh mit Portweiterleitung, um auf Ihr Admin-Back-End zuzugreifen.

fügen Sie eine zusätzliche Sicherheitsebene hinzu, die ziemlich transparent sein kann.


0
2018-01-13 12:19





Der beste Weg, den wir gefunden haben, ist, den Ordner, in dem phpmyadmin ist, mit einem Passwort zu schützen. Benutze auch nichts, was sich auf phpmyadmin als Ordnernamen bezieht: pma, phpmy, etc ...


-4
2018-01-08 14:39



Von der Frage: None of these directories exist, I don't even have phpmyadmin on my server. - Er fragt nicht, wie er seine bestehenden Installationen aushärten soll ... er fragt, was er mit Dingen tun soll, die es nicht gibt. Sie können nicht umbenennen PMA oder was hast du, wenn es nicht existiert. - WernerCD