美文网首页
屏蔽CC攻击

屏蔽CC攻击

作者: 晓函 | 来源:发表于2016-11-15 10:57 被阅读212次

ban特征

需要有tcpdump工具

apt-get install tcpdump
tcpdump -s0 -A -n -i any | grep -o -E '(GET|POST|HEAD).*'
tcpdump -s0 -A -n -i any | grep -o -E '(GET|POST|HEAD|Host).*'

tcpdump还有其他的命令:

tcpdump -s0 -A -n -i any | grep  ^User-Agent
tcpdump -s0 -A -n -i any | grep -o -E '(X-Forwarded-For).*'
tcpdump -s0 -A -n -i any | grep -o -E '(Referer).*'
Paste_Image.png

像这种某一个页面被重复请求,并且服务器CPU和流量大增,那肯定是cc了。

我们需要使用nginx来限制访问频率,以及ban掉这些特征


limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
server {
        listen   80;
        server_name www.mysite.com;

         #访问日志
       # access_log /mnt/www/mysite/logs/access.log;
        #error_log /mnt/www/mysite/logs/access.log;

        #静态文件直接从目录返回
        location ^~ /static/ {
                root /mnt/www/mysite/app;
        }

        #搜索页面判断来路,并且设置
        location ^~ /search {
                #非淘客喵来路全部禁止访问搜索
                if ($http_referer !~* .*\.mysite.com){
                        return 403;
                }
                #deny all;
                #搜索限制访问次数
                limit_conn addr 2;
                limit_req zone=one burst=3 nodelay;
                proxy_pass http://127.0.0.1:8000;
                break;
        }

        #其他页面
        location / {
                #限制访问次数
                limit_conn addr 3;
                limit_req zone=one burst=5;

            proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_redirect off;
            #文件不存在则转到gunicorn服务
            if (!-f $request_filename) {
                proxy_pass http://127.0.0.1:8000;
                break;
            }
        }
    }

BAN IP

用这个命令查看大于并发大于20的IP,里面有些是服务器的云盾或者之类的IP段,ban掉就无法访问了

#查询访问次数大于20次的ip
#-c 2000的意思是,总访问数达到2000次退出并返回结果
tcpdump -i eth1 -tnn dst port 80 -c 2000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr |awk -v str=20 '{if ($1>str){print $1,$3}}'| head -20
Paste_Image.png

监听到有很多ip大量访问,最前面是访问次数。
那么我们可以写一个脚本利用iptables防火墙ban掉他们。

cd /root
vi deny.sh

写入以下脚本

#!/bin/bash
#Author:ZhangGe&Corek
#Desc:Auto Deny Black_IP Script.
#Date:2016-11-16
#从第一个参数取得限制阈值,如果未设置最高并发,将设置为30
if [[ -z $1 ]];then
        num=30
else
        num=$1
fi
 
#进入到脚本所在目录
cd $(cd $(dirname $BASH_SOURCE) && pwd)
 
#取得当前请求大于阈值$num的IP列表
iplist=`tcpdump -i eth1 -tnn dst port 80 -c 5000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr |awk -v str=$num '{if ($1>str){print $3}}'`
 
#循环IP列表进行筛选和处理
if [[ ! -z $iplist ]];
then
        for black_ip in $iplist
            do
                #取得IP所在段
                ip_section=`echo $black_ip | awk -F"." '{print $1"."$2"."$3}'`
                #先检查白名单中是否存在匹配的IP段(为了支持整段IP为白名单)
                grep -q $ip_section ./white_ip.txt
                if [[ $? -eq 0 ]];then
                        #若发现black_ip和白名单的一个段匹配,则写入到待验证列表,并暂时放过
                        echo $black_ip >>./recheck_ip.txt
                else
                        #若不再白名单当中,则直接将black_ip加入到防火墙的DROP规则当中,并记录

                        #封单IP
                        #iptables -nL | grep $black_ip || iptables -I INPUT -s $black_ip -j DROP
                        #echo $black_ip >>./black_ip.txt
                        #直接封IP段
                        iptables -nL | grep $ip_section.0/24 || iptables -I INPUT -s $ip_section.0/24 -j DROP
                        echo $ip_section.0/24 >>./black_ip.txt
                fi
           done
fi

保存后。
我们建立一个白名单txt,把服务器IP和爬虫IP以及阿里云云盾的IP段写进去,要是这些IP被ban掉,web就无法访问了
比如

vi white_ip.txt
#写入
#服务器的IP
106.14.30.*
#云盾IP
140.205.16.*

保存。

运行,后面的参数20表示这段结果中访问数大于20的段全部ban掉

nohup ./deny.sh 20

附上iptables的操作

#查看ban掉的IP
iptables -nL
#清空iptables防火墙的记录
iptables -F
#将某个ip单独ban
iptables -I INPUT -s 115.219.59.126 -j DROP
#将某个IP取消屏蔽
iptables -D INPUT -s 119.182.160.132 -j DROP
#屏蔽ip段
iptables -I INPUT -s 115.219.59.0/24 -j DROP

2017年8月1日更新

其实最有用的还是屏蔽来路,现在的很多CC都是用脚本嵌套刷,来路都是各种乱七八糟的网页。

编辑站点nginx配置文件

cd /etc/nginx/sites-available
vi mysite

内容如下

server {
        listen   80;
        server_name www.mysite.com;
        #修改最大上传为10M,默认为2M,超出大小出现413 Request Entity Too Large错误
        client_max_body_size 10M;
      
         #搜索页面防CC
        location ^~ /search {
                set $deny 1;
                if ($http_referer ~* .*\.mysite.com){
                        set $deny 0;
                }
                if ($http_referer ~* .*\.baidu.com){
                        set $deny 0;
                }
                if ($http_referer ~* .*\.sogou.com){
                        set $deny 0;
                }
                if ($http_referer = ''){
                        set $deny 0;
                }
                #如果来路验证不通过,则拒绝
                if ($deny = 1){
                        rewrite .+ http://www.163.com redirect;
                        #rewrite ^/(.*) http://www.163.com redirect;
                        #return 403;
                }

            #将访客IP加入headers中,否则获取到的将是127.0.0.1
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_redirect off;
            #如果请求的文件不存在,则将路由转发到gunicorn的8000端口
            if (!-f $request_filename) {
                proxy_pass http://127.0.0.1:8000;
                break;
            }

        }

        #默认请求,nginx反向代理(动态页面转发至gunicorn)
        location / {
            #将访客IP加入headers中,否则获取到的将是127.0.0.1
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_redirect off;
            #如果请求的文件不存在,则将路由转发到gunicorn的8000端口
            if (!-f $request_filename) {
                proxy_pass http://127.0.0.1:8000;
                break;
            }
        }

        #静态文件请求转发给目录
        location ^~ /static/ {
                root /var/www/mysite/app;
        }
    }




立竿见影,加上这个nginx配置,然后重启nginx。

Paste_Image.png

马上带宽就降了。

相关文章

  • 屏蔽CC攻击

    ban特征 需要有tcpdump工具 tcpdump还有其他的命令: 像这种某一个页面被重复请求,并且服务器CPU...

  • CC攻击

    什么是CC攻击 CC攻击(Challenge Collapsar)CC攻击的本名叫做HTTP-FLOOD,是一种专...

  • 高防CDN怎样帮助H5游戏公司有效的解决困扰

    cc攻击会对H5游戏造成什么影响,应该如何来防护cc攻击? CC攻击是H5游戏常见的攻击类型,而H5游戏遭受CC攻...

  • H5游戏高防解决方案有哪些?

    cc攻击会对H5游戏造成什么影响,应该如何来防护cc攻击? CC攻击是H5游戏常见的攻击类型,而H5游戏遭受CC攻...

  • 安全防护小贴士:如何预防网站被 CC攻击?

    CC攻击是一种常见的网络攻击方式。然而,很多人对于CC攻击并不熟悉,对其攻击的过程也不了解。其实,CC攻击是DDO...

  • CC攻击的常用防护方式有哪些?

    CC攻击,全称Challenge Collapsar,是DDoS攻击的一种。CC攻击是目前应用层攻击的主要手段之一...

  • Linux主机简单判断CC攻击的命令

    原文链接 CC攻击很容易发起,并且几乎不需要成本,导致现在的CC攻击越来越多。 大部分搞CC攻击的人,都是用在网上...

  • 网络安全知识3

    CC攻击防护最佳实践 大流量高频CC攻击 在大规模CC攻击中,单台傀儡机发包的速率往往远超过正常用户的请求频率。针...

  • 2019-07-17

    服务器被攻击不要担心 什么是CC攻击?CC攻击的前身名为Fatboy攻击,是利用不断对网站发送连接请求致使形成拒绝...

  • CC攻击是什么?CC攻击原理及CC攻击怎么防御?

    CC攻击是DDOS(分布式拒绝服务)的一种,相比其它的DDOS攻击CC似乎更有技术含量一些。这种攻击你见不到虚假I...

网友评论

      本文标题:屏蔽CC攻击

      本文链接:https://www.haomeiwen.com/subject/isikpttx.html