Über den Author / Internet / SSH Banlist

SSH Banlist

~1 Min. Lesezeit

Remotezugänge zu Clients und PCs sind ein beliebtes Angriffsziel.
Bei Linux nennt man diesen SSH und läuft standardmässig auf Port 22.

Wenn man Diesen nicht ändern möchte, fallen einem schnell mehrere fehlerhafte Logins von Bruteforce Angriffen ins Auge.

Ich entschied mich, den Server mit iptables abzusichern (Linux Firewall).

Folgende Rules sorgen dafür, das ein User maximal 3 Mal ein falsches Passwort eingeben kann und danach vor verschlossener Türe steht:

iptables -N SSH_WHITELIST
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

Mit folgendem Befehl kann man eine IP / Host auf die Whitelist setzen:

iptables -A SSH_WHITELIST -s DEINEIP -m recent ––remove ––name SSH -j ACCEPT

Wer gleich die Attaker komplett sperren möchte, kann dies mit folgendem Script tun:

#!/bin/bash
iptables ––flush

iptables -N SSH_WHITELIST
iptables -A SSH_WHITELIST -s DEINEIP -m recent ––remove ––name SSH -j ACCEPT
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

ssh_line=/tmp/ssh_line
touch $ssh_line
all_ip=/tmp/blacklist
touch $all_ip
merge_ip=/tmp/blackmerge
touch $merge_ip
black_ip=/var/log/blacklist
touch $black_ip
grep SSH-Bruteforce /var/log/syslog > $ssh_line
cut -d = -f 5 $ssh_line | cut -d \ -f 1 | sort | uniq > $all_ip
echo -n „“ > $merge_ip
cat $all_ip | sort | uniq > $merge_ip
cat $black_ip | sort | uniq >> $merge_ip
cat $merge_ip | sort | uniq > $black_ip
file=`cat $black_ip`
for ip in $file; do
iptables -I INPUT $rules -s $ip -j DROP
echo “ $ip banned“
done

Download: sshcheck.sh

Dieses Script als Cronjob all Minute aufrufen und iptables freut sich über die Blocking rules.

About Stefan

avatar

Ein männlicher IT Nerd, durchstöbert das Web nach speziellen Gadgets, unentbehrlicher Software und Alles was man im IT Sektor nicht verpassen darf.

Immer hilfsbereit wenn Probleme zu lösen sind oder das Unmögliche umgesetzt werden sollte.

Weitere interessante Artikel

PHP Trojaner – Wettbewerb

~2 Min. LesezeitIn der Serie der PHP Trojaner gibt es noch viele weitere Möglichkeiten zum …

PHP Trojaner (Teil 4: Codierte Uploader Infektion)

~2 Min. LesezeitNicht jeder PHP Trojaner kann auf den ersten Blick identifiziert werden, was der …

2 Kommentare

  1. avatar

    Vieleicht liegts nur am Blog der was verschluckt, aber vor Parameter wie „dport“ gehören natürlich zwei „-“ damit das Ganze auch funktioniert 🙂

    Liebe Grüße
    Wanja

  2. avatar

    Stimmt, da gehörten noch viel mehr Doppelte Bindestriche hin…
    Der Blog hat die verschluckt, ich zwinge es ihm nun auf, danke für die Info.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

eMail-Benachrichtigung bei weiteren Kommentaren.
Auch möglich: Abo ohne Kommentar.