Bruteforce na SSH to strasznie irytująca plaga, szanse na udane włamanie są niewielkie gdy admin dba o serwer.
Jednakże wiecznie zaśmiecone logi i sam fakt … no krew zalewa.
Opisałem już wcześniej metodę opartą o haslimit, działa dobrze ale… dziś dodamy jeszcze jedno rozwiązanie.
Powstał fajny projekt, sshbl.org – (the SSH blacklist), co 15 minut tworzona jest czarna lista adresów IP z których przeprowadzane są ataki.
W prosty sposób wykorzystamy tą listę.
mkdir /etc/ssh-brute
cd /etc/ssh-brute
touch ssh.brute
chmod +x ssh.brute
w plik ssh.brute umieszczamy zawartość:
————————————————————————————————–
#!/bin/bash
PATH=”/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin”
adresy=`cat /tmp/ipki | grep [0-9] | grep -v “#”`
for x in $adresy
do
iptables -D INPUT -s $x -j DROP
done
wget http://www.sshbl.org/lists/base.txt -O /tmp/ipki
adresy=`cat /tmp/ipki | grep [0-9] | grep -v “#”`
for x in $adresy
do
iptables -I INPUT -s $x -j DROP
done
————————————————————————————————–
Teraz do crona dodamy wywołanie skryptu:
*/15 * * * * root /etc/ssh-brute/ssh.brute &>/dev/null
Powodzenia
Update:
Kilka maszyn szalało przy dodaniu kolejnych paru tysięcy wpisów w iptables. Dlatego też pomyślałem o innej metodzie blokowania listy hostów z sshbl.org.
Padło na routing.
Gotowy skrypt:
######################################
#!/bin/bash
PATH=”/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin”
rm /tmp/ipki
wget -q http://www.sshbl.org/lists/base.txt -O /tmp/ipki
adresy=`route -n | grep \!H | awk ‘{print $1}’`
for x in $adresy
do
route del -host $x reject
done
adresy=`cat /tmp/ipki | grep [0-9] | grep -v “#”`
for x in $adresy
do
route add -host $x reject
done
###########################################
Działa wyśmienicie




15 września 2010 o 15:08
Nigdy w szczególności nie uczestniczy, ale teraz będę wiedział. Dzięki
25 września 2010 o 15:29
Masz tutaj drobny feler w skrypcie, cześć się powtarza
25 września 2010 o 15:29
cofam ostatnie