要求:检查/var/log/secure日志文件,如果有主机用root用户连接服务器的ssh服务失败次数超过10次(10次必须使用变量),就将这个IP地址加入/etc/hosts.deny文件拒绝其访问,如果这个IP已经存在就无需重复添加到/etc/hosts.deny文件
结合计划任务每分钟执行一次,保障系统的安全,防止别人暴力破解ssh的密码
#!/bin/bash
#得到ssh登录失败的ip地址,失败次数超过10次
deny_ip=$(cat /var/log/secure |awk '/Failed password/ && $11 ~ /[0-9]/ {print $11}'|sort |uniq -c|sort -rn|awk '$1 >10 {print $2}')
#定义一个函数得到自己的ip地址
get_ip(){
local_ip=$(ip add|awk '/scope global/{print $2}'|cut -d / -f 1)
}
#添加到/etc/hosts.deny文件里,如果有就不添加了,没有就添加进去
for i in $deny_ip
do
get_ip
if [[ $local_ip == $i ]]
then
echo "自己的失败次数超过10次了 "
elif ! grep $i /etc/hosts.deny &>/dev/null
then
echo "sshd:$i" >>/etc/hosts.deny
fi
done