Portscans, Login Versuche und mod proxy requests blocken? Evtl. Fail2Ban

  • Hallo,

    seid ein paar Tagen habe ich massive Portscans und Versuche (teilweise 10000 pro Tag von der gleichen IP) sich auf dem Server per SSH einzuloggen.
    Geht zwar nicht, da keine Root Anmeldung möglich, SSH Port gewechselt, nur mit SSH Key + Passwort + 2 FA.

    Trotzdem geht es mir auf die "Nerven".

    Gibt es keine Möglichkeit das ganze mit Fail2Ban etc zu blocken?
    Ich habe bereits eine Fail2Ban Regel, die läuft dabei aber ins Leere:

    enabled = true
    port = mein SSH Port
    filter = sshd
    maxretry = 1
    logpath = %(sshd_log)s
    backend = %(sshd_backend)s
    #findtime: 1 year
    findtime = 31536000
    #bantime: 1 year
    bantime = 31536000

    Immer wieder mal sind auch mod_proxy requests dabei (Nginx). Auch hier habe ich eine Regel, die aber nur selten Wirkung zeigt.
    [nginx-noproxy]

    enabled = true
    port = http,https
    filter = nginx-noproxy
    logpath = /var/log/nginx/access.log
    maxretry = 0
    #findtime: 1 year
    findtime = 31536000
    #bantime: 1 year
    bantime = 31536000

    Hat jemand Tipps?

    Danke

  • […] sei[t] ein paar Tagen habe ich massive Portscans und Versuche (teilweise 10000 pro Tag von der gleichen IP) sich auf dem Server per SSH einzuloggen.
    […] Gibt es keine Möglichkeit das ganze mit Fail2Ban etc zu blocken?

    Ad "etc": Ich bin mit knock[d] sehr zufrieden (siehe auch diesen Diskussionsfaden).

    VServer IOPS Comparison Sheet: https://docs.google.com/spreadsheets/d/1w38zM0Bwbd4VdDCQoi1buo2I-zpwg8e0wVzFGSPh3iE/edit?usp=sharing

  • Danke, aber wenn ich es recht verstehe schützt das dann verwendeten SSH Port. Es verhindert aber nicht das von mir angesprochene scannen nach dem richtigen SSH Port.

    Was ich mir vorstelle ist, dass eine IP nach 1 oder 2 Fehlversuchen auf welchem Port auch immer geblockt wird. Nein ich sperre mich damit nicht selbst aus:)

  • Ihr seid ja zimperlich ^^. Solche IPs sperre ich komplett auf Lebenszeit (meines Servers) direkt in der Firewall. Wer versucht meinen Server zu hacken muss mir auch keine Mails schreiben und keine Websites sehen. Oft sind es eh irgendwelche russischen oder chinesischen IPs, auf die ich gut und gern verzichten kann.

  • Ja 10000 Scans von der gleichen IP, aber eben mehrere. Bisher auch in der Firewall gesperrt. Hab aber keine Lust das immer manuell zu machen, daher die Frage ob es was gibt, was solche Brüder automatisch sperrt

    Jupp, wie erwähnt Fail2Ban mit recidive.
    "The recidive rule ban users for a longer period if they have been banned multiple time in a row"

  • Vll steh ich auf dem Schlauch. Aber so wie ich es verstanden habe schau, recidive wie oft eine IP schon gebannt wurde und die, die öfters gebannt wurde werden lange ausgesperrt.


    Die wurden aber bei mir nicht gebannt, s.o.

    Denn wenn der Filter zum bannen angesprochen hätte, wäre das Problem bei meiner Banntime von einem Jahr ja erledigt


    oder verstehe ich was falsch?

  • Wenn der ssh-Filter nicht greift

    experimentiere mit dem failrexex oder

    schreib doch mal einen eigenen Filter.

    Das ist nicht so schwer

    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

  • Mal abgesehen davon, dass Fail2Ban funktionieren sollte und das nur eine Konfigurationsfrage ist, würde ich auf jeden Fall zunächst mal solche Anfragen automatisch in der Firewall abfackeln. Das geht schneller, effizienter und sicherer als erst darauf zu warten, dass die Anfrage von SSH behandelt wird, dann abgelehnt und geloggt wird und dann Fail2Ban das Log auswertet und die Firewall scharf schaltet.


    Die Firewall lässt sich mit iptables, ipset und dem recent Modul schön einrichten: https://www.falk-online.eu/201…icherung-des-ssh-zugangs/ (siehe Abschnitt "Rate Limiting"). Idealerweise nimmt man heutzutage nftables statt iptables, aber dafür sind die Anleitungen noch etwas spärlich. Fail2Ban deckt dann noch weitere Fälle ab, die die Firewall selbst nicht erkennen kann.

  • Ja, das verlinkte Blog macht das nur für Port 22, aber das könnte man natürlich auch auf beliebige andere Ports anwenden. Man muss nur aufpassen, dass z.B. bei einem Webserver der HTTP Port sehr viel Verkehr haben wird. Wenn man da wie bei SSH jeden fünften Verbindungsversuch innerhalb einer Minute permanent blockt, hat man bald keine Leser mehr. ;)

  • Naja nur ein einzelner Port bringt natürlich nix, da alles von 1024 bis 65xxx abgegrast wird. Nehme ich dann z.B. port = 1024 -65xxx? Für jeden Port ne eigene Regel zu erstellen geht ja nicht.


    Bin erstaunt, dass man zu dem Ansatz nix im Web findet. Kann ja wohl nicht der einzige sein, den das nervt:)

  • Aus meiner Sicht sollte man nicht verwendete Ports komplett in der Firewall blocken und sich mit fail2ban auf die tatsächlich verwendeten Ports zu beschränken, wo es Sinn macht. Dass eine IP versucht, über einen x-beliebigen Port eine Verbindung zu deinem Server zu bekommen wirst du wohl nie verhindern können, selbst wenn dieser Versuch dann direkt von der Firewall geblockt wird. Außer die Firewall ist extern (Hoster, zusätzlicher eigener (v)Server als Proxy). Dann kann diese Firewall die unerwünschten Pakete gleich in die Ablage rund werfen und dein Server bekommt es dann gar nicht mit, hat somit auch keinen Aufwand damit und erzeugt folglich auch keine Logeinträge dafür.

  • Man macht alles zu und nur das auf was man will. Also Drop (kein Reject) als Default Regel und dann nur noch die Ports auf was man braucht (80 443 SSH und ggf. noch Mail). Das wars. Dann fail2ban drauf und das wars. Man wird immer Scanversuche sehen usw.

    Wir haben (in der alten Firma) diese Daten auch mit für Security Analysen usw. weiterverarbeitet. Das ist aber etwas anders. :)