想象你的 DNS 服务器是一个快递中转站:
- 它负责把 "域名地址"翻译成 "IP 地址"(快递收货地址)
- 攻击者会伪装成正常用户,发送大量伪造的 "快递查询请求"
- 中转站(DNS 服务器)会根据请求生成大量响应,导致网络拥堵
关键风险:DNS 服务器的放大效应(1 个请求可产生 50 倍以上的响应流量)
- 攻击手法:攻击者伪造目标 IP,向 DNS 服务器发送查询请求
- 结果:所有响应会被发送到目标 IP,导致流量过载
- 攻击手法:利用服务器的递归查询功能,查询大量不存在的域名
- 结果:消耗服务器资源,导致正常请求无法处理
- 现象:突然出现大量 UDP 53 端口流量
- 检查命令:
# 查看53端口实时流量
watch "netstat -nup | grep :53"
- 关键指标:
- 短时间内大量相同查询请求
- 来源 IP 集中在某些可疑地区
- 检查命令:
# 查看最近100条DNS日志
tail -100 /var/log/named.log
- 适用场景:仅提供权威解析的服务器
- 操作步骤:
- 编辑配置文件:
vi /etc/named.conf
- 添加:
recursion no;
- 重启服务:
systemctl restart named
- 工具:iptables
- 操作命令:
# 限制每秒最多100个请求
iptables -A INPUT -p udp --dport 53 -m limit --limit 100/s -j ACCEPT
- 配置方法:
- 在
named.conf
中添加:
安装dnssec-utils
增强验证
- 推荐工具:
dnstop
:实时监控 DNS 流量
rkhunter
:检测异常请求模式
- 作用:将流量分散到多个地理位置的服务器
- 效果:提升抗攻击能力 3-5 倍
- 关键补丁:
- CVE-2020-8612(BIND 服务器递归漏洞)
- CVE-2022-29253(DNS 缓存投毒漏洞)
-
设置报警阈值:
# 当53端口流量超过100Mbps时报警
iftop -P -n -N -P -s 10 | grep 53 | awk '{print $1}' | while read line; do if (( $(echo "$line > 100" | bc) )); then sendmail admin@example.com "DNS流量异常"; fi; done
-
定期审查配置:
# 检查是否开启递归查询
grep recursion /etc/named.conf
-
禁用不必要功能:
# 关闭动态更新功能
vi /etc/named.conf
update-policy { deny all; };
症状:网络突然瘫痪,防火墙显示 53 端口流量暴增
排查步骤:
iftop
发现大量 UDP 53 端口流量
- 检查日志发现同一 IP 每秒发送 2000 + 查询
- 使用
dnstop
定位到异常查询模式
解决方案:
- 临时封禁攻击 IP:
iptables -A INPUT -s 192.168.1.100 -j DROP
- 启用查询频率限制
- 关闭递归查询功能
总结:DNS 服务器防护就像管理快递中转站,要做到 "三不":不随意接受可疑包裹(限制查询)、不泄露内部信息(关闭递归)、不忽视异常情况(实时监控)。通过简单配置,就能大幅降低被攻击的风险。