linux cc脚本,Linux运维知识之Linux简单处理CC攻击shell脚本

本文主要向大家介绍了Linux运维知识之Linux简单处理CC攻击shell脚本,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助。

第一个脚本是通过查找日志中访问次数过多的ip,并用iptables屏蔽,600秒解封。

#!/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\n"

fi

done 

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

for ip in `echo -e $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的特征,替换成有效的即可。

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注系统运维Linux频道!

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值