centos7预防DDoS攻击

  1. DDoS概述

    分布式拒绝服务(DDoS:Distributed Denial of Service)攻击,指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。

  2. DDoS deflate概述

    DDoS deflate是用来防御和减轻DDoS攻击的脚本 它通过netstat监测跟踪创建大量网络连接的IP地址,在检测到某个结点超过预设的限制时,该程序会通过APF或IPTABLES禁止或阻挡这些IP

  3. 查看是否受到DDoS攻击

    可以通过以下命令查看IP访问次数(ip前面的数字为访问次数),从而做出相应判断

    netstat -ntu | awk '{print $5}' | cut -d: -f1 | uniq -c | sort -n
    
    [root@controller ~]# netstat -ntu | awk '{print $5}' | cut -d: -f1 | uniq -c | sort -n
          1 127.0.0.1
          1 127.0.0.1
          1 192.168.174.1
          1 192.168.174.122
          1 Address
          1 servers)
          4 192.168.174.120
          4 192.168.174.120
          5 192.168.174.120
          6 192.168.174.120
          9 192.168.174.120
         19 192.168.174.120
         21 192.168.174.120
         25 192.168.174.120
         35 192.168.174.120
  4. 安装DDos deflate

    wget http://www.inetbase.com/scripts/ddos/install.sh
    chmod +x install.sh
    ./install.sh               #需要机器能上网
    cd /usr/local/ddos/        #进入目录
    ls                       #显示目录下的文件
    ddos.conf  ddos.sh  ignore.ip.list  LICENSE    # 安装目录下面有配置文件、脚本和IP白名单(IP白名单内的IP是一段时间之内被禁止访问的IP)
  5. 修改脚本配置文件

    vi /usr/local/ddos/ddos.conf
    
    PROGDIR="/usr/local/ddos"
    PROG="/usr/local/ddos/ddos.sh"                   #要执行的DDoS脚本
    IGNORE_IP_LIST="/usr/local/ddos/ignore.ip.list"       # IP白名单   
    CRON="/etc/cron.d/ddos.cron"                     #  周期任务    
    APF="/etc/apf/apf"
    IPT="/sbin/iptables"
    FREQ=1                                       #检查DDoS×××间隔 , 默认一分钟
    NO_OF_CONNECTIONS=2000      #最大连接数,超过这个数IP就会被屏蔽,一般默认即可
    APF_BAN=0       #使用APF还是iptables。推荐使用iptables,将APF_BAN的值改为0即可
    KILL=1          #是否屏蔽IP,默认即可
    EMAIL_TO="2990150686@qq.com"   #当IP被屏蔽时给指定邮箱发送邮件报警,换成自己的
    BAN_PERIOD=200             #禁用IP时间,默认600秒,可根据情况调整
  6. 查看周期任务

    每分钟查看一下,是不是有DDoS,如果发现就开始拒绝

    cat /etc/cron.d/ddos.cron
    SHELL=/bin/sh0-59/1 * * * * root /usr/local/ddos/ddos.sh >/dev/null 2>&1
  7. 测试

    (1)查看controller节点的iptables策略

    iptables -nL
    
    [root@controller ddos]# iptables -nL
    [root@controller ~]# iptables -nL Chain INPUT (policy ACCEPT) target     prot opt source               destination          DROP       all  --  192.168.174.121      0.0.0.0/0            neutron-linuxbri-INPUT  all  --  0.0.0.0/0            0.0.0.0/0            ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0            ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22 ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22 ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:21 ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:20 ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80 ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:443 ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:11211 ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8776 ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8774 ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8773 ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8775 ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpts:5900:5999 ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:6080 ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:6081 ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:6082 ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:5000 ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:35357 ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:9292 ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:9191 ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:9696 ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8080 ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:873 ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:3260 ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:3306 ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:53 ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:5672 ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:23 ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:111 ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:161 ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:3389 Chain FORWARD (policy ACCEPT) target     prot opt source               destination          neutron-filter-top  all  --  0.0.0.0/0            0.0.0.0/0            neutron-linuxbri-FORWARD  all  --  0.0.0.0/0            0.0.0.0/0           Chain OUTPUT (policy ACCEPT) target     prot opt source               destination          neutron-filter-top  all  --  0.0.0.0/0            0.0.0.0/0            neutron-linuxbri-OUTPUT  all  --  0.0.0.0/0            0.0.0.0/0  

    (2)使用另外一台虚拟机模拟进行DDoS攻击,测试结果如图13.1所示:

    ab -n 10000 -c 10 https://192.168.174.120/dashboard

    请输入图片描述

    (3)等一分钟查看web服务器查看iptables策略,此时结果如图13.2所示:

    iptables -nL

    请输入图片描述

    在第二行可以看到ip192.168.174.121被DROP

  8. 如何卸载DDoS

    [root@controller ddos]# wget  
    [root@controller ddos]# chmod +x uninstall.ddos 
    [root@controller ddos]# ./uninstall.ddos
最后编辑:2020年11月17日 ©著作权归作者所有

发表评论

正在加载 Emoji