小标
2019-01-16
来源 :
阅读 2116
评论 0
摘要:本文主要向大家介绍了Linux运维知识之Linux简单处理CC攻击shell脚本,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助。
本文主要向大家介绍了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 < $tmpBlockIPFile
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频道!
喜欢 | 0
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号