• 解决(防止)DDOS攻击的另一种思想


    本方案适合作最后的处理方案。

    在服务器遭到DDOS攻击后,防火墙、高防盾或者其他的方案都已经失去了效力,这时运维人员无任何方案可以处理,并且只能任由DDOS攻击或关闭服务器时,该方案可以有限的抵挡大部分DDOS攻击流量,恢复大部分的生产。

    该方案并未成熟。

    这种方案公司用户越少,效果越好。

    环境:目前的技术上对DDOS攻击没有太好的解决办法,理论上的肉机数量可以无限多,但服务器给的带宽不可能也不能应对所有的肉鸡的攻击,因此市面上多用高防的盾机来被动的接受来自肉鸡的流量,理论上在高性能的盾机都能被肉鸡击倒,因此这种方案算是一种十分被动的解决方案。很多人选择用封IP的方式来处理DDOS攻击,这在肉鸡数量上的情况下是一种不错的解决方案,但肉鸡数量一多,与不做任何操作并无二样。

    原理:目前的服务器防火墙的策略基本上对业务端口的访问不作限制,在遭受DDOS攻击时,我们可以刻意封闭业务端口的访问,只允许指定IP的访问,至于指定IP,可以在平常用脚本收集,当然平常还是对业务端口的访问不作限制。

    因为用户数量占少数,用户中肉鸡的数量也占极少数,因此会有少部分用户被误封的情况,但是远好于所有用户均无法访问。

    举个栗子:

    我用文件active_ip记录有效用户的IP

    用文件 filter保存正常时候的IPTABLES规则。

    在正常业务时,用脚本ip_witev2.sh在后台执行记录访问80端口用户的IP保存在active_ip中。

    wite_ip=`awk -F" " '{print $1}' $Active_path`

    #!/bin/bash

    #sync the IP in access log into Active_path.

    Add_white()

    {

    access_ip=`tail -n 150 $Log_path | awk -F" " '{print $1}' | uniq`

    wite_ip=`awk -F" " '{print $1}' $Active_path`

    for i in $access_ip

    do

        singel=0

        for k in `awk '{print}' $Active_path`

        do

              [ $i = $k ] && { singel=1; break; }

        done

        [ $singel -eq  0 ] && echo $i >> $Active_path

    done

    }

    Log_path="/home/wwwlogs/access.log"

    Active_path="/scripts/active_ip"

    [ -f $Active_path ] || touch $Active_path

    #judge whether there are new data in acess.log or not.

    while true

    do

        [ -f $Log_path ] && size1=`stat $Log_path | awk -F" " '/Size/ {print $2}'` && break

        sleep 0.1

    done

    [ `stat $Active_path | awk -F" " '/Size/ {print $2}'` -le 1 ] &&  Add_white

    sleep 5

    在遭受DDOS攻击(有个判断的过程及触发条件)时自动执行切换IPTABLES规则的脚本

    ddos_filter.sh 封闭所有的IP

    #!/bin/bash

    iptables -D INPUT -t filter -p tcp --dport 80 -j ACCEPT

    iptables -D OUTPUT -t filter -p tcp --sport 80 -j ACCEPT

    activeip_path="/scripts/active_ip"

    for i in `awk '{print}' $activeip_path`

    do

        iptables -A INPUT -t filter -s $i -p tcp --dport 80 -j ACCEPT

        iptables -A OUTPUT -t filter -d $i -p tcp --sport 80 -j ACCEPT

    done

    DDOS攻击完毕时(这个触发方式是怎样的?)自动切换为原来的IPTABLES规则。

    这就是方案的大致原理。

    本人学问不足读书少,文章远远未完善,错误的地方和有改正的地方还请各位大佬批评指正,集思广益,这不正是开源的思想。

  • 相关阅读:
    限制结果集行数
    函数的差异
    运算符的差异
    数据类型的差异
    简介
    Spring源码阅读入门指引
    Spring的三种注入方式
    AOP面向切面编程
    leetcode771
    leetcode669
  • 原文地址:https://www.cnblogs.com/nat-zhu/p/7049021.html
Copyright © 2020-2023  润新知