php cc攻击脚本,Linux简单处理CC攻击shell脚本

Linux简单处理CC攻击shell脚本

#!/bin/bash

btime=600

attacks=20

tmpBlockIPFile=/home/tmp_block_ip

timestamp=$(date +%s)

logPath=”/home/ban.log”

#start detect bad ip

badip=`tac /home/www.centos.bz/access.log  | awk ‘

BEGIN{

cmd=”date -d \”1 minute ago\” +%H%M%S”

cmd|getline a

}

{

$4 = substr($4,14,8)

gsub(“:”,”",$4)

$4=$4+0

a=a+0

if ($4>=a){

print $1,$7

} else {

exit;

}

}’ | egrep -v ‘\.(gif|jpg|jpeg|png|css|js)’ | awk ‘{print $1}’ | sort | uniq -c | awk -v t=”$attacks” ‘{$1=$1+0;t=t+0;if ($1>=t) print $2}’`

if [ ! -z "$badip" ];then

for ip in $badip;

do

if test -z “`/sbin/iptables -nL | grep $ip`”;then

/sbin/iptables -I INPUT -s $ip -j DROP

#record blocked ip

echo “$timestamp $ip” >> $tmpBlockIPFile

echo “$(date) $ip” >> $logPath

fi

done

fi

#unblock ip

if [ -f "$tmpBlockIPFile" ];then

ips=”"

while read blockTime ip

do

((interval=$timestamp – $blockTime))

if [ $interval -gt $btime ];then

ips=”$ips $ip”

fi

done < $tmpBlockIPFile

if [ "$ips" != "" ];then

for ip in “$ips”

do

sed -i “/$ip/d” $tmpBlockIPFile

/sbin/iptables -D INPUT -s $ip -j DROP

done

fi

fi

将此代码保存为ban.sh,加入cronjob使每分钟执行一次。

此脚本的作用是:利用iptables屏蔽每分钟访问页面超过20的IP,这些页面已经排除图片,css,js等静态文件。

第二个脚本是通过在日志中查找cc攻击的特征进行屏蔽。

#!/bin/bash

keyword=”cc-atack”

badip=`tail -n 5000  /home/www.centos.bz/log/access.log | grep “$keyword”  | awk ‘{print $1}’ | sort | uniq -c | sort -nr | awk ‘{print $2}’`

if [ ! -z "$badip" ];then

for ip in $badip;

do

if test -z “`/sbin/iptables -nL | grep $ip`”;then

/sbin/iptables -I INPUT -s $ip -j DROP

fi

done

fi

keyword则是日志中cc的特征,替换成有效的即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值