会计考友 发表于 2012-8-4 12:07:07

linux指导:简单处理CC攻击shell脚本

第一个脚本是通过查找日志中访问次数过多的ip,并用iptables屏蔽。
   
    1.#!/bin/bash
   
    2.cur=`date +%H%M%S`
   
    3.becur=`date -d "1 minute ago" +%H%M%S`
   
    4.badip=`tail -n 10000 /home/www/log/access.log | egrep -v "\.(gif|jpg|jpeg|png|css|js)" | awk-v a="$becur" -v b="$cur" -F [' ':] '{t=$5$6$7;if (t>=a && t=20) print $2}'`
   
    5.if [ ! -z "$badip" ];then
   
    6.for ip in $badip;
   
    7.do
   
    8.if test -z "`/sbin/iptables -nL | grep $ip`";then
   
    9./sbin/iptables -I INPUT -s $ip -j DROP
   
    10.fi
   
    11.done
   
    12.fi
   
    将此代码保存为ban.sh,加入cronjob使每分钟执行一次。
   
    此脚本的作用是:利用iptables屏蔽每分钟访问页面超过20的IP,这些页面已经排除图片,css,js等静态文件。
   
    第二个脚本是通过在日志中查找cc攻击的特征进行屏蔽。
   
    1.#!/bin/bash
   
    2.keyword="cc-atack"
   
    3.badip=`tail -n 5000/home/www/log/access.log | grep "$keyword"| awk '{print $1}' | sort | uniq -c | sort -nr | awk '{print $2}'`
   
    4.if [ ! -z "$badip" ];then
   
    5.for ip in $badip;
   
    6.do
   
    7.if test -z "`/sbin/iptables -nL | grep $ip`";then
   
    8./sbin/iptables -I INPUT -s $ip -j DROP
   
    9.fi
   
    10.done
   
    11.fi
   
    keyword则是日志中cc的特征,替换成有效的即可。
   
    No tags for this post. Posted in: 建站手札
页: [1]
查看完整版本: linux指导:简单处理CC攻击shell脚本