sshd被攻擊的自動防御方法
你是否遇到過sshd服務被暴力破解的糾結一幕呢?有人可能會說我只允許我們公司的ip登陸不就行了嗎,但是當公司使用的是ADSL撥號方式上網(wǎng)的時候就顯的力不從心了,無法確定ip來源了。當然了如果公司使用的是固定ip,就忽略之。
本文只是提供一個方法,具體適用于誰,適用于什么環(huán)境,還需自己斟酌。我的系統(tǒng)是CentOS5.4,借助swatch這個工具來實現(xiàn)自動防御,完全實現(xiàn)自動化,自動封鎖攻擊ip,并在指定時間后解封,這個過程完全自動化。
1、安裝swatch
# yum --enablerepo=bjtu install swatch
版本應該>=3.2.3
之前用3.1.1版本,有點問題
2、創(chuàng)建配置文件
# touch ~/.swatchrc
# vim ~/.swatchrc
因為sshd服務的日志文件為/var/log/secure,加入要監(jiān)控的配置項,如下
#
# bad login attempts
watchfor /sshd.+ Failed password for .+ from ([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/
echo magenta
bell 1
exec "/root/swatch.sh $1"
保存退出
3、創(chuàng)建攻擊檢測到后的處理腳本
# touch /root/swatch.sh
# vim /root/swatch.sh
加入如下腳本:
#!/bin/sh
IP=$1
echo $IP >> /root/sshd_blocked_ip_list
/sbin/iptables -I INPUT -s "$IP" -p tcp --dport 22 -j DROP
/usr/bin/at "now + 1 hours" <<< "/sbin/iptables -D INPUT -s $IP -p tcp --dport 22 -j DROP"
修改腳本文件權限
# chmod u+x /root/swatch.sh
4、運行swatch
# /usr/bin/swatch -t /var/log/secure --daemon
Note:
攻擊者的ip被記錄到sshd_blocked_ip_list里了
另外可以通過查看防火墻規(guī)則看到正在被封鎖的ip
# iptables -L -n
以及自動清除的計劃任務
# atq
至此便完成了一個sshd暴力破解自動防御系統(tǒng),由于監(jiān)控日志時swatch可能有延遲,所以防火墻規(guī)則里可能會有多于一條的相同規(guī)則,但是不影響功能。