我是一名开发人员,我正在尝试深入了解我可以做些什么来使我的应用程序能够承受 DNS 放大类型的攻击。这样的预防方法是否也有助于抵御 DOS 类型的攻击?什么是行业最佳实践、检测、预防、风化此类攻击的指南。有没有常见的陷阱?
如何检测/抵御 DNS 放大攻击?
检测
反射 DNS 攻击的目标是在主机上发送大量网络流量,以导致合法流量被丢弃。当攻击者自己没有控制足够的带宽以超过目标的带宽时选择它。目标是否正在运行 DNS 服务器在很大程度上无关紧要,因为损坏通常在数据包到达服务器时已经完成。
您将看到的第一个症状是您的服务器在网络上没有响应。如果您有一个带外连接(例如物理上坐在它前面的键盘或使用 iLOM、ALOM、iDrac 等),则服务器的负载可能会很低。
如果您怀疑发生了反射 DNS 攻击,您可以使用它tcpdump来查找大量到达的 DNS 响应,这些响应不是您要求的。跟踪请求和响应可能很困难,但如果您没有发出任何请求,那么所有响应都是攻击的一部分。
tcpdump -A -n dst port 53 and not host <local IP address>
该-n选项在这里很重要,因为它告诉tcpdump不要进行 DNS 查找,在这种攻击下会超时。<local IP address>显然应该替换为您的出站 IP 地址。
生存
如果您实际上正在运行名称服务器,源端口随机化可能有助于减少这些虚假响应导致的负载。几年前,Dan Kaminsky 领导了一项合作,使其成为每个现代名称服务器的标准部分。
一些状态防火墙可以跟踪 UDP“会话”。将防火墙配置为丢弃不属于已建立会话的端口 53 上的任何入站内容可能会阻止虚假响应到达您机器上的有效服务,这意味着不必处理数据包。DROP规则比这里的规则更好,REJECT因为REJECT规则实际上向名称服务器发送 ICMP 响应,向您发送虚假的 DNS 响应(这会占用更多带宽),而该DROP规则只是将所有内容都停止在那里并且不会浪费任何额外的带宽。
仍然假设您正在运行名称服务器,请确保缓存已打开并正常工作。(实际上,无论如何现在就这样做。上游服务器会感谢你的。)
不幸的是,如果您的托管服务提供商的带宽已经用尽,这三件事几乎是沧海一粟,这种情况经常发生。
在基于带宽的 DoS 中生存的两个最成功的策略是
- 拥有比攻击者更多的带宽。
- 雇用一个这样做的人。
如果瓶颈在您的托管服务提供商的网络内,他们可能能够进一步过滤流量,只要您可以给他们一些具体和精确的信息,例如“丢弃所有目标端口为 53 的入站 UDP 数据包”。
如果它在他们网络的外部或边缘,或者如果他们无法过滤那么多流量,那么下一步就是一家专门从事缓解 DoS 攻击的公司。这些天有很多选择,如果没有个人经验,我真的不能推荐其中任何一个。ServerFault 上有一个快速列表。普遍的共识是,它们的成本很高,但通常比攻击后的停机时间或勒索请求要低。
如果您确实受到攻击,也需要提防一些事情,我听说有时 DoS 只是在攻击者潜入并窃取数据之前/之后/时的转移。
花一点时间访问这个网站: http ://bindguard.activezone.de
开发此工具是为了丢弃对您命名 (BIND) 的 DNS 攻击。您可以在上面的页面上获得更多信息。不需要防火墙规则。
(披露——我隶属于 bindguard)