用户检测shh爆破攻击
当某一台客户机使用ssh的方式远程连接服务器,在一分钟(五小时)内输错密码3次,以此判定为爆破攻击,并记录IP地址,使用firealld防火墙对IP地址进行封堵
#!/bin/bash
#编写一个shell脚本,用户检测shh爆破攻击
#当某一台客户机使用ssh的方式远程连接服务器,在一分钟(五小时)内输错密码3次,以此判定为爆破攻击,并记录IP地址,使用firealld防火墙对IP地址进行封堵
# 定义日志文件变量
logfile=/var/log/secure
# 获取当天5个小时前的日志
# 先获取对应时间字段
#月 +%b显示月 LANG=C表示将获取出来的数字转译成英文
curr_month=$(LANG=C date +%b)
#日期 +%e表示截取对应的日期
curr_day=$(date +%e)
#5小时前的时间
five_hours_ago=$(date -d "5 hours ago" +%T)
#当前时间
curr_time=$(date +%T)
con_ip=$(awk '$1=="'$curr_month'" && $2=="'$curr_day'" && $3>="'$five_hours_ago'" && $3<="'$curr_time'" && $6=="Failed" && $9!="invalid"{print $(NF-3)}' $logfile | sort | uniq -c | awk '$1>=3{print $2}')
for i in $con_ip
do
firewall-cmd --add-rich-rule='rule family=ipv4 source address="'$i'" service name=ssh rejiect' --timeout=3600
done