查看Ubuntu登录日志:
cat /var/log/auth.log
发现我的服务器被ssh爆破
针对这一现象 我决定构造一个脚本 来防范这种爆破式攻击
具体思路就是通过脚本判定特定IP的登录失败次数 如果多于两次 关闭进程 并且ban IP
首先就是将登录失败的ip单独拎出来
cat /var/log/auth.log.1 | grep "Failed password" | awk '{match($0,/.*from (.*?) port/,a); print a[1]}'
然后进行去重:
cat /var/log/auth.log.1 | grep "Failed password" | awk '{match($0,/.*from (.*?) port/,a); print a[1]}'|sort|uniq
将这些信息写入到文件中 方便读取
写一个shell脚本对登录尝试次数进行统计
安装防火墙服务:
apt install firewalld
使用富命令来ban地址:
firewall-cmd --add-rich-rule="rule family=ipv4 source address= $line drop"
最后查看 firewalld
以下ip所发送的包都会被丢弃
整体代码:
cat /var/log/auth.log.* | grep "Failed password" | awk '{match($0,/.*from (.*?) port/,a); print a[1]}'|sort | uniq >/ban.txt
while read line
dotry_log=$(grep $line /var/log/auth.log.* | wc -l )#$num=grep $line /var/log/auth.log.* | wc -l #echo "$line : $try_log "if [ $try_log -ge 3 ]; thenfirewall-cmd --add-rich-rule="rule family=ipv4 source address=$line drop"echo "$line 已经被封禁"fi
done < /ban.txt
最后使用 crontab 重复执行