Skip to content

By Тодор in Linux

Това е елементарна защита на хост с отворен достъп по SSH. Налага се поради огромния брой сканиращи роботчета и злонамерени персонажи, които опитват да налучкат пароли за достъп.
Логиката на тази защита е – следи се лог файла /var/log/secure и при наличие на повече от 5 грешни опита за влизане през SSH блокира достъпа на IP адреса чрез iptables правило.

Изваждане на списъка с „провинилите“ се адреси:

# cat /var/log/secure | grep "]: Failed " | awk -F "from " '{print $2}' | awk '{print $1}' | sort | uniq -d -c | awk '{if ($1 > 5) print $2}' > /ssh-banned.txt
(всичко е на един ред)

Всички адреси, които са правили повече от 5 неуспешни опита да влязат през SSH ще се запишат в /ssh-banned.txt.

Следва да се блокира достъпа на тези адреси.
Добавя се това в началото на firewall скрипта, който ползвате:

#!/bin/bash
SSHBAN=/ssh-banned.txt
if [ -f $SSHBAN ]; then
    for BAN_IP in `cat $SSHBAN`
        do
            iptables -A INPUT -s $BAN_IP -j DROP
        done
fi

Скрипта парсва файла с адресите и добавя блокиращо iptables правило за всеки адрес от него.

За автоматизиране се добавя в cron:

*/10 * * * * cat /var/log/secure | grep "]: Failed " | awk -F "from " '{print $2}' | awk '{print $1}' | sort | uniq -d -c | awk '{if ($1 > 5) print $2}' > /ssh-banned.txt && /etc/rc.d/rc.fw

Приемам че firewall-ът е в /etc/rc.d/rc.fw, необходимо е дой да се стартира винаги след като списъка с баннатите адреси се опредни. Променете го с пътя до вашия.

(Примерът е за Red Hat базирани дистрибуции)

Tags: , , , , ,

Comment Feed

No Responses (yet)



Some HTML is OK

or, reply to this post via trackback.