DDOS 攻击与防御

1DDOS 简介

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

  1.1、攻击原理图

  DDOS 攻击与防御_第1张图片

   1.2、实验环境搭建

  实验平台:CentOS release 6.4 (Final)

  服务端:node11  192.168.92.21

  攻击端:node12  192.168.92.22

 

      web_server服务器配置:
          yum -y install httpd     #安装 web 服务
          service httpd start
          vim /var/www/html/index.html  #写一个简单的静态页面
          service iptables start   #开启防火墙
          iptables -I INPUT -p TCP --dport 80 -j ACCEPT   #设置防火墙,运行 80 端口的服务通过
         测试站点是否可以进行访问:http://192.168.92.21/

        

    1.3、模拟攻击

    工具简介:webbenchab命令,做压力测试的工具和性能的监控工具

    wget http://home.tiscali.cz/~cz210552/distfiles/webbench-1.5.tar.gz
    yum -y install ctags
    tar xf webbench-1.5.tar.gz
    cd webbench-1.5
   注:已经存在 Makefile 文件,则直接安装即可
   make
   make install

   注:此时出现以下报错

    install -s webbench /usr/local/bin

    install -m 644 webbench.1 /usr/local/man/man1

    install: cannot create regular file `/usr/local/man/man1': No such file or directory

    make: *** [install] Error 1

  解决: mkdir -p /usr/local/man/man1

  再次重新运行 make install 即可

 附:webbench 使用方法

   webbench -c 客户端 -t 运行测试时间 URL

   例: 模拟100个客户端10秒内对站点进行访问

   webbench -c 100 -t 10 http://192.168.92.21/

 

   1.3.1、攻击测试  node12 机器

    webbench -c 100 -t 10 http://192.168.92.21/index.html   

   Webbench - Simple Web Benchmark 1.5   

   Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

  Benchmarking: GET http://192.168.92.21/index.html

  100 clients, running 10 sec.

  Speed=49032 pages/min, 48383672 bytes/sec.

  Requests: 8172 susceed, 0 failed.

  注:如上面结果所示,短时间内有大量的请求,则怀疑为DDOS攻击

1.3.1.1、如何查看是否受到DDOS攻击? (web服务器端查看)

   netstat -ntu | awk '{print $5}' | cut -d: -f4 | sort | uniq -c | sort -n

  

 分析:通过命令在被攻击的一端过滤出相同的连接IP在短时间内有上万个,则可能存在DDOS

 

 1.3.2、如何防止 DDOS

 方法一:手动写iptables 规则,ip地址数比较少时

方法二: 检测到访问次数比较多的ip地址后,自动添加iptables规则。

 例:fail2banlinux+DDoS deflate

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

   

实战: 使用DDoS deflate 解决服务器被DDOS攻击的问题

  DDoS deflate 安装:

  [root@node11 ~]# wget http://www.inetbase.com/scripts/ddos/install.sh

  [root@node11 ~]# chmod +x install.sh

  [root@node11 ~]# ./install.sh  #此时可以下载源文件

DDOS 攻击与防御_第2张图片

   注:出现以上状态则证明已经下载成功,直接按q推出即可。

 配置文件路径:/usr/local/ddos/ddos.conf

  DDOS配置文件介绍:

  [root@node11 ~]# cd /usr/local/ddos/

  ddos.conf  #主配置文件

  ddos.sh    #主程序(调用此程序对DDOS进行防御)

  ignore.ip.list  # IP地址的白名单

 

主配置文件解释:

[root@node11 ddos]# vim ddos.conf  #以下为部分解释

PROGDIR="/usr/local/ddos"  #工作目录

PROG="/usr/local/ddos/ddos.sh"  #主程序

IGNORE_IP_LIST="/usr/local/ddos/ignore.ip.list"  #白名单列表

CRON="/etc/cron.d/ddos.cron"  #计划任务

APF="/etc/apf/apf"  

IPT="/sbin/iptables"

FREQ=1  #检查的时间为1分钟

NO_OF_CONNECTIONS=150  #最大连接数,超过这个数IP就会被屏蔽,一般默认即可

APF_BAN=0 #此处默认为1,修改为0 使用iptables防火墙,不使用apf防火墙

KILL=1  #是否屏蔽IP,默认即可

EMAIL_TO="root"  #IP被屏蔽时给指定邮箱发送邮件报警,换成自己的邮箱即可

BAN_PERIOD=600  #禁用IP时间,默认600秒,可根据情况调整

注:安装后,不需要手动运行任何软件,因为有crontab计划任务,每过一分钟,会行自动执行一次。检查是否有不正常的访问量

 

计划任务解释:

[root@node11 ddos]# cat /etc/cron.d/ddos.cron

SHELL=/bin/sh

0-59/1 * * * * root /usr/local/ddos/ddos.sh >/dev/null 2>&1

注:每分钟查看一下,是不是有ddos攻击,如果发现就开始拒绝

 

脚本修改:

[root@node11 ~]# cp /usr/local/ddos/ddos.sh{,.`date +%Y%m%d`}

[root@node11 ~]# vim /usr/local/ddos/ddos.sh

117 netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr > $BAD_IP_LIST

注:117行的 -f1 修改为 -f4 ,如下:

117 netstat -ntu | awk '{print $5}' | cut -d: -f4 | sort | uniq -c | sort -nr > $BAD_IP_LIST

 

测试1

[root@node12 ~]# webbench -c 100 -t 10 http://192.168.92.21/index.html

DDOS 攻击与防御_第3张图片

 

服务端防火墙当前状态检查:

DDOS 攻击与防御_第4张图片

注:查看以上的防火墙状态发现已经有 IP DROP

 

测试2 使用 ab 命令进行测试

使用参数: -n  次数    -c  客户端数量

[root@node12 ~]# ab -n 1000 -c 10 http://192.168.92.21/index.html      #输出结果如下所示

This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 192.168.92.21 (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests

Server Software: Apache/2.2.15
Server Hostname: 192.168.92.21
Server Port: 80

Document Path: /index.html
Document Length: 59140 bytes

Concurrency Level: 10
Time taken for tests: 1.176 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 59412000 bytes
HTML transferred: 59140000 bytes
Requests per second: 850.29 [#/sec] (mean)
Time per request: 11.761 [ms] (mean)
Time per request: 1.176 [ms] (mean, across all concurrent requests)
Transfer rate: 49333.15 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.7 0 11
Processing: 1 11 9.9 8 127
Waiting: 0 6 2.1 6 15
Total: 2 12 10.0 8 127

Percentage of the requests served within a certain time (ms)
50% 8
66% 9
75% 10
80% 12
90% 29
95% 33
98% 40
99% 44
100% 127 (longest request)

 

服务端防火墙列表状态查看:(等待一段时间再查看)

DDOS 攻击与防御_第5张图片

结果分析:此时服务端防火墙DROP掉了源IP(即:攻击IP),攻击方无法再次使用源IP对服务端进行攻击。

#攻击方输出如下信息:

[root@node12 ~]# ab -n 1000 -c 10 http://192.168.92.21/index.html

This is ApacheBench, Version 2.3 <$Revision: 655654 $>

Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/

Licensed to The Apache Software Foundation, http://www.apache.org/

 

Benchmarking 192.168.92.21 (be patient)

apr_poll: The timeout specified has expired (70007)

 

#同时使用webbench发现无法进行攻击,证明ip被禁止掉了

[root@node12 ~]# webbench -c 100 -t 10 http://192.168.92.21/index.html

Webbench - Simple Web Benchmark 1.5

Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

 

Benchmarking: GET http://192.168.92.21/index.html

100 clients, running 10 sec.

 

Connect to server failed. Aborting benchmark.

 

附录1软件下载地址

Webbench

http://home.tiscali.cz/~cz210552/webbench.html

DDoS deflate官方网站:

http://deflate.medialayer.com/

 

附录2:常见问题解决

1DDos deflate 安装第一次可能不成功

解决:卸载后再装一次就行了

[root@node11 ~]# wget http://www.inetbase.com/scripts/ddos/uninstall.ddos

[root@node11 ~]# chmod  +x uninstall.ddos

[root@node11 ~]# ./uninstall.ddos 

 

转载于:https://www.cnblogs.com/fanrui/p/8863145.html

你可能感兴趣的:(开发工具,运维,awk)