Linux
简单处理CC攻击shell脚本
第一个脚本基于搜索日志中被查看过多的ip,用iptables屏蔽,600秒解封。
1
2
3
4
5
6
7
8
9
十
11
十二
13
[h/]14
十五
16岁
17
18岁
#!/bin/bash
btime=600
becur=`date-d"1分钟前"+%H%M%S`
badip=`tac/home/www.centos.BZ/log/access.log|awk-va="$becur"-F['':]'{t=;if(t>;=a)打印}否则{退出;}'|egrep-v"。(gif|jpg|JPEG|png|CSS|js)"|awk“{print}”|sort|uniq-c|awk“{if(>;=20)print}'`
如果[!-z"$badip"];然后
forIPin$badip;
做某事
iftest-z"`/sbin/iptables-nL|grep$IP`";然后
/sbin/iptables-IINPUT-s$IP-jDROP
unban_SCRIPT=`mktemp/tmp/unban。XXXXXXXX`
echo'#!/bin/sh'>;$UNBAN_SCRIPT
echo"sleep$btime">;>$UNBAN_SCRIPT
echo"/sbin/iptables-DINPUT-s$IP-jDROP">;>$UNBAN_SCRIPT
echo"rm-f$UNBAN_SCRIPT">>$UNBAN_SCRIPT
。$UNBAN_SCRIPT&
fi
完成
fi
将这段代码另存为ban.sh,添加cronjob分分钟实现。这个脚本的效果是:iptables可以用来拦截每页超过20的IP访问,已经清除了照片、css、js等静态数据文档。第二个脚本是
根据在日志中搜索
cc攻击的特征进行筛选。
1
2
3
4
5
6
7
8
9
十
11
#!/bin/bash
keyword="cc-atack"
badip=`tail-n5000/home/www.centos.BZ/log/access.log|grep"$keyword"|awk'{print}'|sort|uniq-c|sort-NR|awk'{print}'`
如果[!-z"$badip"];然后
forIPin$badip;
做某事
iftest-z"`/sbin/iptables-nL|grep$IP`";然后
/sbin/iptables-IINPUT-s$IP-jDROP
fi
完成
fi
关键字是日志中cc的特点,用一个合理的替换就可以了。
截取,文章正文:http://www.centos.bz/2012/06/linux-cc-attack-shell-script/
评论列表(0条)