研究人员发现,攻击者常常会在基于海量带宽的DDoS攻击(分布式拒绝服务攻击)中使用UDP泛洪攻击(UDP floods)。因为UDP协议是一种无连接的协议,攻击者可以轻松地利用脚本来生成UDP数据包。
DNS主要使用的是UDP协议,但是在某些特殊情况下,DNS也会根据网络环境选择使用TCP协议。因为攻击者在对目标服务器进行分布式拒绝服务攻击的过程中,非常喜欢使用UDP/DNS协议。
由于DNS协议是一个十分重要的网络协议,对于网络从业人员而言,其高可用性是最重要的考虑因素。为了打破该协议的可用性,恶意攻击者可以向DNS解析器发送大量伪造的查询请求。值得注意的是,目前互联网中存在着上百万开放的DNS解析器,其中还有很多属于家庭网关。DNS解析器会认为这些伪造的查询请求是真实有效的,并且会对这些请求进行处理,在处理完成之后,便会向请求源返回DNS响应信息。如果查询请求的数量非常的多,DNS服务器很有可能会发送大量的DNS响应信息。这也就是我们常说的放大攻击,因为这种方法利用的是DNS解析器中的错误配置。如果DNS服务器的配置出现错误,那么DNS解析器很可能会在接收到一个非常小的DNS查询请求之后,向目标主机返回大量的payload。在另一种类型的攻击中,攻击者还可以通过向DNS服务器发送不符合规则的查询请求来进行攻击。
为此,我们将会在这篇文章中给大家介绍十个非常简单而实用的方法。大家可以利用这些方法来缓解DNS泛洪攻击所带来的影响,以便更好地保护DNS基础设施。
一、屏蔽主动发送的DNS响应信息
一个典型的DNS交换信息是由请求信息组成的。DNS解析器会将用户的请求信息发送至DNS服务器中,在DNS服务器对查询请求进行处理之后,服务器会将响应信息返回给DNS解析器。但值得注意的是,响应信息是不会主动发送的。
攻击者需要在请求信息抵达DNS解析器之前部署FortiDDoS,它可以作为一个开放的DNS解析器,或者作为DNS查询请求的查询服务器。
这是一种内嵌于网络中的设备,它每秒可以处理数百万次查询请求,而且还可以将查询信息和相对应的响应信息记录在内存表之中。
如果服务器在没有接收到查询请求之前,就已经生成了对应的响应信息,那么服务器就应该直接丢弃这一响应信息。这种机制能够有效地缓解反射攻击所带来的影响。
二、丢弃快速重传数据包
即便是在数据包丢失的情况下,任何合法的DNS客户端都不会在较短的时间间隔内向同一DNS服务器发送相同的DNS查询请求。
因此,如果从相同源地址发送至同一目标地址的相同查询请求发送频率过高,那么服务器必须将这些请求数据包丢弃。
三、如果DNS服务器已经将响应信息成功发送了,那么就应该禁止服务器在较短的时间间隔内对相同的查询请求信息进行响应-启用TTL
对于一个合法的DNS客户端而言,如果它接收到了响应信息,那么它就不会再次发送相同的查询请求。
如果数据包的TTL生存时间到了,那么系统应该对每一个响应信息进行缓存处理。
当攻击者通过大量查询请求来对DNS服务器进行攻击时,我们就可以屏蔽掉不需要的数据包了。
四、丢弃未知来源的DNS查询请求和响应数据
通常情况下,攻击者会利用脚本来对目标进行分布式拒绝服务攻击(DDoS攻击),而且这些脚本通常针对的都是软件中的漏洞。因此,如果我们能够在服务器中部署简单的匿名检测机制,我们就可以限制传入服务器的数据包数量了。
(责任编辑:安博涛)