Verzeichnisscanner verhindern

Dieses Thema im Forum "Server Administration" wurde erstellt von shadowcast, 25. Apr. 2014.

  1. shadowcast

    shadowcast Member

    Hallo,

    mich nerven seit geraumer Zeit Log-Einträge wie:
    Code:
    94.102.49.168 - - [25/Apr/2014:13:12:03 +0200] "HEAD /mysqlmanager/scripts/setup.php HTTP/1.1" 404 163 "-" "-"
    85.214.49.51 - - [12/Apr/2014:14:22:47 +0200] "GET /phpMyAdmin-2/main.php HTTP/1.0" 404 500 "-" "-"
    
    Die dürfte sicherlich jeder Admin kennen und sollten einen wohl auch nicht allzu beunruhigen. Dennoch mache ich mir im Moment Gedanken, wie ich dem einen Riegel vorschieben kann.

    Auf meinen Server läuft bereits Ossec, welche die Scans auch erkennt und meldet. Ossec ist aber so eingestellt, dass er keine Sperren verhängt.
    Dafür verwende ich die CSF Firewall, in welcher man durchaus auch eigene Regex eintragen kann.

    Dies klappt so aber auch nur mit der eigentlichen access.log des Apache. Für jeden Benutzer ist ja dann noch ein eigenes, welches natürlich weder von Ossec noch von CSF angesehen wird.

    Nun Frage ich mich, ob es dafür denn schon elegante Lösungen dafür gibt?
    Evtl. genau diese 404 Fehler in eine allgemeine Datei zusammenfassen, welche dann von CSF überwacht wird und die Sperren verhängt werden?
    Auch eine Möglichkeit wäre eine eigenes Script, welches per Cronjob z.b. alle 10 Minuten sämtliche Benutzerlogs durchsieht und die gefundenen Zeilen zusammenfasst? Fraglich ob das aus Ressourcensicht überhaupt rentabel ist?

    Was denkt ihr?

    LG
     
  2. nowayback

    nowayback Well-Known Member

    wenn mich nicht alles täuscht, sollte man das auch problemlos mit fail2ban lösen können ;)


    *edit*
    Kurz gegooled
    Code:
    [Definition]
    failregex = (?P<host>[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}) .+ 404 [0-9]+ "
    ignoreregex = favicon\.ico
    
    Code:
    [apache-404block]
    enabled = true
    port = http
    filter = apache-404block
    logpath = /var/log/apache2/access.log
    bantime = 86400
    maxretry = 20
    
    Testen musst du es alleine ;)
     
    Zuletzt bearbeitet: 25. Apr. 2014
  3. shadowcast

    shadowcast Member

    auf das kam ich auch schon, aber werden da auch wirklich die logfiles der ganzen clienten gescannt?
    oder eben nur diejenige unter /var/log/apache2?
     
  4. wotan2005

    wotan2005 Member

    alle scannen geht so:
    Code:
    [apache-404block] 
    enabled = true 
    port = http 
    filter = apache-404block 
    logpath = /var/www/*/logs/access.log 
    bantime = 86400 
    maxretry = 20
    
     
  5. shadowcast

    shadowcast Member

    Hallo,

    ich versuche mich grad an dem Thema, bekomm es aber noch nicht ganz hin.

    Mir werden keinerlei access.logs eingelesen. fail2ban.log zeigt:
    Code:
    2014-04-27 00:38:39,083 fail2ban.comm   : WARNING Invalid command: ['set', 'apache-404', 'addlogpath', '/var/www/meine.domain.de/log/access.log']
    
    Achtet bitte, dass ich hier auf eine Subdomain verweise. Hier vermute ich nämlich den Fehler, dass Fail2Ban da nicht rein kommt.
    Der Pfad ist natürlich korrekt und die Datei auch vorhanden.
    Fail2Ban schreibt nur diesen einen Fehler, die anderen werden offensichtlich gar nicht erst versucht.

    Hier meine Configs:
    /etc/fail2ban/jail.local
    Code:
    [apache-404]
    enabled = true
    port = http,https
    filter = apache-404
    logpath = /var/www/*/log/access.log
    bantime = 86400
    maxretry = 6
    
    Hier die Definition:
    /etc/fail2ban/filter.d/apache-404.conf
    Code:
    [Definition]
    failregex = <HOST> - - \[.*\] "GET /.* HTTP/1\.[01]" 404 [0-9]+.*$
    ignoreregex =
    
    Den Ausdruck habe ich bereits überprüft, der liest mir die Einträge korrekt. Nur kommt Fail2Ban noch nicht dazu, die IPs auch zu bannen.
    LG
     
  6. nowayback

    nowayback Well-Known Member

    evtl. solltest du die logs in /var/log/ispconfig/httpd/meine.domain.de/ nehmen.

    Keine Ahnung ob es daran schon scheitert. Außerdem bin ich mir nicht sicher das es mit den * da drin klappt. Ich hab es bisher nie getestet, aber versuch es doch einfach mal mit dem kompletten Pfad bevor du versuchst alle einzubinden.
     
  7. shadowcast

    shadowcast Member

    Hallo,

    auch hier der selbe Fehler.
    Gebe ich ihm eine feste Domain domain.de ohne Subdomain, bindet er das Logfile korrekt ein.

    Mit dem Handy habe ich 404er Fehler erzeugt welche auch im Logfile stehen. Aber Fail2Ban macht dennoch nichts?

    Vermutlich hakt sichs mit meinem installierten CSF Firewall?

    LG

    PS. Er macht schon was. Ich gab mit TAIL nur die letzten Zeilen aus und wartete auf Änderungen. Zuvor hatte er aber schon:
    2014-04-27 01:24:15,995 fail2ban.actions.action: ERROR iptables -D INPUT -p tcp -m multiport --dports http,https -j fail2ban-apache-404
    iptables -F fail2ban-apache-404
    iptables -X fail2ban-apache-404 returned 100

    Das heißt ich sollte meine "banaction" anpassen???
     
    Zuletzt bearbeitet: 27. Apr. 2014
  8. shadowcast

    shadowcast Member

    Okay ich habe nun eine eigene:
    banaction = csf-ip-deny

    und unter:
    /etc/fail2ban/filter.d/fail2ban.conf

    Code:
    [Definition]
    actionstart =
    actionstop =
    actioncheck =
    actionban = csf -d <ip> Added by Fail2Ban for <name>
    actionunban = csf -dr <ip>
    
    
    Nun wird mir die eine Seite korrekt gebant.

    Fehlt nur noch dass ALLE Seiten-Logs geprüft werden.
    Ich hab inzwischen herausgefunden, dass es NICHT am * und auch nicht an der Subdomain liegt, sondern dass diejenige access.log ein nicht lesbarer Link ist???
    Verteh ich gerade selbst noch nicht.

    Sooo.

    aktueller Stand. Fail2Ban läuft und sämtliche Logs wurden geadded.
    Es lag an manchen access.logs. welches lediglich verlinkungen waren auf eine Datei, welche nicht vorhanden war. Keine Ahnung woher die kommen. Waren auch nur ein paar wenige.
    Befürchte jetzt habe ich misst gemacht denn ich hab von den betroffenen Seiten die verlinkungen entfernt...
     
    Zuletzt bearbeitet: 27. Apr. 2014
  9. shadowcast

    shadowcast Member

    Hallo,

    irgendwie mag das Ganze noch nicht ganz so.

    Aktuell wird mir wohl erst gebannt, wenn ich Fail2Ban neu Starte und die Logs bereits Einträge haben.
    Gehe ich allerdings mit meinem Smartphone her und provoziere 404er Fehler, bekomme ich keinen Ban zustande. Erst wieder nach Neustart von Fail2Ban.

    Gibt es da Laufzeiten in welchem die Logs durchsucht werden?
    Habe nun die FINDTIME auf 600 gestellt, mal sehen was in 10 Minuten ist?

    LG
     
  10. shadowcast

    shadowcast Member

    Ursache lag am BACKEND = auto

    Hier wird die Methode definiert, mit welcher Dateiänderungen erkannt werden. Hier steht auch dass Debian Probleme mit python-gamin hat.

    Der Wert auto, sowie gamin funktionieren nicht.
    Allerdings arbeitet fail2ban korrekt wenn der Wert auf polling steht.
     

Diese Seite empfehlen