一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

DNS 服务器查询请求的频率限制和防御

时间:2026-07-27 07:35:59 编辑:袖梨 来源:一聚教程网

核心目标是防止DNS服务器被用作反射放大源,而非拦截所有恶意流量;需白名单放行可信源、iptables限速防高频探测、屏蔽ANY等高危查询类型,并在服务端禁用递归与启用速率控制。

限制 dns 服务器查询请求频率,核心目标不是“拦住所有坏流量”,而是让服务器不响应异常请求、不被用作反射放大源。重点在控制响应行为,而非识别攻击者。

白名单放行可信来源

公开暴露的 DNS 服务若对全网开放 UDP 53 端口,极易被伪造源 IP 滥用。应只允许明确可信的网段访问:

  • 内网管理段(如 192.168.10.0/24
  • 运维跳板机或监控系统固定 IP
  • 上游递归服务器地址(如有)

规则顺序很重要:先放行,再拒绝。示例命令:

iptables -A INPUT -p udp --dport 53 -s 192.168.10.0/24 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j DROP

用 iptables 限速防高频探测

普通客户端极少每秒发起超过 5 次 DNS 查询;攻击脚本或反射工具则必然高频触发。可用 recenthashlimit 模块实现轻量级限速:

  • recent 方式(适合简单统计):
    iptables -A INPUT -p udp --dport 53 -m recent --set --name dnsquery --rsource
    iptables -A INPUT -p udp --dport 53 -m recent --name dnsquery --rcheck --seconds 1 --hitcount 5 -j DROP
  • hashlimit 方式(更稳定,推荐):
    iptables -A INPUT -p udp --dport 53 -m hashlimit
      --hashlimit-above 10/sec
      --hashlimit-burst 2
      --hashlimit-mode srcip
      --hashlimit-name dns_limit -j DROP

屏蔽高危 DNS 查询类型

ANY、TXT、AXFR 这类响应体大、信息量高的查询,是 DNS 放大攻击的主力。仅靠限速不够,需直接丢弃:

  • u32 模块匹配 DNS 报文中的查询类型字段(如 ANY 对应 type=255)
  • 典型命令(屏蔽 ANY 查询):
    iptables -A INPUT -p udp --dport 53 -m u32 --u32 "28&0xFFFF=0xFF" -j DROP
  • 搭配日志可辅助分析:
    -j LOG --log-prefix "DNS-ANY-BLOCK: "

服务端配合禁用递归与启用速率控制

防火墙规则是第一道防线,但 DNS 服务本身也需加固:

  • BIND 9.11+ 可在 named.conf 中启用 rate-limit:
    rate-limit { responses-per-second 10; window 10; log-only no; };
  • 务必关闭递归查询(recursion no;),尤其对外提供服务时
  • 禁用区域传输(allow-transfer { none; };),防止 AXFR 泄露

热门栏目