DoS 攻击时会有以下这些异常表现形式: 大量目标主机域名解析:根据分析,攻击者在进行 DDoS 攻击前总要解析目标的主机名。BIND 域名服务器能够记录这些请求。每台攻击服务器在进行攻击前会发出 PTR 反向查询请求,也就是说在 DDoS 攻击前域名服务器会接收到大量的反向解析目标 IP 主机名的 PTR 查询请求。虽然这不是真正的 DDoS 通信,但能够用来确定 DDoS 攻击的来源。 极限通信流量:当 DDoS 攻击一个站点时,会出现明显超出该网络正常工作时的极限通信流量的现象。现在的技术能够对不同的源地址计算出对应的极限值。当明显超出此极限值时就表明存在 DDoS 攻击的通信。因此可以在主干路由器端建立访问控制列表(Access Control List,ACL)和访问控制规则,以监测和过滤这些通信。 特大型的 ICMP 和 UDP 数据包:正常的 UDP 会话一般都使用小的 UDP 包,通常有效数据内容不超过 10 B。正常的 ICMP 消息长度在 64128 B 之间。那些明显大得多的数据包很有可能就是 DDoS 攻击控制信息,主要含有加密后的目标地址和一些命令选项。一旦捕获到(没有经过伪造的)控制信息,DDoS 服务器的位置就暴露出来了,因为控制信息数据包的目标地址是没有伪造的。 不属于正常连接通信的 TCP 和 UDP 数据包:最隐蔽的 DDoS 工具随机使用多种通信协议(包括基于连接的和无连接协议)发送数据。优秀的防火墙和路由规则能够发现这些数据包。另外,那些连接到高于 1024 而且不属于常用网络服务的目标端口的数据包也非常值得怀疑。 数据段内容只包含文字和数字字符:例如,没有空格、标点和控制字符的数据包。这往往是数据经过 Base 64 编码后的特征。TFN2K 发送的控制信息数据包就是这种类型。TFN2K 及其变种的特征模式是在数据段中有一串 A 字符(AAA…),这是经过调整数据段大小和加密算法后的结果。如果没有使用 Base64 编码,对于使用了加密算法的数据包,这个连续的字符就是空格。 应对 DoS 攻击的方法有以下这些: 分组过滤:为了避免被攻击,可以对特定的流量进行过滤(丢弃),例如,用防火墙过滤掉所有来自某些主机的报文,为了防止 Smurf 攻击而设置过滤器过滤掉所有 ICMP 协议的 ECHO 报文。这种基于特定攻击主机或者内容的过滤方法只限于已经定义的固定的过滤器,不适合动态变化的攻击模式。还有一种 “输入诊断” 方案,由受害者提供攻击特征,沿途的因特网服务提供商(Internet Service Provider,ISP)配合将攻击分组过滤掉,但是这种方案需要各个 ISP 的网络管理员人工配合,工作强度高、时间耗费大,因此较难实施,但效果明显。 源端控制通:常参与 DoS 攻击的分组使用的源 IP 地址都是假冒的,因此如果能够防止 IP 地址假冒,就能够防止此类 DoS 攻击。通过某种形式的源端过滤可以减少或消除假冒 IP 地址的现象,从而防范 DoS 攻击。例如,路由器检查来自与其直接相连的网络分组的源 IP 地址,如果源 IP 地址非法(与该网络不匹配)则丢弃该分组。电信服务提供商利用自身的优势加强假冒地址的控制,可大大降低 DDoS 攻击的影响。现在越来越多的路由器支持源端过滤。但是,源端过滤并不能彻底消除 IP 地址假冒。例如,一个 ISP 的客户计算机仍然能够假冒成该 ISP 网络内成百上千台计算机中的一台。 追溯:追溯发起攻击的源端的方法很多,这些方法假定存在源地址假冒,它试图在攻击的源处抑制攻击,并识别恶意的攻击源。它在 IP 地址假冒的情况下也可以工作,是日后采取必要的法律手段防止将来攻击的必要一步。但是追溯过程中并不能实时控制攻击的危害,当攻击很分散时也不能做到有效追溯。 路由器动态检测和控制:这种方法的基本原理是在路由器上动态检测和控制 DoS 攻击引起的拥塞,其主要依据是 DoS 攻击分组虽然可能来源于多个流,但这些流肯定有某种共同特征,比如有共同的目的地址或源地址(或地址前缀),或者都是 TCP SYN 类型的报文。这些流肯定在某些路由器的某些输出链路上聚集起来并造成大量的分组丢失。这些有共同特征的流可以称为流聚集(aggregate)。其主要设想是流聚集所通过的路由器有可能通过分析分组丢失的历史辨识出这种流聚集。如果一个路由器辨识出了这些高带宽的流聚集,它就可以通知送来这些流聚集的上游路由器限制其发送速率。这种由发生拥塞的路由器发起的回推(pushback)信号可能一直递归地传播到源端。这种机制从直观上不难理解,如果能够实际使用,则对于解决 DoS 攻击问题有很好的效果。但是这种机制在实际的网络中能否实用面临着检测标准、公平性机制、高效实现及运营管理等很多未解决的问题。 |