Loading
0

被CC攻击了怎么办?Linux系统使用shell脚本自动屏蔽简单解决CC攻击方法

技术小学生微信公众号
腾讯云服务器大促销。
华为服务器
前言:网站刚做到稍有起色,就被竞争对手盯上了,雇佣了黑客攻cc攻击了网站,可用如下脚本简单解决大部分的攻击,shell脚本自动拦截。
linux系统屏蔽海外ip的方法https://blog.tag.gg/showinfo-3-36155-0.html
方式1:通过netstat -an命令统计出当前请求并发大于100的IP,然后将不在白名单的IP自动加入DROP规则 首先运行

vi  deny_1.sh

在sh脚本中添加如下代码并保存

#!/bin/bash
if [[ -z $1 ]];then
        num=100
else
        num=$1
fi

cd $(cd $(dirname $BASH_SOURCE) && pwd)
iplist=`netstat -an |grep ^tcp.*:80|egrep -v 'LISTEN|127.0.0.1'|awk -F"[ ]+|[:]" '{print $6}'|sort|uniq -c|sort -rn|awk -v str=$num '{if ($1>str){print $2} fi}'`

if [[ ! -z $iplist ]];
then
        for black_ip in $iplist
            do                
                ip_section=`echo $black_ip | awk -F"." '{print $1"."$2"."$3}'`                
                grep -q $ip_section ./white_ip.txt
                if [[ $? -eq 0 ]];then                        
                        echo $black_ip >>./recheck_ip.txt
                else                        
                        iptables -nL | grep $black_ip || iptables -I INPUT -s $black_ip -j DROP
                        echo $black_ip >>./black_ip.txt
                fi
           done
fi

保存后执行以下语句:

chmod +x deny_1.sh
sh deny_1.sh

拦截的IP会记录到black_ip.txt中,如果有要排除的白名单IP,可将这些IP加入到white_ip.txt,一行一个。
方式2:通过web网站日志中攻击者访问特征,根据这些特征过滤出攻击的ip,利用iptables来阻止(排除本机IP:127.0.0.1)。
执行如下代码创建文件

vi deny_2.sh

添加以下命令语句:

#!/bin/bash  
OLD_IFS=$IFS  
IFS=$'\n'  

for status in `cat 网站访问日志路径 | grep '特征字符' | grep -v '127.0.0.1' | awk '{print $1}' |sort -n | uniq -c | sort -n -r | head -20`  
do  
  IFS=$OLD_IFS  
  NUM=`echo $status | awk '{print $1}'`  
  IP=`echo $status | awk '{print $2}'`  

    if [ -z "`iptables -nvL | grep "dpt:80" | awk '{print $8}' | grep "$IP"`" ];then  
    if [ $NUM -gt 250 ];then  
      /sbin/iptables -I INPUT -p tcp  -s $IP --dport 80 -j DROP  
    fi  
  fi  
done

保存后执行以下语句:

chmod +x deny_2.sh
sh deny_2.sh


最后使用crontab -e 添加到任务计划,每20分钟执行一次:

*/20 * * * * /root/deny_2.sh  >dev/null 2>&1

注意:
    对于使用了百度云加速或其他cdn加速的,访问者IP可能会是CDN节点IP,刚不适用此方式进行拦截。
    对于方式1 若发现和白名单同一个段IP出现在高并发列表,将不会直接拉黑,而是写入到recheck_ip.txt.
    对于方式2 执行前建议先将原日志文件改名,以重新生成的新的日志文件为准。
    不建议长时间进行拦截,请在一段时间后待服务器负载正常,攻击基本停止后及时取消拦截,恢复原先状态。
技术小学生微信公众号
华为服务器
腾讯云服务器大促销。

声明:站长码字很辛苦啊,转载时请保留本声明及附带文章链接:https://blog.tag.gg/showinfo-3-36156-0.html
亲爱的:若该文章解决了您的问题,可否收藏+评论+分享呢?
上一篇:Linux系统屏蔽国外(海外)IP解决被CC攻击的方法
下一篇:Ubuntu和Debian系统增加多个ip地址方法