脚背内容

#! /bin/bash
# 获取所有登陆失败的信息,并将信息写入文件
# auth: Anger
# 2020-11-08

cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /usr/local/bin/black.list
#遍历文件
for i in `cat  /usr/local/bin/black.list`
do
  IP=`echo $i |awk -F= '{print $1}'`
  NUM=`echo $i|awk -F= '{print $2}'`
  #如果登陆失败次数大于10,则将IP写入黑名单
  if (( $NUM > 10 )) ; then
    grep $IP /etc/hosts.deny > /dev/null
    #判断上一语句的执行结果,如果hosts.deny存在该IP会返回大于0的值,不存在会返回0,则写入文件
    if [ $? -gt 0 ];then
      echo "sshd:$IP:deny" >> /etc/hosts.deny
    fi
  fi
done

脚本加执行权限后,建议将脚本写入crontab自动运行