Fail2Ban Script für die VCP API

  • Hallo zusammen,


    ich habe damit begonnen ein Script für die Firewall API zu schreiben, was mit fail2ban zusammen arbeiten soll. Der erste Schnellschuss ist fertig und funktioniert auch ganz gut. Ich würde euch mal bitten das Script anzuschauen und Verbesserungen vorzuschlagen.


    Update 2013-03-11:
    Da es nun stabil zu sein scheint gibt es auch eine eigene Projektseite: Netcup Firewall API Wrapper für Fail2Ban - Der Anwendungsentwickler


    Viele Grüße
    Christian


    Das Script im Gitweb: http://gitweb.fiae.ws/scripts.…ee/master:/linux/fail2ban
    Anleitung: http://gitweb.fiae.ws/scripts.…ail2ban/howto_install.pdf

  • Bei mir funktioniert leider iwas nicht.
    Im Log (/var/log/fail2ban.log), zeigt er mir nicht einmal die übliche Warnung an bei den 3 Falschen Logins ([Warn] ssh BAN ...), sondern die Log Datei zeigt nur an, dass Fail2Ban gestartet wurde, aber nix von fehlerhaften Logins.

    Code
    2012-04-11 14:42:46,082 fail2ban.jail   : INFO   Jail 'ssh' started


    Meine jail.conf sieht so aus:


    Ich habe das port = ssh direkt durch den Port ausgetauscht, hat aber auch nichts gebracht.
    In der iptables-multiport.conf ist der von dir vorgegebene Inhalt, und die PHP Datei liegt auch unter /etc/fail2ban/firewallapi.php


    Wo könnte denn der Fehler liegen ?
    Schon mal Danke im Vorraus :)

  • Mir fällt da gerade noch ein Problem auf:

    Code
    2012-04-12 01:28:34,310 fail2ban.actions: WARNING [ssh] Ban 123.142.29.76
    2012-04-12 01:28:47,068 fail2ban.actions: WARNING [ssh] 123.142.29.76 already banned
    2012-04-12 01:29:00,084 fail2ban.actions: WARNING [ssh] 123.142.29.76 already banned
    2012-04-12 01:29:12,096 fail2ban.actions: WARNING [ssh] 123.142.29.76 already banned
    2012-04-12 01:29:24,113 fail2ban.actions: WARNING [ssh] 123.142.29.76 already banned
    2012-04-12 01:29:36,127 fail2ban.actions: WARNING [ssh] 123.142.29.76 already banned
    ...


    So ging es dann noch eine ganze Weile weiter, bis 1:46. Ich hab eben ins VCP geschaut, und die Firewallregel steht drin (source IP 123.142.29.76, action DROP, ansonsten alles auf any), aber anscheinend kamen die Verbindungen trotzdem noch durch. Irgendwelche Ideen warum?

  • Hatte grade das selbe auf einem Server der schon länger mit dem Script läuft.
    Hatte vergessen das VCP Passwort durch das Webservice Passwort auszutauschen.


    Einfach mal das Script manuell mit DEBUG auf true aufrufen:

    Code
    object(stdClass)#2 (1) {
      ["return"]=>
      object(stdClass)#3 (2) {
        ["message"]=>
        string(16) "validation error"
        ["success"]=>
        bool(false)
      }
    }


    Kommt die Fehlermeldung stimmen die Anmeldedaten nicht. ;)

  • hallo!


    ich habe dasselbe problem. beim debug output steht kein passwortfehler, die rules werden hinzugefügt aber treten nicht in kraft. gibt es noch andere sachen die schiefgegangen sein könnten?

    SETUP: vServer Saturn (Debian Squeeze 64bit, Froxlor, apache2-FCGID, mysql, postfix, courier) :)

  • also ich habe mich bei sim direkt im IRC gemeldet, wir haben jetzt zusammen herausgefunden woran es bei mir lag.


    meine symptome waren: jemand überschreitet regeln, script bannt, aber verbindung ging für den gebannten trotzdem noch.


    der fehler lag nicht beim script sondern an meinen firewall regeln, ich hatte ein paar zu viele STATE mit established und related gefüllt, weswegen die verbindung trotzdem noch "durchkam". ich werde mich also über firewalls noch ein wenig informieren müssen.. :P


    jetzt funktioniert alles wie es soll, tolle sache! :)

    SETUP: vServer Saturn (Debian Squeeze 64bit, Froxlor, apache2-FCGID, mysql, postfix, courier) :)

  • Danke, ich glaub das wars :) Ich habe zwar kein STATE in meinen Regeln, aber LIMIT, ich glaube das hat hier den gleichen Effekt.
    Ich habe jetzt den umgekehrten Weg gewählt: Die Bann-regeln kriegen zusätzlich STATE = NEW,ESTABLISHED,RELATED gesetzt, und daraufhin kriege ich den Fehler zumindest nicht mehr reproduziert. Ich gucke jetzt mal, ob ich in den nächsten Tagen nochmal sowas im Log sehe. Wenn ja melde ich mich.

  • Hallo,


    erst einmal vielen lieben Dankfür das Script.
    Nun habe ich jedoch eine Frage, für welche mich so manch einer sicher steinigen möchte ^^
    Und zwar weiß ich gerade nicht, wie ich die Funktionalität manuell testen kann. Und wäre sehr glücklich darüber, wenn man mir einmal eine Beispielzeile posten könnte.
    Grund: ich habe dasscript eingebaut jedoch funktioniert es nicht.
    Nun möchte ich natürlich einschränken, woran es liegt und beginne somit bei 0 und möchte schauen, ob ich alles richtig eingebunden habe und obeine manuelle sperrung / entsperrung möglich ist.
    Wenn dieses geht, dann muss es ja entweder an der Regex liegen oder an der Einbindung der Logs generell :)


    Für eine potenzielle Hilfestellung / Musterlösung bin ich bereits Dankbar.


    Liebe Grüße


    Steffen

  • oh...
    blind bin ich auch noch :D


    Danke fürdie Rasche Antwort.
    Schauen wir doch mal, ob wir den Spaß zum laufen bekommen ^^


    Liebe Grüße


    Steffen



    [edit]
    Also ich bin nun schon einmal einen Schritt weiter gekommen....
    Der manuelle Aufruf funktioniert problemlos somit also auch das Script :)
    Im fail2ban log sehe ich nur, dass er die Logfiles läd (korrekt) und die Zeiten setzt, so wie es auch sein soll,,
    Wo anscheinend der Fehler liegt ist in der Erkennung der Einträge im Log, denn ich kann diese gewollt volllaufen lassen und fail2ban erkennt diese nicht.


    Die Einträge im Logfile sehen folgender maßen aus:


    Code
    [Fri Apr 20 19:22:06 2012] [error] [client 188.195.111.171] File does not exist: /var/www/default/test1bgf
    [Fri Apr 20 19:22:07 2012] [error] [client 188.195.111.171] File does not exist: /var/www/default/test1bgf
    [Fri Apr 20 19:22:07 2012] [error] [client 188.195.111.171] File does not exist: /var/www/default/test1bgf
    [Fri Apr 20 19:22:07 2012] [error] [client 188.195.111.171] File does not exist: /var/www/default/test1bgf
    [Fri Apr 20 19:22:07 2012] [error] [client 188.195.111.171] File does not exist: /var/www/default/test1bgf
    [Fri Apr 20 19:22:07 2012] [error] [client 188.195.111.171] File does not exist: /var/www/default/test1bgf
    [Fri Apr 20 19:22:07 2012] [error] [client 188.195.111.171] File does not exist: /var/www/default/test1bgf
    [Fri Apr 20 19:22:08 2012] [error] [client 188.195.111.171] File does not exist: /var/www/default/test1bgf


    die Regex, welche dieses erkennen sollte ist folgende:


    Code
    failregex = [[]client <HOST>[]] File does not exist: .*/~.*


    entweder habe ich etwas gewaltiges übersehen oder es passt in meinen Augen eigentlich...
    hat jemand eine Idee, woran es sonst liegen könnte?


    Wie gesagt fail2ban erkennt die richtigen Logfiles aber erkennt es nicht, wenn ich das Logfile gewollt so vollspamme...
    Einstellungen sind:


    maxentry 3
    findtime 2
    bantime 600



    liebe Grüße


    Steffen