SSH Bruteforce-Attacks mit IPTables stoppen

Ich bin gestern im Rootforum auf eine interessante Diskussion zum Thema SSH-Attacken gestoßen, die mich dazu gebracht hat eine relative einfache Lösung mit IPTables einzurichten (nachdem ich den Kernel aufgrund fehlender Module neu gebaut habe). IPTables checkt mittels des “recent”-Modules auf eingehende neue Verbindungen und damit lässt sich super arbeiten: Kommen innerhalb einer definierten Zeit zu viele neue Verbindungen auf Port 22 rein, wird die entsprechende IP einfach auf diesem Port geblockt und Ruhe is 😉
Meine Lösung funktioniert jetzt wie die hier beschriebene:
[geshi lang=bash]#!/bin/sh

ipt=”/sbin/iptables”

$ipt -F
$ipt -X

$ipt -N SSH_WHITELIST
$ipt -A INPUT -p tcp –dport 22 -m state –state NEW -m recent –set –name SSH
$ipt -A INPUT -p tcp –dport 22 -m state –state NEW -j SSH_WHITELIST
$ipt -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
$ipt -A INPUT -p tcp –dport 22 -m state –state NEW -m recent –update –seconds 60 –hitcount 4 –rttl –name SSH -j DROP[/geshi]

Das bedeutet: kommen innerhalb einer Minute mehr als 4 neue Verbindungen rein wird einfach dicht gemacht. Funktioniert! Man muss nur aufpassen, dass man sich nicht selbst aussperrt, aber dafür gibt es die SSH_WHITELIST-Chain, in die man mit
[geshi lang=bash]iptables -A SSH_WHITELIST -s meinetolleipadresse -m recent –remove –name SSH -j ACCEPT[/geshi] neue vertrauenswürdige Hosts einfügt.
Damit dürften sich die elenden Logeinträge wie “error: Could not get shadow information for NOUSER” erledigt haben! Das Skript von Alexander Newald verwende ich nun nicht mehr, da mir diese Lösung besser erscheint und es mit dem Skript auch des öfteren Probleme wegen Logrotate gegeben hat.

edit://
Hier die benötigten Module für IPTables:[geshi lang=bash]Module Size Used by
ipt_ULOG 5476 –
ipt_state 720 –
ip_conntrack 31464 –
ipt_REJECT 4976 –
ipt_LOG 5520 –
ipt_recent 8252 –
iptable_filter 1328 –
ip_tables 15680 -[/geshi]

6 Replies to “SSH Bruteforce-Attacks mit IPTables stoppen”

  1. Tausende SSH-Login-Versuche innerhalb kürzester Zeit. Eigentlich sollte das im schlimmsten Fall ein Ärgernis sein, weil man sein Passwort sicher gewählt hat oder gleich auf Key-Authentifizierung setzt. Direkter root-Login ist natürlich auch abgeschaltet. Trotzdem kann es auch nicht schaden über dieses kleine Skript entsprechende Versuche zu blocken.

    (via Webhosting Blog)

  2. hi,
    müssen diese regeln zwingend in der input stehen oder kann man sie auch in eine tabelle packen, die dann an input angehängt wird?
    problem, ich komme von allen ips mehr als 4 mal pro minute auf den rechner, egal ob mit korrektem oder falschen user, die ip wird nicht gesperrt.
    btw. wie und wo entsperrt man wieder?
    danke für jede hilfe

  3. Hi, ich kann dir da momentan nicht weiterhelfen, ich nutze schon seit einiger Zeit fail2ban (was dasselbe macht) und bin mit iptables grad nicht mehr so fit.

    Evtl. kann einer der Mitleser helfen.

Leave a Reply

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