刚刚买的云主机收到告警:【SSH暴力破解】,一开始没理会,后面发现这几个IP还经常来试。
这样放着也不是办法。
就简单的做了一些限制:
1.配置/etc/pam.d/sshd 做限制
/etc/pam.d/sshd 中增加
auth required pam_tally2.so deny=5 unlock_time=600 even_deny_root root_unlock_time=1200
even_deny_root 也限制root用户;
deny 设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户
unlock_time 设定普通用户锁定后,多少时间后解锁,单位是秒;
root_unlock_time 设定root用户锁定后,多少时间后解锁,单位是秒;
2.配置/etc/ssh/sshd_config
修改22端口-6666 (修改任意端口)
放开:MaxAuthTries (限制SSH客户端一次连接服务器,能测试的密码的) 建议的设置 3-6
image.png
完成步骤1,2后重启服务
systemctl restart sshd
3.写个脚本把暴力破解的IP加入黑名单
#!/bin/bash
tail -n1000 /var/log/secure |grep "Failed password for root from" |awk '{print $11}'|sort |uniq -c |awk '{if($1 >5) print $2}' > /tmp/.erro_ssh_ip
for i in $(cat /tmp/.erro_ssh_ip)
do
new_ip=`grep -c "$i" /etc/sshd.deny.hostguard`
if [ $new_ip == 0 ];then
echo "$i SSH brute force attack" >> /tmp/ssh_attack.log
echo "$i" >> /etc/sshd.deny.hostguard
else
echo "ip:$i is in deny"
fi
done
/tmp/.erro_ssh_ip 获取的暴力破解IP名单(多次尝试 > 5次的)
/etc/sshd.deny.hostguard ssh加入黑名单的IP
写了个循环,读取暴力破解名单,去黑名单循环,没有就追加 到黑名单。避免IP重复写在配置【/etc/sshd.deny.hostguard】
查看日志 /var/log/secure
这就是尝试破解ssh的IP名单执行脚本
没加入黑名单的IP 会 【>> /etc/sshd.deny.hostguard】,已经加入的返回 【echo "ip:$i is in deny"】
执行结果
定时任务每分钟执行
测试:
找一台机器ssh你的公网IP
ssh 110.110.110.100 (本机公网IP) 默认22 直接报错不通:
ssh 110.110.110.100 (本机公网IP) -p 6666 (修改的ssh端口)
多次尝试失败后,直接被拒绝
查看本地日志: /var/log/secure
有个IP多次尝试登陆并且失败查看sshd的黑名单变化:
121.52.252.24 刚刚脚本触发的IP
119.8.55.100 (之前触发的)
159.138.53.153 (之前触发的)
刚刚的xx.xx.xx.24被加到黑名单
网友评论