DDOS 攻击与防护

1DDOS 简介 html

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

  1.1、攻击原理图linux

  

   1.2、实验环境搭建web

  实验平台:CentOS release 6.4 (Final)apache

  服务端:node11  192.168.92.21vim

  攻击端: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  #此时能够下载源文件

   注:出现以上状态则证实已经下载成功,直接按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

 

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

注:查看以上的防火墙状态发现已经有 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)

 

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

结果分析:此时服务端防火墙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 

相关文章
相关标签/搜索