最近我的阿里云主機(jī)的openssh老是被別人暴力破解。我已經(jīng)修改的ssh端口號(hào),也把openssh升級(jí)到了最新版OpenSSH9.0,雖然沒(méi)被暴破成功,但看著日志里的信息也是感覺(jué)很不爽。
于是寫了個(gè)定時(shí)腳本,功能是每10分鐘和每小時(shí)檢測(cè)一次,如果有一個(gè)IP在這兩個(gè)時(shí)間段內(nèi)輸入密碼錯(cuò)誤大于等于5次,就把IP封掉。
計(jì)劃任務(wù)里添加定時(shí)任務(wù)
#crontab -e*/10 * * * * /opt/script/check.sh >/dev/null 2>&1
腳本內(nèi)容如下:
[root@ttl ~]# cat /opt/script/check.sh #!/bin/bashPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/binexport PATHcheck(){ ip_list='$(lastb|grep -o '[0-9]\ .[0-9]\ .[0-9]\ .[0-9]\ .*[0-9]\ [0-9]\ :[0-9]'|grep '$1'|awk ' { sum[$1]=sum[$1] 1 }END{ for(i in sum) { if(sum[i]>=5)print i; } }')' echo '$ip_list'|while read line;do if [ '$line' != '' ];then if [ '$(iptables -nL|grep $line|grep 'dpt:9999')' == '' ];then iptables -I INPUT 1 -p tcp --dport=9999 -s $line -j REJECT fi fi done}last_10_minutes='$(date -d '-10 minutes' '%b %_d %H:%M'|awk '{print $1,$2,substr($3,1,4)}')'last_1_hour='$(date -d '-1 hour' '%b %_d %H')'check '$last_10_minutes'if [ '$(date %M|awk '{print substr($0,1,1)}')' == '0' ];then check '$last_1_hour'fi
成果
聯(lián)系客服