预防cc攻击脚本

#! /bin/bash
N=350
while :; do
        tail -n 500 access.log |awk '{print $5}'|sort |uniq -c |sort -n|tail -n1 >/tmp/cc.log
        n=`awk '{print $1}' /tmp/cc.log`
        dom=`awk '{print $2}' /tmp/cc.log`
        if [ $n -gt $N ] ; then
                tail -n 500 access.log| grep $dom |awk '{print $1}'|sort -n |uniq |grep -v '192.168.' |xargs -n1 -i{} iptables -I INPUT -s {} -j DROP
        fi
        sleep 10   // 上边的500和这里的10是对应的,该服务器每秒钟产生的日志大约为50个
done

添加新评论 »