- 论坛徽章:
- 0
|
的访问者 IP 放入一个 List 特别观察,在一段时间内如果没有太多的出错,我们就将其从列表中移除,否则,错误太多达到警戒值就调用 iptable 将其禁封。
下面的代码总是感觉和题意不相同,不过写出来了,我也就贴出来,大家不要笑。
下面超过5次的就直接drop掉了。- #! /bin/sh
- fileout="out404ip"
- if [ -f "$fileout" ];then
- lasttime=`tail -1 $fileout`
- echo $lasttime
- awk -v tmprq=$lasttime '{
- if($4 == tmprq)
- {
- row=NR;
- while(getline <"2")
- {
- ++i;
- FS=" ";
- if(i>=row)
- {
- b[$1]++;
- rq=$4;
- };
- };
- for(x in b)
- {
- print x,b[x] > "out";
- }
- print rq>> "out";
- };
- }' 2
- cat out > out404ip
- sed '$d' out | awk '{if ($2 > 5){system("iptables -A INPUT -s "$1" -j DROP")}}'
- else
- awk '/ 404 /{a[$1]++;rq=$4}END{for(x in a){print x,a[x] > "out404ip" };print rq >> "out404ip"}' 2
- sed '$d' out404ip | awk '{if ($2 > 5){system("iptables -A INPUT -s "$1" -j DROP")}}'
- fi
复制代码 |
|