# 编写脚本 vi ipssh.sh
#! /bin/bash
cat /var/log/secure | awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $1"="$2;}' > /usr/local/bin/black.list
# 查看文件
# awk '/Failed/{print $0}' 字段处理,符号 / / 指定包含 Failed 单词的行,打印 $0 所有列
# 此处是指定 Failed [fei l d] 失败单词的行,打印 NF-3 指定列倒数第4列,从0开始;
# sort 按名称排序 ; uniq -c 计算重复的行个数
# awk '{print $1 $2 }' 打印 第1 和第 2 列数据。因为 uniq -c 计算后生成一列
# 存入文件
for i in `cat /usr/local/bin/black.list`
# for 循环条件是:循环完(cat 查看 文件里的有行,个数和IP)
do # 开始循环
IP=`echo $i |awk -F"=" '{print $2}'`
# ip的值为 :打印行 awk -F"=" 等号位分隔符,选择 第2列 是 ip
NUM=`echo $i|awk -F= '{print $1}'`
# NUM 次数变量的值是: 打印行中 第1列
if [ ${NUM} -gt 5 ]; then
# 判断 次数大于 5 就开始 (lt小于)
grep $IP /etc/hosts.deny > /dev/null
# 文件 hosts.deny 记录的是拒绝IP访问
# 过滤IP 的行 到空洞,等于删除
if [ $? -gt 0 ];then
# if $? 判断上一条命令执行城 大于0 次就开始
echo "sshd:$IP:deny" >> /etc/hosts.deny
# 将规则写入 禁止 IP 访问配置文件
fi
fi
done
sed -i "/eisc$IP/d" /etc/crontab # 先删除计划任务,重新写
echo "
*/5 * * * * sh ~/ipssh.sh # eisc$IP
" > /etc/crontab
# crontab -e 设置定时任务5s一次,指定脚本文件
echo "被禁止访问的IP 为:"
grep sshd /etc/hosts.deny
Powered by ddoss.cn 12.0
©2015 - 2024 ddoss
渝公网安备50011302222260号 渝ICP备2024035333号 【实验平台安全承诺书】 小绿叶技术社区,优化网络中,点击查看配置信息
您的IP:192.168.122.82,2024-10-10 17:58:35,Processed in 0.0226 second(s).