Iptables自动添加黑名单脚本

本文介绍了一个脚本,用于监控服务器日志,自动检测并添加认证失败的IP到iptables黑名单,2小时后自动释放,同时定时清理日志并加入Cronjob执行。涉及的技术包括iptables配置、日志分析和定时任务调度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IPtables自动添加黑名单脚本

1、脚本需求

  • 登陆服务器日志/var/log/secure

  • 检测检查日志中认证失败的行以及频繁发送请求的IP地址(失败条件可自行添加)

  • 添加ip进iptables防火墙并阻止 --> DROP (可根究需求换成REJECT)

  • 禁止该IP访问服务器所有端口;(或者指定ip 加-s参数)

  • 定时检测脚本时间。规则内,大于2小时的IP自动放通,小于的则添加入黑名单(可自行设定时间)

  • 将脚本加入Crontab实现自动禁止恶意IP

  • 定时清理系统安全日志备份文件

2、脚本(可以根据自己需求,更改相对应参数。)

#!/bin/bash
#Add blacklist script
#add by K_sheep
#2022年8月2日
#########################################
#判断iptables文件目录是否存在,不存在则创建
IPTABLE_DIR=/opt/iptables_script
if [ -d  $IPTABLE_DIR ];then
    echo "目录已存在"
    tree $IPTABLE_DIR
	sleep 1
else
    echo “文件不存在,创建目录中....sleep 1
    mkdir -p $IPTABLE_DIR/secure
    echo "创建目录成功。"
    tree  $IPTABLE_DIR
	sleep 1
fi
#添加返回失败ip的黑名单进iptables,2小时之后移除
DATE=$(date "+%Y%m%d%H")
FILE_TXT=/opt/iptables_script/file_ip.txt
echo -e "\033[40;33m------------欢迎使用Iptables黑名单添加功能-----------\033[0m"
for ip in $(awk '/Received disconnect/;/Invalid user/;/Connection closed/' /var/log/secure | grep -aiowE "([0-9]{1,3}\.){3}[0-9]{1,3}" |sort -r |uniq -c| awk '{if(($1>=2)) print $2}');
do
    iptables -t filter -A INPUT -s $ip/32 -m tcp -p tcp -j DROP;
    echo $ip $DATE >> $FILE_TXT
done

while read LINE
do
TIME=$(echo  $LINE |awk '{print $2}')
IP=$(echo  $LINE |awk '{print $1}')
EXPR=$(expr $DATE \- $TIME)
echo "时间参数$TIME IP参数$IP 对比差参数$EXPR"
    if [[ $EXPR -gt 2 ]];then
	echo $IP
        sed -i "/$IP/d" $FILE_TXT
        iptables -t filter -D INPUT -s $IP/32 -m tcp -p tcp -j DROP
    else
	echo -e "\033[40;33m------Iptables黑名单添加为-------- \033[0m"
	sleep 1
        echo "加入黑名单IP:$IP。"
    fi
done < $FILE_TXT
#备份系统安全日志内容到指定文件
cp /var/log/secure $IPTABLE_DIR/secure/$(date "+%F-%H%M")_secure.txt
#清空系统安全日志并重启服务(防止安全日志服务无法写入)
echo '' > /var/log/secure
service rsyslog restart
#加载iptables加入规则并且重启itables
service iptables save
service iptables restart
#定时清理系统安全日志备份内容7天之内
find $IPTABLE_DIR/secure/ -mtime +7 -type f | xargs rm -f

3、最终脚本目录结构

[root@lb iptables_script]# tree /opt/iptables_script/
/opt/iptables_script/
├── file_ip.sh
├── file_ip.txt
└── secure
    └── 2022-08-02-1528_secure.txt

4、加入定时任务执行脚本

crontab -e
5 * * * * /opt/iptables_script/file_ip.sh > /dev/null 2>&1 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值