Skript-Kiddie-SSH-Attacken mit iptables abwehren

Gerade lese ich bei Jörn eine interessante Idee, wie man die Skript-Kiddie-Attacken, die in der letzten Zeit das sshd-Log zumüllen (Anmeldeversuche mit guest/guest, root/root) einschränken kann.


iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
iptables -A INPUT -p tcp –dport 22 -m state –state NEW -j SSH_WHITELIST
iptables -A INPUT -p tcp –dport 22 -m state –state NEW -m recent –update –seconds 60 –hitcount 4 –rttl –name SSH -j ULOG –ulog-prefix SSH_brute_force
iptables -A INPUT -p tcp –dport 22 -m state –state NEW -m recent –update –seconds 60 –hitcount 4 –rttl –name SSH -j DROP

Das erlaubt drei Zugriffe pro Minute auf den ssh-Dienst und macht dann für 60 Sekunden dicht. Sehr schick.

Die Whitelist muss natürlich entsprechend eingerichtet werden:

iptables -N SSH_WHITELIST
iptables -A SSH_WHITELIST -s $TRUSTED_HOST -m recent –remove –name SSH -j ACCEPT

Der Code-Schnipsel stammt ursprünglich von Andrew.

7 thoughts on “Skript-Kiddie-SSH-Attacken mit iptables abwehren”

  1. Das versuche ich gerade noch herauszubekommen. Es wäre ein bisschen ungeschickt, wenn ich aufgrund eines Skriptkiddies permanent ausgesperrt würde, da wäre der Sinn irgendwie verfehlt.

  2. hmm, ich habe bei mir SSH auf den Port 2200 gelegt. Bastle gerade an einem Schnipsel, das die Anfragen auf Port 22 wieder zurück auf die IP des Anfragenden routet… wenn ich mir das Script-Kiddie vorstelle, das in seinen eigenen Rechner einbricht und sich freut… *hehehe*

  3. Finde ich nicht. Wenn ein Depp meinen SSH flutet, will ich trotzdem noch draufkommen?
    Oder wird das per-IP gesperrt? Davon seh ich dort aber nichts, oder ist das irgendwo implizit drin?

    Dann wäre das natürlich sehr schick und würde in meinen Filter integriert werden 🙂

  4. Pingback: Hexagon Business Weblog
  5. Der Beschreibung zufolge sperrt das Script ja komplett bei 3 Fehlversuchen – gibt es da einhe Möglichkeit das doch nach IP-Adresse zu filtern?

    Zudem habe ich das Problem, dass ich diese Einträge nicht zu meinem iptables hinzufügen kann -> Fehler: “No chain/target/match by that name”…

  6. Das hier wird das ganze nach IP-Adressen automatisch sperren:

    -A INPUT -p tcp -m tcp –dport 22 -m recent –name SSH_CRACK –rcheck –seconds 180 –hitcount 3 -j DROP
    -A INPUT -p tcp -m tcp –dport 22 -m recent –name SSH_CRACK –set -j ACCEPT

    Somit hat man von einer IP 3 Versuche in 3 Minuten.
    Hat man seine 3 versuche innerhalb der 3 Minuten aufgebraucht wird man bis zum ende der 3 Minuten gesperrt.

    Funktioniert bei mir hervorragend.

Leave a Reply

Your email address will not be published. Required fields are marked *