Wie kann ich verhindern, dass Clients nach IP-Adresse auf bestimmte URLs auf meinem Webserver zugreifen?

9

Wie kann ich eine IP-Adresse dauerhaft blockieren, die auf bekannte anfällige Seiten zugreift, z /phpMyadmin/. Ich verwende einen Debian-Server und sehe oft Bots oder Hacker, die meinen Server scannen, um Schwachstellen zu finden.

73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpMyadmin/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpMyAdmin/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpmyAdmin/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpmyadmin2/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpmyadmin3/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpmyadmin4/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"

Ich habe diese Frage zum Stackoverflow bereits beantwortet: So sichern Sie phpMyAdmin .

Ich möchte Bots daran hindern, Bandbreite zu beanspruchen.

Weiße Katze
quelle
4
Dadurch werden Ihre Protokolldateien bereinigt, die Sicherheit wird jedoch überhaupt nicht verbessert. Halten Sie phpmyadmin entweder immer auf dem neuesten Stand oder greifen Sie nur über localhost darauf zu (und blockieren Sie den gesamten anderen Datenverkehr). Tunneln Sie den Port über ssh, um auf den Remote-Server zuzugreifen.
Stefan M
Ich denke, es wird die Sicherheit verbessern, da es die böswilligen IP-Adressen blockiert, die versuchen, auf diese Site zuzugreifen.
Whitecat
@ Whitecat bedeutet der 404HTTP-Code Page not found. Wie spüren Sie, dass diese IPs IPs beleidigen? Basierend auf welcher Ausgabe entscheiden Sie sich, diese IPs zu blockieren?
Valentin Bajrami
Ich möchte die IP aufgrund der Tatsache blockieren, dass sie zu phpMyAdmin gehen. Ich habe meine Website gesichert und weiß, dass jeder, der diese Seite besucht, böswillig ist.
Whitecat
1
Warum erstellen Sie nicht ein.htpasswd
nicoX

Antworten:

18

Dies ist möglicherweise schwerer als Sie suchen, aber Sie können die Verwendung von fail2ban ( https://www.fail2ban.org ) in Betracht ziehen . Mit diesem Tool können Sie Ihre Protokolldateien überwachen und Adressen automatisch sperren, die Protokolle generieren, die mit einer Reihe anpassbarer Muster übereinstimmen.

Andy Dalton
quelle
5
Dies ist genau das Problem, fail2bandas behoben werden soll . Es ist ein bisschen schwer, aber andererseits sind die gewünschten Kriterien selbst ziemlich dynamisch. Alles in allem fail2banist es ungefähr so ​​leicht, wie Sie es versuchen werden, um diese Klasse von Problemen mit einem Standardwerkzeug zu lösen.
Bratchley
1
Nun, ich nehme an, Sie könnten ein suid-root-Binär-CGI schreiben und es als / phpmyadmin hosten, das die Firewall-Regel seines Aufrufers hinzufügt.
Joshua
7

Tu es nicht. Bestenfalls erreichen Sie nichts anderes, als Ihre Protokolle weniger überladen zu machen. Im schlimmsten Fall blockieren Sie legitime Besucher, die zufällig (über DHCP) eine IP-Adresse erhalten haben, die früher jemandem gehörte, dessen PC als Botnetzknoten infiziert war.

Das eigentliche Problem hierbei ist das Protokoll-Durcheinander. Es kann gelöst werden, indem Sie Ihre Protokollierung so konfigurieren, dass Anforderungen gelöscht werden, von denen bekannt ist, dass sie nach Vulns suchen, die Ihre Site nicht hat und nicht hat, weil Sie die Sicherheitsanfälligkeit nicht verwenden Frameworks, nach denen sie suchen. Wenn Sie sich Sorgen über einen vollständigen Verlust der Protokollierung machen (möglicherweise liefern sie Hinweise darauf, wer für einen anderen Angriff verantwortlich war oder wann ein Angriff begann usw.), drosseln Sie einfach mehrere Protokolleinträge für Junk-URLs von einer bestimmten IP in kurzer Zeit sollte besser funktionieren.

R .. GitHub HÖREN SIE AUF, EIS ZU HELFEN
quelle
6
fail2banVerbote sind vorübergehend - X Treffer eines schlechten Anmeldeversuchs innerhalb von Y Sekunden, Z-Minuten-Verbot mit konfigurierbarem XY und Z. Das Löschen von Protokollen aktiver Einbruchsversuche klingt für mich nach einer wesentlich gefährlicheren Wahl.
Shadur
2
Bei einer Wahrscheinlichkeit von 0,1% sollten legitime Benutzer dieser Instanz von phpmyadmin in der Lage sein, nur die Nachricht OP zu senden, um die Blockierung aufzuheben . Außerdem kann fail2ban einen Scan-Angriff ausschließen, bevor die nicht gepatchte oder Zero-Day-Sicherheitsanfälligkeit auf Ihrem Server auftritt.
Segfault
1
@Segfault: Es gibt vermutlich keine legitimen Benutzer von, /phymyadmin/da /phymyadmin/auf dem Server keine vorhanden ist (siehe: 404). Die fraglichen legitimen Benutzer sind vielmehr alle Benutzer der Site , die durch eine Firewall blockiert würden.
R .. GitHub STOP HELPING ICE
1
Das "Beste" beinhaltet tatsächlich das Blockieren weiterer Tests, einschließlich solcher, die möglicherweise tatsächlich erfolgreich waren. Das Herumspielen mit dem Protokollinhalt scheint auch eine gute Möglichkeit zu sein, Informationen zu verlieren, wenn Sie feststellen, dass Sie einen Fehler in Ihrem Filter gemacht haben. Wenn Sie sich Sorgen über Unordnung machen, benötigen Sie eine
Analyseplattform
2
Das andere verwandte Problem ist die zunehmende Verwendung von CGN. Ein ISP kann Hunderte von Kunden haben, die eine einzige IP-Adresse gemeinsam nutzen, wodurch die IP-Blockierung bestenfalls gefährlich wird, auch nur vorübergehend. Sie können einen legitimen Benutzer und einen aktiven Scan gleichzeitig von derselben Adresse aus haben.
Bob
3

Suchen Sie die deny 73.199.136.112Datei phpMyAdmin.conf in einem der httpd-Konfigurationsverzeichnisse und fügen Sie im Abschnitt Zulassen / Verweigern der Konfigurationsdatei eine erforderliche IP-Adresse im Abschnitt 2.4 hinzu. Ich habe ein Beispiel für die vollständige Konfigurationsdatei unten angegeben, in der ich die Einträge in umgekehrter Reihenfolge habe. Ich blockiere alles außer den erlaubten IP-Segmenten, um auf das Tool zuzugreifen.

[thebtm@server conf.d]# cat /etc/httpd/conf.d/phpMyAdmin.conf
# phpMyAdmin - Web based MySQL browser written in php
# 
# Allows only localhost by default
#
# But allowing phpMyAdmin to anyone other than localhost should be considered
# dangerous unless properly secured by SSL

Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin

<Directory /usr/share/phpMyAdmin/>
   AddDefaultCharset UTF-8

   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>
       Require ip 10.10.26
       Require ip 192.168.56
       Require ip 127.0.0.1       
       Require ip ::1
     </RequireAny>
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 10.10.25
     Allow from 192.168.56
     Allow from 127.0.0.1
     Allow from ::1
   </IfModule>
</Directory>

<Directory /usr/share/phpMyAdmin/setup/>
   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>
       Require ip 127.0.0.1
       Require ip ::1
     </RequireAny>
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1
     Allow from ::1
   </IfModule>
</Directory>

# These directories do not require access over HTTP - taken from the original
# phpMyAdmin upstream tarball
#
<Directory /usr/share/phpMyAdmin/libraries/>
    Order Deny,Allow
    Deny from All
    Allow from None
</Directory>

<Directory /usr/share/phpMyAdmin/setup/lib/>
    Order Deny,Allow
    Deny from All
    Allow from None
</Directory>

<Directory /usr/share/phpMyAdmin/setup/frames/>
    Order Deny,Allow
    Deny from All
    Allow from None
</Directory>

# This configuration prevents mod_security at phpMyAdmin directories from
# filtering SQL etc.  This may break your mod_security implementation.
#
#<IfModule mod_security.c>
#    <Directory /usr/share/phpMyAdmin/>
#        SecRuleInheritance Off
#    </Directory>
#</IfModule>
thebtm
quelle
Das ist fantastisch. Das Problem ist jedoch, dass es konstante Bots von vielen verschiedenen IPs gibt. Ich kann unmöglich mit jeder anderen IP Schritt halten, da ich zwischen 20 und 30 eindeutige bösartige IPs pro Tag erhalte.
Whitecat
2
Deshalb habe ich umgekehrt gezeigt, wo Sie den Segmenten, auf die Sie Zugriff haben möchten, erlauben und den Rest automatisch blockieren.
Thebtm
Alias /phpmyadmin /usr/share/phpMyAdmind /phpmyadminsollte aus Sicherheitsgründen in etwas anderes geändert werden. Alias /secret /usr/share/phpMyAdmind
NicoX
Ich habe die Standardkonfigurationsdatei, die mit dem Tool geliefert wurde, bei der Installation geändert und einige zufällige IP-Adressen erstellt.
Thebtm