分析SSH登录尝试的日志文件,如果某个IP地址失败次数超过5次,加入黑名单

防止暴力破解脚本

这个脚本的主要目的是查找/var/log/secure日志文件中包含"Failed"的行,并统计每个IP地址失败的次数。如果某个IP地址失败的次数大于5,则将该IP地址添加到/etc/hosts.deny文件中,以禁止该IP地址访问sshd。
脚本需要有执行权限。你可以使用chmod +x script.sh命令给脚本添加执行权限。
确保/var/log/secure日志文件存在并且可读,/etc/hosts.deny文件存在并且可写。
脚本中的awk命令用于提取和统计IP地址,确保你的系统支持awk命令。
脚本中的sort和uniq -c命令用于对IP地址进行计数和去重,确保你的系统支持这两个命令。
脚本中的grep命令用于检查IP地址是否已经在/etc/hosts.deny文件中,确保你的系统支持grep命令。
脚本中的echo命令用于输出结果,确保你的系统支持echo命令。

#! /bin/bash
cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /opt/lianjie.txt
for i in `cat  /opt/lianjie.txt`
do
  IP=`echo $i |awk -F= '{print $1}'`
  NUM=`echo $i|awk -F= '{print $2}'`
   if [ $NUM -gt 5 ];then
      grep $IP /etc/hosts.deny > /dev/null
    if [ $? -gt 0 ];then
      echo "sshd:$IP:deny" >> /etc/hosts.deny
    fi
  fi
done

代码详细解读

以下是这段代码的详细解读:
cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /opt/lianjie.txt

这个命令首先读取/var/log/secure文件的内容(通常这是一个包含SSH登录尝试信息的日志文件),然后使用awk命令筛选出包含"Failed"的行。awk命令会打印出这些行的第三个字段($(NF-3)表示当前记录的字段数减3,即第三个字段)。然后使用sort命令进行排序,uniq -c命令统计每个IP地址出现的次数,最后使用awk命令将统计结果格式化为IP=次数的形式并输出到/opt/lianjie.txt文件。

for i in cat /opt/lianjie.txt

这个命令会读取上一步生成的/opt/lianjie.txt文件,并对文件中的每一行进行循环处理。
在循环体中,IP= echo $i |awk -F= ‘{print $1}’ 命令会取出每行的等号前的内容(即IP地址),然后NUM= echo $i|awk -F= '{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 2}̲' 命令会取出等号后的数字,并…IP:deny到该文件。这样,如果一个IP地址尝试失败的次数超过5次,它将被禁止访问sshd。
总的来说,这个脚本的主要作用是:分析SSH登录尝试的日志文件,如果某个IP地址失败次数超过5次,则禁止该IP地址访问sshd。

你可能感兴趣的:(ssh,tcp/ip,网络)