Home > Linux > Mit iptables gegen SSH Brute-Force Attacken

Mit iptables gegen SSH Brute-Force Attacken

15. Februar 2005

Andrew Pollok beschreibt in seinen Blog eine sehr pfiffige Methode um mit den immer schlimmer werdenen Brute-Force Attacken auf den SSH-Dienst umzugehen:

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set \ 
--name SSH -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m recent --update --seconds 60 --hitcount 4 --rttl \
 --name SSH -j LOG --log-prefix "SSH_brute_force "
iptables -A INPUT -p tcp --dport 22 -m recent --update --seconds 60 \
 --hitcount 4 --rttl --name SSH -j DROP

Obiges erlaubt maximal 3 Verbindungs-Versuche pro Minute von jeder IP-Adresse im Internet. Sollte diese Marke überschritten werden muss eine Minute gewartet werden bis wieder Verbindungen zugelassen werden.

Update 22.08.2005: Siehe auch ssh brute force Blocker zum Dritten

Tags:

  1. 15. Februar 2005, 20:03 | #1

    Wenn man dann zusätzlich noc
    Wenn man dann zusätzlich noch seinen SSHd auf einen anderen Port als 22/tcp bindet, hat man eigentlich ziemlich Ruhe. (siehe sshd_config in der Direktive ‚Port‘)

    Meine Lösung momentan:

    – SSH übers Internet nur noch von einer handvoll trusted hosts
    – für SSH Zugriffe (zum Beispiel durch Dialup-Hosts) auf openvpn zurückgreifen und den Clients eine trusted IP geben.
    – wenn möglich SSH Zugriffe nur noch übers Management-Lan erlauben

    Vielleicht etwas viel Aufwand für ‚Joe Average User‘ aber ein bis zwei Tipps davon kann jeder problemlos umsetzen wenn er Kontrolle übers System hat.

  2. 15. Februar 2005, 20:52 | #2

    Als recht effektiv hat sich b
    Als recht effektiv hat sich bei mir herausgestellt nur die Teledoof-Netze und beispielsweise den Arbeitsplatz durchzulassen. Falls man doch mal aus nem anderen Netz drauf zugreifen muss kann man die IP per PHP-Script freigeben.

  3. 16. Februar 2005, 05:17 | #3

    Ich hätte das gerne mal ausp
    Ich hätte das gerne mal ausprobiert, aber der LinkSys-Router, auf dem bei mir iptables läuft, hat das recent-Modul nicht. Somit funktionieren diese Regeln in diesem Fall leider nicht…

  4. 16. Februar 2005, 09:33 | #4

    Funktioniert das pro IP oder
    Funktioniert das pro IP oder bedeutet das, wenn ein Skript-Kiddie 3 mal versucht hat sich einzuloggen, komme auch ich innerhalb der nächsten 60 Sekunden nicht mehr zum Zuge?

    Ansonsten: super Idee!

  5. 16. Februar 2005, 12:21 | #5

    Update:

    iptables -A INPU
    Update:

    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
    

    This has the (arguably) added benefit of not hosing any established SSH connections from the host that has made too many SSH connections in a short period of time, and allows for whitelisting.

  6. giana
    12. Januar 2006, 15:39 | #6

    jmd. ner idee wie man das auf openBSD ( PF ) umsezt ? hier gibts kein ausfürhbares script was das ruleset verändert. nur ne /etc/pf.conf

Kommentare sind geschlossen