DDoS简介

“拒绝服务(Denial-Of-Service)***就是消耗目标主机或者网络的资源,从而干扰或者瘫痪其为合法用户提供的服务。”国际权威机构“SecurityFAQ”给出的定义。

DDOS则是利用多台计算机机,采用了分布式对单个或者多个目标同时发起DoS***。其特点是:目标是“瘫痪敌人”,而不是传统的破坏和窃密;利用国际互联网遍布全球的计算机发起***,难于追踪。


一、DDos***原理
DDOS是英文DistributedDenialofService的缩写,即“分布式拒绝服务”,DDoS***原理大致分为以下三种:
1.通过发送大的数据包堵塞服务器带宽造成服务器线路瘫痪;
2.通过发送特殊的数据包造成服务器TCP/IP协议模块耗费CPU内存资源最终瘫痪;
3.通过标准的连接建立起连接后发送特殊的数据包造成服务器运行的网络服务软件耗费CPU内存最终瘫痪(比如WEBSERVER、FTPSERVER、游戏服务器等)。


二、DDoS***种类可以分为以下几种:

由于肉鸡的***可以随时更新***的数据包和***方式,所以新的***更新非常快这里我们介绍几种常见的***的原理和分类
1、SYN变种***
发送伪造源IP的SYN数据包但是数据包不是64字节而是上千字节,这种***会造成一些防火墙处理错误导致锁死,消耗服务器CPU内存的同时还会堵塞带宽。
2、TCP混乱数据包***
发送伪造源IP的TCP数据包,TCP头的TCPFlags部分是混乱的可能是syn,ack,syn+ack,syn+rst等等,会造成一些防火墙处理错误导致锁死,消耗服务器CPU内存的同时还会堵塞带宽。
3、针对UDP协议***
很多聊天室,视频音频软件,都是通过UDP数据包传输的,***者针对分析要***的网络软件协议,发送和正常数据一样的数据包,这种***非常难防护,一般防护墙通过拦截***数据包的特征码防护,但是这样会造成正常的数据包也会被拦截,
4、针对WEBServer的多连接***
通过控制大量肉鸡同时连接访问网站,造成网站无法处理瘫痪,这种***和正常访问网站是一样的,只是瞬间访问量增加几十倍甚至上百倍,有些防火墙可以通过限制每个连接过来的IP连接数来防护,但是这样会造成正常用户稍微多打开几次网站也会被封
5、针对WEBServer的变种***
通过控制大量肉鸡同时连接访问网站,一点连接建立就不断开,一直发送发送一些特殊的GET访问请求造成网站数据库或者某些页面耗费大量的CPU,这样通过限制每个连接过来的IP连接数进行防护的方法就失效了,因为每个肉鸡可能只建立一个或者只建立少量的连接。这种***非常难防护,后面给大家介绍防火墙的解决方案
6、针对WEBServer的变种***
通过控制大量肉鸡同时连接网站端口,但是不发送GET请求而是乱七八糟的字符,大部分防火墙分析***数据包前三个字节是GET字符然后来进行http协议的分析,这种***,不发送GET请求就可以绕过防火墙到达服务器,一般服务器都是共享带宽的,带宽不会超过10M,所以大量的肉鸡***数据包就会把这台服务器的共享带宽堵塞造成服务器瘫痪,这种***也非常难防护,因为如果只简单的拦截客户端发送过来没有GET字符的数据包,会错误的封锁很多正常的数据包造成正常用户无法访问,后面给大家介绍防火墙的解决方案
7、针对游戏服务器的***
因为游戏服务器非常多,这里介绍最早也是影响最大的传奇游戏,传奇游戏分为登陆注册端口7000,人物选择端口7100,以及游戏运行端口7200,7300,7400等,因为游戏自己的协议设计的非常复杂,所以***的种类也花样倍出,大概有几十种之多,而且还在不断的发现新的***种类,这里介绍目前最普遍的假人***,假人***是通过肉鸡模拟游戏客户端进行自动注册、登陆、建立人物、进入游戏活动从数据协议层面模拟正常的游戏玩家,很难从游戏数据包来分析出哪些是***哪些是正常玩家。


三、DDoS防护基本方法:
1、.关闭不必要的服务

1.Alerter[通知选定的用户和计算机管理警报]

2.ClipBook[启用“剪贴簿查看器”储存信息并与远程计算机共享]

3.DistributedFileSystem[将分散的文件共享合并成一个逻辑名称,共享出去,关闭后远程计算机无法访问共享

4.DistributedLinkTrackingServer[适用局域网分布式链接]

6.IndexingService[提供本地或远程计算机上文件的索引内容和属性,泄露信息]

7.Messenger[警报]

8.NetMeetingRemoteDesktopSharing[netmeeting公司留下的客户信息收集]

9.NetworkDDE[为在同一台计算机或不同计算机上运行的程序提供动态数据交换]

10.NetworkDDEDSDM[管理动态数据交换(DDE)网络共享]

11.RemoteDesktopHelpSessionManager[管理并控制远程协助]

12.RemoteRegistry[使远程计算机用户修改本地注册表]

13.RoutingandRemoteAccess[在局域网和广域往提供路由服务.***理由路由服务刺探注册信息]

14.Server[支持此计算机通过网络的文件、打印、和命名管道共享]

15.TCP/IPNetBIOSHelper[提供TCP/IP服务上的NetBIOS和网络上客户端的NetBIOS名称解析的支持而使用户能够共享文件、打印和登录到网络]

16.Telnet[允许远程用户登录到此计算机并运行程序]

17.TerminalServices[允许用户以交互方式连接到远程计算机]

18.WindowsImageAcquisition(WIA)[照相服务,应用与数码摄象机]

2、数据包的连接数从缺省值128或512修改为2048或更大,以加长每次处理数据包队列的长度,以缓解和消化更多数据包的连接;

3、将连接超时时间设置得较短,以保证正常数据包的连接,屏蔽非法***包

4、及时更新系统、安装补丁

5、用负载均衡技术,就是把应用业务分布到几台不同的服务器上

6、流量牵引技术,大流量***最理想防御方法,但一般是专业硬件防火墙,价格昂贵。


四、判断网站被DDoS了的表现形式

1、被***主机上有大量等待的TCP连接,用netstat-an命令可看到

2、ping服务器出现丢包严重,或无法ping通.

3、CPU占用率很高,有时候甚至达到100%,严重时会出现蓝屏死机死机(这种是CC***最常见的现象).

4、连接3389时,晌应很慢或提示计算机太忙,无法接受新连接.

5、网络中充斥着大量的无用的数据包,源地址为假.


五、受到DDOS***的应急处理

1、如有富余的IP资源,可以更换一个新的IP地址,将网站域名指向该新IP;

2、停用80端口,使用如81或其它端口提供HTTP服务,将网站域名指向IP:81


六、防御DDOS的建议

1、采用高性能的网络设备

2、充足的网络带宽保证

3、安装专业抗DDOS防火墙

如:冰盾防火墙、金盾防火墙、黑洞防火墙、傲盾防火墙


ddos压力测试工具http://down.51cto.com/data/241097


如何确认是否受到DDOS***?

netstat -ntu | awk '{print $5}' | grep '^[0-9]\{1,\}' | cut -d ':' -f1 | sort |uniq -c | awk '{printf("ip=%s,connection=%d\n",$2,$1)}'

执行后,显示所有IP有多少个连接数。一个IP几个、十几个连接数都算正常,如果成千上百就肯定不正常了。


linux下防DDOS工具

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


DDoSdeflate官方网站:http://deflate.medialayer.com/


DDoSdeflate安装

wget http://www.inetbase.com/scripts/ddos/install.sh //下载安装脚本
chmod 0700 install.sh  //添加权限
./install.sh //执行



DDoSdeflate卸载

wget http://www.inetbase.com/scripts/ddos/uninstall.ddos //下载卸载脚本
chmod 0700 uninstall.ddos //添加权限
./uninstall.ddos


DDoSdeflate配置

默认配置文件:/usr/local/ddos/ddos.conf

内容如下:

##### Paths of the script and other files
PROGDIR="/usr/local/ddos"
PROG="/usr/local/ddos/ddos.sh"
IGNORE_IP_LIST="/usr/local/ddos/ignore.ip.list" //IP地址白名单
CRON="/etc/cron.d/ddos.cron" //定时执行程序
APF="/etc/apf/apf"
IPT="/sbin/iptables"
##### frequency in minutes for running the script
##### Caution: Every time this setting is changed, run the script with --cron
##### option so that the new frequency takes effect
FREQ=1 //检查时间间隔,默认1分钟
##### How many connections define a bad IP? Indicate that below.
NO_OF_CONNECTIONS=150 //最大连接数,超过这个数IP就会被屏蔽,一般默认即可
##### APF_BAN=1 (Make sure your APF version is atleast 0.96)
##### APF_BAN=0 (Uses iptables for banning ips instead of APF)
APF_BAN=1 //使用APF还是iptables。推荐使用iptables,将APF_BAN的值改为0即可。
##### KILL=0 (Bad IPs are'nt banned, good for interactive execution of script)
##### KILL=1 (Recommended setting)
KILL=1 //是否屏蔽IP,默认即可
##### An email is sent to the following address when an IP is banned.
##### Blank would suppress sending of mails
EMAIL_TO="root" //当IP被屏蔽时给指定邮箱发送邮件,推荐使用,换成自己的邮箱即可
##### Number of seconds the banned ip should remain in blacklist.
BAN_PERIOD=600 //禁用IP时间,默认600秒,可根据情况调整


注:如果/usr/local/ddos/ddos.sh统计不正确,可能是启用ipv6的缘故

大概在117行处内容是这样的

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


修改为:

netstat-ntu|awk'{print$5}'|cut-d:-f1|sed-n'/[0-9]/p'|sort|uniq-c|sort-nr&>$BAD_IP_LIST

即可。

参考文献:http://itlaowu.blog.51cto.com/1358545/959880linux下防DDOS工具itlaowu


参考文献:http://hukunlin.blog.51cto.com/545402/337584DDOS专题详细讲解kunlin_hu