Wireshark抓包排查DNS攻击实录:从tcpdump到iptables封禁的完整链路 Wireshark实战从DNS异常流量分析到iptables精准防御全记录那天凌晨3点值班手机突然响起刺耳的告警声——核心DNS服务器CPU使用率突破90%阈值。作为运维负责人我立刻意识到这绝非普通的业务高峰。登录服务器后top命令显示named进程消耗了异常高的资源而监控图表上的请求量曲线呈现出诡异的锯齿状波动。一场针对DNS服务的隐蔽攻击正在发生而接下来的6小时我将带你完整还原这场攻防战的全过程。1. 异常定位与数据捕获面对突发的性能问题首先要确定是业务激增还是恶意攻击。通过netstat -anu快速检查UDP 53端口的连接状态发现大量来自不同IP的ESTABLISHED连接这明显不符合DNS查询的短连接特性。使用tcpdump进行流量镜像是最直接的取证方式tcpdump -iany port 53 -nnv -w dns_attack.pcap -C 100 -W 10这个命令有几个关键参数-iany监听所有网络接口port 53限定DNS服务端口-C 100每100MB分割一个文件-W 10最多保留10个轮转文件提示在生产环境抓包时务必限制文件大小避免磁盘被撑满导致系统崩溃2. Wireshark高级分析技巧将捕获的pcap文件下载到本地后用Wireshark打开的第一件事是检查Statistics Protocol Hierarchy。这时发现DNS协议占比高达85%远超正常比例。接下来通过分层分析法逐步定位攻击特征2.1 攻击源定位在过滤栏输入dns.flags.response 0筛选所有DNS查询请求然后使用Statistics Endpoints功能IP地址包数量占比203.0.113.4512,45838.7%198.51.100.229,87230.6%192.0.2.675,32116.5%前三名IP发送了超过85%的请求这种分布明显异常。进一步分析这些IP的查询行为ip.src 203.0.113.45 dns.qry.name matches [a-z0-9]{16}\.example\.com发现大量符合随机字符串模式的子域名查询这是典型的DNS隧道攻击特征。2.2 攻击模式识别通过Statistics DNS查看查询类型分布查询类型数量典型用途A28,745IPv4地址解析TXT3,210文本记录常用于数据渗出AAAA1,023IPv6地址解析异常高比例的TXT记录请求值得警惕。使用以下过滤器提取可疑负载dns.qry.type 16 frame.len 5123. 应急响应与防御部署确认攻击特征后需要立即实施防御措施。iptables作为Linux内核级防火墙能提供实时流量控制。3.1 基础封禁策略针对已识别的攻击源IP进行封锁iptables -I INPUT -p udp --dport 53 -s 203.0.113.45 -j DROP iptables -I INPUT -p udp --dport 53 -s 198.51.100.22 -j DROP3.2 高级模式匹配对于随机子域名攻击单纯封IP可能不够。使用字符串匹配拦截特定模式iptables -I INPUT -p udp --dport 53 -m string \ --hex-string |07|example|03|com|00| --algo bm --from 40 --to 100 -j DROP这个规则会匹配所有包含example.com的DNS查询请求。其中--from 40从UDP载荷第40字节开始检查--to 100检查到100字节为止3.3 频率限制策略对于尚未确认的潜在攻击源可以采用限频措施iptables -A INPUT -p udp --dport 53 -m hashlimit \ --hashlimit-name dnslimit --hashlimit-mode srcip \ --hashlimit-above 50/sec --hashlimit-burst 100 -j DROP该规则限制每个源IP每秒不超过50次DNS查询突发允许100次。4. 防御效果验证与系统加固实施防御措施后需要验证效果并建立长期防护机制。4.1 实时监控方案部署持续监控脚本while true; do date /var/log/dns_monitor.log netstat -anu | grep :53 | awk {print $5} | cut -d: -f1 | sort | uniq -c | sort -nr /var/log/dns_monitor.log sleep 60 done4.2 DNS服务器优化修改BIND配置提高抗攻击能力options { rate-limit { responses-per-second 1000; window 15; }; max-clients-per-query 10; max-cache-size 1G; };4.3 架构级防护建议对于关键业务DNS服务建议部署以下防护层前端清洗使用Cloudflare等DNS防火墙服务流量整形在边界路由器实现QoS限速隐藏式防御对合法业务域名使用CNAME别名日志审计ELK收集分析DNS查询日志这场攻防战最终以成功阻断攻击告终但也暴露出我们在DNS安全防护上的盲点。事后我们建立了更完善的监控体系将关键指标纳入Prometheus监控并设置了分级告警机制。真正有效的防御不是单点技术而是形成检测、响应、溯源、加固的完整闭环。