Linux运维知识之Linux简单处理CC攻击shell脚本
小标 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
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved