脚本自动添加ip到iptables

2018/6/30 13:36:12      点击:

文章转载自:http://www.cenhq.com/2015/12/17/scripts-add-ip-to-iptables/

nginx日志里有一些来历不明的ip攻击或者是用ssh来尝试登录你的密码

日志会记录这些来源的ip地址,根据ip地址来加入到iptables INPUT里,默认INPUT链为DROP
下面是我写的一个脚本,可以放到计划任务里,每天来统计

[root@VM-241 ~]# vim add_iptables.sh 
#!/bin/bash

#日志文件
logfile=/data/app/nginx/logs/access.log

#统计ip,可以根据时间统计
awk '/passport-send_vcode_sms.html/{print $1}' $logfile |sort |uniq -c |sort -nr > /root/ip.txt

#已经在iptables中的地址
droped_ip=$(iptables -L -n |awk '/^DROP/{print $4}')

#未加入iptables中的地址
drop_ip=$(awk '{print $2}' /root/ip.txt)

#比较两个数组不同,把不同的ip加入到防火墙中
add_ip=$(awk 'NR==1{for(i=1;i<=NF;i++) B[$i]=1}NR==2{for(j=1;j<=NF;j++) {if(B[$j]!=1) print $j}} '<(echo $droped_ip) <(echo $drop_ip))
for i in $add_ip
do
iptables -A INPUT -s $i -j DROP && echo "已添加IP: $i 到防火墙丢弃策略中。"
done

#保存新加入的策略
/etc/init.d/iptables save
/etc/init.d/iptables reload