一、为何要
DDoS
?
随着
Internet
互联网络带宽的增加和多种
DDoS
黑客工具的不断发布,
DDoS
拒绝服务攻击的实施越来越
容易,
DDoS
攻击事件正在成上升趋势。出于商业竞争、打击报复和网络敲诈等多种因素,导致很多
IDC
托管机房、商业站点、游戏服务器、聊天网络等网络服
务商长期以来一直被
DDoS
攻击所困扰,随之而来的是客户投诉、同虚拟主机用户受牵连、法律纠纷、商业损失等一系列问题,因此,解决
DDoS
攻击问题成为
网络服务商必须考虑的头等大事。
一、
什么是
DDoS
?
DDoS
是英文
Distributed Denial of Service
的缩写,意即
“
分布式拒绝服务
”
,那么什么又是拒绝服务
(Denial of Service)
呢
?
可以这么理解,凡是能导致合法用户不能够访问正常网络服务的行为都算是拒绝服务攻击。也就是说拒绝服务攻击的目的非常明确,就是要阻
止合法用户对正常网络资源的访问,从而达成攻击者不可告人的目的。虽然同样是拒绝服务攻击,但是
DDoS
和
DOS
还是有所不同,
DDoS
的攻击策略侧重于
通过很多
“
僵尸主机
”(
被攻击者入侵过或可间接利用的主机
)
向受害主机发送大量看似合法的网络包,从而造成网络阻塞或服务器资源耗尽而导致拒绝服务,分布
式拒绝服务攻击一旦被实施,攻击网络包就会犹如洪水般涌向受害主机,从而把合法用户的网络包淹没,导致合法用户无法正常访问服务器的网络资源,因此,拒绝
服务攻击又被称之为
“
洪水式攻击
”
,常见的
DDoS
攻击手段有
SYN Flood
、
ACK Flood
、
UDP Flood
、
ICMP Flood
、
TCP Flood
、
Connections Flood
、
Script Flood
、
Proxy Flood
等
;
而
DOS
则侧重于通过对主机特定漏洞的利用攻击导致网络栈失效、系统崩溃、主机死机而无法提供正常的网络服务功能,从而造成拒绝服务,常见
的
DOS
攻击手段有
TearDrop
、
Land
、
Jolt
、
IGMP Nuker
、
Boink
、
Smurf
、
Bonk
、
OOB
等。就这两种拒绝服务攻击而言,危害较大的主要是
DDoS
攻击,原因是很难防范,至于
DOS
攻击,
通过给主机服务器打补丁或安装防火墙软件就可以很好地防范,后文会详细介绍怎么对付
DDoS
攻击。 三、被
DDoS
了吗?
DDoS
的表现形式主要有两种,一种为流量攻击,主要是针对网络带宽的攻击,即大量攻击包导致网络带宽被阻塞,合法网络包被虚假的攻击包淹没而无法到达
主机;另一种为资源耗尽攻击,主要是针对服务器主机的攻击,即通过大量攻击包导致主机的内存被耗尽或
CPU
被内核及应用程序占完而造成无法提供网络服务。
如何判断网站是否遭受了流量攻击呢
?
可通过
Ping
命令来测试,若发现
Ping
超时或丢包严重
(
假定平时是正常的
)
,则可能遭受了流量攻击,此时若发现
和你的主机接在同一交换机上的服务器也访问不了了,基本可以确定是遭受了流量攻击。当然,这样测试的前提是你到服务器主机之间的
ICMP
协议没有被路由器
和防火墙等设备屏蔽,否则可采取
Telnet
主机服务器的网络服务端口来测试,效果是一样的。不过有一点可以肯定,假如平时
Ping
你的主机服务器和接在
同一交换机上的主机服务器都是正常的,突然都
Ping
不通了或者是严重丢包,那么假如可以排除网络故障因素的话则肯定是遭受了流量攻击,再一个流量攻击的
典型现象是,一旦遭受流量攻击,会发现用远程终端连接网站服务器会失败。
相对于流量攻击而言,资源耗尽攻击要容易判断一些,假如平时
Ping
网站主机和访问网站都是正常的,发现突然网站访问非常缓慢或无法访问了,而
Ping
还可以
Ping
通,则很可能遭受了资源耗尽攻击,此时若在服务
器上用
Netstat -na
命令观察到有大量的
SYN_RECEIVED
、
TIME_WAIT
、
FIN_WAIT_1
等状态存在,而
ESTABLISHED
很少,则可判定肯定
是遭受了资源耗尽攻击。还有一种属于资源耗尽攻击的现象是,
Ping
自己的网站主机
Ping
不通或者是丢包严重,而
Ping
与自己的主机在同一交换机上的
服务器则正常,造成这种原因是网站主机遭受攻击后导致系统内核或某些应用程序
CPU
利用率达到
100%
无法回应
Ping
命令,其实带宽还是有的,否则就
Ping
不通接在同一交换机上的主机了。
当前主要有三种流行的DDoS
攻击:
1
、SYN/ACK Flood
攻击:
这种攻击方法是经典最有效的
DDoS
方法,可通杀各种系统的网络服务,主要是通过向受害主机发送大量伪造源
IP
和源端口的
SYN
或
ACK
包,导致主机的缓存资源被耗尽或忙于发送回应包而造成拒绝服务,由于源都是伪造的故追踪起来比较困难,缺点是实施起来有一定难度,需要高带宽的僵尸主机支
持。少量的这种攻击会导致主机服务器无法访问,但却可以
Ping
的通,在服务器上用
Netstat -na
命令会观察到存在大量的
SYN_RECEIVED
状态,大量的这种攻击会导致
Ping
失败、
TCP/IP
栈失效,并会出现系统凝固现象,即不响应键
盘和鼠标。普通防火墙大多无法抵御此种攻击。
2
、TCP
全连接攻击:
这种攻击是为了绕过常规防火墙的检查而设计的,一般情况下,常规
防火墙大多具备过滤
TearDrop
、
Land
等
DOS
攻击的能力,但对于正常的
TCP
连接是放过的,殊不知很多网络服务程序
(
如:
IIS
、
Apache
等
Web
服务器
)
能接受的
TCP
连接数是有限的,一旦有大量的
TCP
连接,即便是正常的,也会导致网站访问非常缓慢甚至无法访问,
TCP
全连接攻击就是通
过许多僵尸主机不断地与受害服务器建立大量的
TCP
连接,直到服务器的内存等资源被耗尽而被拖跨,从而造成拒绝服务,这种攻击的特点是可绕过一般防火墙的
防护而达到攻击目的,缺点是需要找很多僵尸主机,并且由于僵尸主机的
IP
是暴露的,因此容易被追踪。
3
、刷Script
脚本攻击:
这
种攻击主要是针对存在
ASP
、
JSP
、
PHP
、
CGI
等脚本程序,并调用
MSSQLServer
、
MySQLServer
、
Oracle
等数据库的网站系
统而设计的,特征是和服务器建立正常的
TCP
连接,并不断的向脚本程序提交查询、列表等大量耗费数据库资源的调用,典型的以小博大的攻击方法。一般来说,
提交一个
GET
或
POST
指令对客户端的耗费和带宽的占用是几乎可以忽略的,而服务器为处理此请求却可能要从上万条记录中去查出某个记录,这种处理过程对
资源的耗费是很大的,常见的数据库服务器很少能支持数百个查询指令同时执行,而这对于客户端来说却是轻而易举的,因此攻击者只需通过
Proxy
代理向主机
服务器大量递交查询指令,只需数分钟就会把服务器资源消耗掉而导致拒绝服务,常见的现象就是网站慢如蜗牛、
ASP
程序失效、
PHP
连接数据库失败、数据库
主程序占用
CPU
偏高。这种攻击的特点是可以完全绕过普通的防火墙防护,轻松找一些
Proxy
代理就可实施攻击,缺点是对付只有静态页面的网站效果会大打
折扣,并且有些
Proxy
会暴露攻击者的
IP
地址。
四、怎么抵御DDoS
?
对付
DDoS
是一个系统工程,想仅仅
依靠某种系统或产品防住
DDoS
是不现实的,可以肯定的是,完全杜绝
DDoS
目前是不可能的,但通过适当的措施抵御
90%
的
DDoS
攻击是可以做到的,基
于攻击和防御都有成本开销的缘故,若通过适当的办法增强了抵御
DDoS
的能力,也就意味着加大了攻击者的攻击成本,那么绝大多数攻击者将无法继续下去而放
弃,也就相当于成功的抵御了
DDoS
攻击。以下为笔者多年以来抵御
DDoS
的经验和建议,和大家分享
!
1、
采用高性能的网络设备
首先要保证网络设备不能成为瓶颈,因此选择路由器、交换机、硬件防火墙等设备的时候要尽量选用知名度高、口碑好的产品。再就是假如和网络提供商有特殊关
系或协议的话就更好了,当大量攻击发生的时候请他们在网络接点处做一下流量限制来对抗某些种类的
DDoS
攻击是非常有效的。
2、
尽量避免NAT
的使用
无论是路由器还是硬件防护墙设备要尽量避免采用网络地址转换
NAT
的使用,因为采用此技术会较大降低网络通信能力,其实原因很简单,因为
NAT
需要对地
址来回转换,转换过程中需要对网络包的校验和进行计算,因此浪费了很多
CPU
的时间,但有些时候必须使用
NAT
,那就没有好办法了。
3、
充足的网络带宽保证
网络带宽直接决定了能抗受攻击的能力,假若仅仅有
10M
带宽的话,无论采取什么措施都很难对抗现在的
SYNFlood
攻击,当前至少要选择
100M
的共
享带宽,最好的当然是挂在
1000M
的主干上了。但需要注意的是,主机上的网卡是
1000M
的并不意味着它的网络带宽就是千兆的,若把它接在
100M
的交
换机上,它的实际带宽不会超过
100M
,再就是接在
100M
的带宽上也不等于就有了百兆的带宽,因为网络服务商很可能会在交换机上限制实际带宽为
10M
,
这点一定要搞清楚。
4、
升级主机服务器硬件
在有网络带宽保证的前提下,请尽量提升硬件配置,要有效对抗每秒
10
万个
SYN
攻击包,服务器的配置至少应该为:
P4 2.4G /DDR 512M /SCSI-HD
,起关键作用的主要是
CPU
和内存,若有志强双
CPU
的话就用它吧,内存一定要选择
DDR
的高速内存,硬盘要尽
量选择
SCSI
的,别只贪
IDE
价格不贵量还足的便宜,否则会付出高昂的性能代价,再就是网卡一定要选用
3COM
或
Intel
等名牌的,若是
Realtek
的还是用在自己的
PC
上吧。
5、
把网站做成静态页面
大量事实证明,把网站尽可能做成静态页面,不
仅能大大提高抗攻击能力,而且还给黑客入侵带来不少麻烦,至少到现在为止关于
HTML
的溢出还没出现,看看吧
!
新 浪、搜狐、网易等门户网站主要都是静态页面,若你非需要动态脚本调用,那就把它弄到另外一台单独主机去,免的遭受攻击时连累主服务器,当然,适当放一些不 做数据库调用脚本还是可以的,此外,最好在需要调用数据库的脚本中拒绝使用代理的访问,因为经验表明使用代理访问你网站的
80%
属于恶意行为。
6、
增强操作系统的TCP/IP
栈
Win2000
和
Win2003
作为服务器操作系统,本身就具备一定的抵抗
DDoS
攻击的能力,只是默认状态下没有开启而已,若开启的话可抵挡约
10000
个
SYN
攻击包,若没有开启则仅能抵御数百个,具体怎么开启,自己去看微软的文章吧
!
利用在
TCP/IP
协议栈实现中信任
IP
碎片中的包的标题头所包含的信息来实现攻击