Server mit Fail2Ban absichern

  • Danke @Eisen
    Also in die my.cnf eintragen und dann mysqld neustarten wie es beschrieben wird in den FAQ
    MySQL stoppen mit:

    Code
    1. svc -d /service/mysqld; /usr/local/pd-admin2/bin/mysqladmin -p`cat /opt/pdadmin/etc/mysql_rootpw.conf` shutdown


    und MySQL starten mit:

    Code
    1. svc -u /service/mysqld


    weiter nix oder ?


    WebTeufel


    versuch mal als Failregex mal dies:

    Code
    1. failregex = [[]Warning[]] Access denied for user '\w+'@'<HOST>' [(]using password: (YES|NO)[)]


    Bei mir sah das Resultat dann so aus:

  • Würde ich genau so machen bzw. mache ich auch immer, wenn ich das Logging mal bei einem MySQL aktivieren will. Nur bevor Du die my.cnf bearbeitest solltest Du den MySQL stoppen, dann eintragen in der my.cnf und dann wieder starten. Wobei ich es bis jetzt bei pd-admin noch nie probiert habe, aber da es sonst klappt denke ich mal, dass es klappen sollte.

  • Ich greife das Thema mal wieder auf. Leider zwingen einfache DOS Atacken den Server regelmässig in die Knie. Ob Wordpress diese Atacken anzieht oder ob hier einfach nur ins Blaue geschossen wird, entzieht sich meiner Kenntnis. Fakt ist, dass man einfach die Seite massiv "abruft", es entstehen also keine Fehler, nur haufenweise GET Einträge im access_log.


    Gelöst habe ich das wie folgt:


    /etc/fail2ban/jail.conf

    Code
    1. [http-get-dos]
    2. enabled = true
    3. port = http,https
    4. filter = http-get-dos
    5. action = iptables-multiport[name=http-get-dos, port="http,https", protocol=tcp]
    6. sendmail-whois-lines[name=http-get-dos-Banned,dest=root, sender=fail2ban@localhost]
    7. logpath = /usr/local/pd-admin2/logs/access_log
    8. maxretry = 500
    9. findtime = 300


    /etc/fail2ban/filter.d/http-get-dos.conf (Kommentare fürs Forum gelöscht)

    Code
    1. [Definition]
    2. before = common.conf
    3. failregex = ^\S+ <HOST> .*$
    4. ignoreregex =


    Damit werden nun konsequent IPs ausgesperrt, die mehr als 500 Hits in 300 Sekunden verursachen.

    Das Funktioniert. Ich hab versucht, mit einem Tool eine Homepage runter zu laden, da hat es gegriffen.

    False positives halte ich für Unwahrscheinlich, beobachte das aber erstmal ein paar Tage.


    Was leider nicht geklappt hat, war das einbinden der Umgebungsvariable __hostname aus der common.conf, warum auch immer.

    Deswegen ist diese Zeile wieder auskommentiert.


    Viele Grüße,

    Martin

  • Um einen Post vom Anfang dieses Threads nochmal aufzugreifen: hat es jemand umgesetzt, blocklist.de einzubinden? Zum einen fürs Reporting, zum anderen aber auch zur Nutzung der gesammelten IPs. Ich blick das irgendwie nicht...


    Viele Grüße,

    Martin

  • nitram70

    Deine Ansatz finde ich ziemlich brutal. 300 Hits in 300 Sekunden hat mal schnell mal beisammen. Braucht sich nur jemand durch Seiten mit vielen Bildern klicken.


    Ich würde an Deiner Stelle mal prüfen, auf welche Seiten hier genau los geballert wird bei so einer Attacke und dann dies etwas expliziter sperren. Für mich hat sich der von mir dokumentierte Ansatz für Wordpress sehr bewährt: fail2ban für Wordpress


    Die gesamte Serverlast ging dadurch erheblich zurück - bei bisher null Kundenbeschwerden.

  • Die Lösung mittels fail2ban halte ich auch für ungeeignet. Die "Angriffe" sollten zuerst analysiert werden. Ich konnte in letzter Zeit vermehrt SQL Injection Versuche beobachten. In der Regel werden die Seiten von PHP ausgegeben. Durch die vielen Auftufe werden viele PHP Prozesse erzeugt, wodurch die Last steigt. ImFalle von SQL Injection Versuchen lässt sich dies besser durch mod_security verhindern.


    fail2ban für Wordpress nutze ich auch. Ist auch getestet und funktioniert. Hab es aber nicht weiter beobachtet, um den tatsächlichen Nutzen darzulegen.


    blocklist nutze ich nicht. Ich verwende derzeit abuseipdb.com. Jedoch nur für das Reporting. Die Integration in fail2ban war ziemlich einfach und problemlos.

  • Deine Ansatz finde ich ziemlich brutal. 300 Hits in 300 Sekunden hat mal schnell mal beisammen. Braucht sich nur jemand durch Seiten mit vielen Bildern klicken.

    Da hast Du recht, bisher habe ich einen False Positive. Allerdings komme ich mit der benannten Lösung "fail2ban für Wordpress" nicht weiter, wobei auch dies bei mir läuft, aber nur eben zuviele gescheiterte Login-Versuche abfängt. Das aber sehr effizient.

    Problem hier ist, dass man die Seiten offenbar einfach nur aufruft und dadurch versucht, den Server in die Knie zu zwingen. Ich vermute auch, dass es egal ist, ob es sich um Wordpress handelt oder nicht. Ich hab halt nur Wordpress Hosting auf dem Server.


    Ich würde vielleicht mit den Regeln mal etwas rumspielen, Aufrufe aus dem Verzeichnis wp-includes und wp-content ignorieren, dann hat man sicher "echtere" Seitenaufrufe.

  • Noch ein Nachtrag: Es hat sich gezeigt, dass das abwarten von 500 Hits in 300 Sekunden sehr gut funktioniert. Bisher keine False Positives, aber sicherheitshalber sollte man das einige Zeit überwachen.


    Nun hatte ich heute und gestern Probleme mit Serverlast und festgestellt, dass 80% der Zugriffe aus China kamen, hierbei arbeite ich gerade daran, mittels iptables und ipset ungewünschte Subnetze komplett auszusperren. Das ganze verursacht bei mir enorme Last, hat mit fail2ban aber nicht direkt was zu tun, daher gehe ich hier nicht weiter darauf ein.
    Ich verwende diese Anleitung: https://askubuntu.com/question…block-china-with-iptables


    Wo ich aber aktuell dran bin ist das aussperren von Bots. Ob das die Jobboerse oder sonstige Marketing-Bots sind, eigentlich sollte alles ausser Google draussen bleiben.

    Auch das verursacht nicht unerheblich last und die Summer der Maßnahmen bringen hoffentlich Besserung.


    Hier meine Konfiguration:


    jail.conf

    Code
    1. [blockbots]
    2. enabled = true
    3. port = http,https
    4. filter = blockbots
    5. logpath = /usr/local/pd-admin2/logs/access_log
    6. maxretry = 2
    7. findtime = 600


    filter.d/blockbots.conf

    Code
    1. [Definition]
    2. blockbots = 360Spider|AhrefsBot|AwarioRssBot|Baiduspider|BLEXBot|BuiBui|CCBot|coccoc|crawler|datasift|dotbot|EmailCollector|Exabot|Finderlein|Genieo|Jimdo_Feed_Fetcher|linkdexbot|meanpathbot|Mail.RU_Bot|Mediatoolkitbot|MJ12bot|NetSeer|Pixray|proximic|publiclibraryarchive|Riddler|SemrushBot|SEMrushBot|SentiBot|SeznamBot|SEOkicks|SiteExplorer|Sogou|SurveyBot|TrackBack|trendiction|Uptimebot|WebEMailExtrac|webmeup|Yandex
    3. failregex = ^\S+ <HOST>.*(?:%(blockbots)s).*$
    4. ignoreregex =