vServer fail2ban Alternative

  • Ich hab grad meinen Testserver Ubuntu 10.04LTS installiert um zu testen woran es liegen könnte... Nur leider hats funktioniert...


    Da ich keine Erfahrung mit Ubuntu habe und fail2ban beim testen mit meinem Script funktioniert hat, kann ich dir leider nicht weiter helfen als narayan es schon getan hat.
    Ich kann höchstens noch die Vermutung äußern, dass es irgendwo an den Dateirechten hakt... ansonsten Wünsche ich dir noch viel Glück bei der Fehlersuche und wenns nicht klappt... ich empfehle Debian :thumbup:


    Hmm ich hab nun auch extra den Server neu aufgesetzt mit Ubuntu 10.4LTS jedoch gehts bei mir wieder nicht!!! Ich verzweifel nun langsam


    [edit]
    habe nun spaßenshalber einmal der sh sowie der conf 0777 vergeben, das hat aber auch nicht geholfen.


    [edit2]
    habe es nun halbwegs zum laufen gebracht. der Fehler ist etwas kurios, wenn ich 3 mal falsche benutzer versuche, dann bin ich gesperrt, 3 mal falsches passwort jedoch funktioniert nicht.
    Da muss ich mir die regex noch einmal genauer ansehen, welche im Filter liegt.
    Jedenfalls an alle vielen Lieben dank für die Hilfe und weiterhin noch viel Erfolg.

  • Auszug aus der jail.conf

    Code
    # Default banning action (e.g. iptables, iptables-new, 
    # iptables-multiport, shorewall, etc) It is used to define 
    # action_* variables. Can be overriden globally or per 
    # section within jail.local file 
    banaction = iptables-multiport


    Sollte hier nicht sync stehen?

    Mit freundlichem Gruß


    Pionier

  • Hallo nochmals,


    Info vorne weg fail2ban scheint nun endlich anständig zu laufen :)
    Hab da gerade einmal eine 1 wöchige Testphase angesetzt.


    Nun aber zu meiner nächsten "Problematik".


    hat jemand bereits eine Lösung gefunden, wie man die W00tW00t und proxyheader etc sperren kann?


    Es steckt ja überall ein Muster dahinter
    jede Zeile, enthält:


    domain.tld:port zuBlockendeIp - - DATE "GET ******* HTTP/1.1" .........


    Das muss man doch in einer RegEx abbilden können...
    Leider bin ich mit den Exen nicht so fit und habe heute den ganzen Tag herum probiert und letztendlich doch alles gelöscht, weils nicht klappen wollte.
    Die Regexen, die man im internet findet, und welche auch sinnvoll erscheinen die greifen jedoch leider alle nicht (siehe zweiten Anhang)



    (domainname durch domain.tld:80 ersetzt!)

    Code
    domain.tld:80 58.218.199.147 - - [30/Aug/2011:12:03:01 +0200] "GET http://www.shopsline.com/proxyheader.php HTTP/1.1" 404 537 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
    domain.tld:80 31.210.72.42 - - [30/Aug/2011:18:05:17 +0200] "GET /user/soapCaller.bs HTTP/1.1" 404 471 "-" "Morfeus Fucking Scanner"
    domain.tld:80 94.102.209.211 - - [30/Aug/2011:18:22:52 +0200] "GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1" 400 509 "-" "-"
    domain.tld:80 58.218.199.147 - - [30/Aug/2011:20:43:39 +0200] "GET http://www.silkool.com/cgi-bin/son!fuckyou.php HTTP/1.1" 404 543 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
    domain.tld:80 58.218.199.250 - - [30/Aug/2011:20:44:49 +0200] "GET http://ppcfinder.net/judge.php HTTP/1.1" 404 527 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
    domain.tld:80 58.218.199.227 - - [30/Aug/2011:20:52:06 +0200] "GET http://financeande.com/feed/feed.php HTTP/1.1" 404 533 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
    domain.tld:80 109.203.96.174 - - [30/Aug/2011:21:09:05 +0200] "GET /horde//README HTTP/1.1" 404 469 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)"
    domain.tld:80 195.50.168.2 - - [30/Aug/2011:23:40:30 +0200] "HEAD / HTTP/1.0" 200 229 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 ( .NET CLR 3.5.30729)"
    domain.tld:80 58.218.199.250 - - [31/Aug/2011:00:13:05 +0200] "GET http://218.83.152.252/judge112233.php HTTP/1.1" 404 534 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"


    hier versuchte ich nur die w00tw00t zu ergreifen



    Ich weiß viele Sagen nun sicher ich kann diese getrost ignorieren...
    Jedoch bin ich von Grund auf Misstrauisch und somit vorsichtig :)


    Vielleicht hat ja jemand eine Idee, wie man dieses als Regex abbilden könnte oder es hat bereits jemand soetwas schon implementiert.


    Liebe Grüße Steffen

  • Diese Scanner würde ich einfacher mit einer globalen Rewrite-Rule im Webserver aussperren. Die IP von denen zu sperren lohnt sich kaum, da läuft sonst die Firewall mit Einträgen über und die gleiche IP siehst du zu 99% nie wieder.



    MfG Christian

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • killerbees19, eine Rewrite greift erst bei einer gültigen Anfrage. Der w00tw00t-Scanner macht aber keine gültige Anfrage. Zumindest Apache-Benutzer haben damit ein Problem. Vorgeschlagen wird eine iptables-Regel, siehe dazu How i got rid of the w00tw00t entries in my server logs .


    btw, die Strategie ist aber falsch. Wenn ich z.B. w00tw00t erfolgreich blocke, dann baut jemand einen w00tw01t und meine Regel greift nicht. Vielleicht wäre es einfach sinnvoller, den (Web)server schon im Ansatz sicher zu halten anstatt nur alte, bekannte Abgriffe abzuwehren.

    "Security is like an onion - the more you dig in the more you want to cry"

  • Danke für den Hinweis :)


    Dann noch ein anderer Vorschlag, hatte ich früher auf manchen Systemen im Einsatz: Logs nach diesem Muster scannen, danach aber nicht über die Firewall blockieren, sondern nur eine Config Datei für den Apache mit Deny-Anweisungen.



    MfG Christian

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • Vielen Dank ndurchx für das script und Anleitung!


    Hinweis:
    Bei mir wollte fail2ban nicht mehr starten (ohne fehlermeldung).
    Dann hab ich gesehen bzw. ist mir wieder eingefallen das bei debian(lenny) die /etc/fail2ban/jail.local anstatt der jail.conf maßgebend ist.
    (u.a. für die Änderung "action = %(action_)s" in action = sync).


    Vielleicht hilft es ja noch jemandem.

  • Wollte mich auch noch bedanken. Das Skript tut ja, nur fail2ban will nicht :(
    Was ich ich z.B. frage:
    in /etc/fail2ban/jail.conf gibt es die Zeile:

    Code
    banacion = iptables-multiport


    Das kann ja nicht gehen. Also muss da doch auch eine Änderung rein, oder?
    Ein banaction = action hilft leider auch nicht. Fail2ban startet einfach nicht (Restart Failed)


    Weiter unten steht ja nochmal action = sync


    Auch dort die Frage, woher fail2ban weiß, dass es die sync.sh nehmen soll?


    Edit: sorry, Debian Squeeze natürlich :)


    Danke für die Antwort

  • Also ist

    Code
    .sh

    egal? würde es dann auch gehen, wenn ich es sync.blabla nenne? :)
    Ok, aber die andere Frage is noch ungeklärt. Vielleicht sollte ich mich doch in fail2ban einlesen...


    Edit:
    so das ganze ist etwas mysteriös :)



    also starten kann ichs per Hand, aber irgendwie nicht mit init skript.
    in /var/log/fail2ban.log steht nur:

    Code
    2011-10-20 11:49:56,110 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports ssh -j fail2ban-ssh
    iptables -F fail2ban-ssh
    iptables -X fail2ban-ssh returned 300
    2011-10-20 11:49:56,119 fail2ban.jail   : INFO   Jail 'ssh' stopped
    2011-10-20 11:49:56,140 fail2ban.server : INFO   Exiting Fail2ban


    In der fail.conf habe ich viele Dienste aktiviert und eben
    banation = action
    und action = sync


    geändert, weil es ja den iptables ERROR gibt...
    Wo ist mein Denkfehler?

  • Lösung gefunden...
    ein

    Code
    root@vxxx:~# fail2ban-client reload
    WARNING 'findtime' not defined in 'apache-noscript'. Using default value
    ERROR  Error in action definition sync
    ERROR  Errors in jail 'apache-noscript'. Skipping...


    brachte mich nochmal auf die sync.conf. Dort ist beim kopieren das erste [ vor [Definition] verloren gegangen...
    Außerdem war ich ja der Meinung, dass in jail.conf action = iptables-multiport nicht gehen würde. Das MUSS aber so bleiben!
    Also sorry für das genervte :)

  • So ich hab mich nun auch dazu entschieden fail2ban zu nutzen
    und o.g. script von n/x installiert (danke an der Stelle :) )
    nachdem ich die Anpassungen für mein debian
    #!/bin/bash sowie die jail.conf in jail.local umbenannt habe ,
    läuft fail2ban (fast) gut. SSh wird erfolgreich gebannt, aber da ich da eh
    den Port umgelegt habe , kommt da eh nix an bis jetzt.
    wichtig war für mich der apache sowie proftpd und die beiden werden von fail2ban
    ignoriert obwohl ich beide in der jail.locl freigeschaltet habe.eigene Tests nur
    dabei wollte ich gerade solche Sachen Blocken:

    Quote

    85.88.195.35 - - [07/Dec/2011:10:52:37 +0100] "GET /cgi-bin/awstats.pl?configdir=|echo;echo%20YYYAAZ;uname;id;;echo%20YYY;echo| HTTP/1.1" 404 273 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0"
    217.79.178.204 - - [06/Dec/2011:08:34:45 +0100] "GET /phpmyadmin/main.php HTTP/1.0" 401 518 "-" "-"

    geht das überhaupt oder denke ich da falsch?
    was genau überwacht f2b am apache?

    It's me, only me, pure michi 🦆

    RS 1000 SAS G8 | Cyber Quack

    VPS: 50 G7 |B Ostern 2017|200 | Karneval | piko

    WH: SmallEi | Adv17 Family |4000 SE|1000 SE

  • danke dir Dragon
    kann das jemand bestätigen oder verneinen?

    It's me, only me, pure michi 🦆

    RS 1000 SAS G8 | Cyber Quack

    VPS: 50 G7 |B Ostern 2017|200 | Karneval | piko

    WH: SmallEi | Adv17 Family |4000 SE|1000 SE

  • Man kann mit fail2ban praktisch alles überwachen, was in ein log geschrieben wird, man braucht nur die richtige regex...
    In deinem Fall würd ich mir mal mod_security fürn apache ansehen, der könnte sowas vllt auch abfangen.

  • Danke für den Tipp
    habs mal installiert und erstmal auf nur logging laufen

    It's me, only me, pure michi 🦆

    RS 1000 SAS G8 | Cyber Quack

    VPS: 50 G7 |B Ostern 2017|200 | Karneval | piko

    WH: SmallEi | Adv17 Family |4000 SE|1000 SE

  • da ich nun schon einige Tage F2B im Einsatz habe, und der fleissig gebannt hat


    (zumindest wird es in fail2ban.log so dokumentiert), ist nach ein paar Test herausgekommen,


    dass die IP's garnicht im VCP eingetragen werden.
    Zugangsdaten wurden richtig eingetragen im Script,
    sofern die Kundennnummer akzeptiert wird, aber das wird ja beim
    regulären login auch.


    führe ich nun das script per Hand aus bekomme ich ne 500:


    Was muss also noch geändert werden am script?
    gruss
    michi

    It's me, only me, pure michi 🦆

    RS 1000 SAS G8 | Cyber Quack

    VPS: 50 G7 |B Ostern 2017|200 | Karneval | piko

    WH: SmallEi | Adv17 Family |4000 SE|1000 SE

    Edited 2 times, last by extremmichi ().