rev="post-251" No Comments
Това е елементарна защита на хост с отворен достъп по 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 базирани дистрибуции)
Последни коментари