-
实验目标
如果有用户有远程登录,并且失败多次,直接封锁IP,强制端口对方的SSH链接 -
实验背景
SSH远程登录多次失败,通过防火墙将其屏蔽,并发送通知 -
如何判断远程登录失败
通过查看ssh操作日志:/var/log/secure 来提取登录失败的特征进行判断,如果发现日志文件中多次出现Failed password,则可以判定为非法登录(暴力破解)。 -
脚本实现
#提取IP地址
1、ip=$(grep "Failed password" /var/log/secure | awk '{print $11}' | uniq)
2、grep "Failed password" /var/log/secure | awk '{print $11}' | tail -n 1
#使用firewalld富规则实现静止IP
firewall-cmd --add-rich-rule 'rule family="ipv4" srouce address="$ip" drop'
或
shell脚本
#脚本实现
failcount=$(grep "Failed password" /var/log/secure | wc -l)
if [ $failcount -gt 3 ]; then
ip=$(grep "Failed password" /var/log/secure | awk '{print $11}' | uniq)
firewall-cmd --add-rich-rule="rule family=ipv4 source address=$ip drop"
echo "登录失败超过3次,已阻止IP:$ip"
terminal=$(who | grep 192.168.102.120 | awk '{print $2}' | head -n -1)
pkill -kill -t $terminal
fi
已经链接的IP地址,将SSH强制断开,使用pkill命令将其杀掉。