Ubuntu Sniffer检测DDoS攻击的实用流程
一 工具与安装
- 抓包与分析:tcpdump(命令行、轻量)、Wireshark(图形化、深度解析)
- 实时带宽与连接:iftop(按主机/端口看速率)、nethogs(按进程看带宽)
- 历史统计与基线:vnstat(记录与回看流量趋势)
- 安装示例(Ubuntu 22.04):
- sudo apt update && sudo apt install tcpdump wireshark iftop nethogs vnstat
- sudo usermod -aG wireshark $USER && newgrp wireshark
- sudo vnstat -u -i eth0(将 eth0 替换为你的实际接口)
二 快速检测流程
- 步骤1 观察总体带宽是否异常
- 运行:sudo iftop -i eth0
- 判据:某单一来源或少量来源在短时间内占用异常高的带宽,或总带宽突增且持续,属于典型异常征兆。
- 步骤2 抓包定位攻击类型
- 保存现场:sudo tcpdump -i eth0 -w capture.pcap
- 快速过滤示例:
- 大量仅SYN的包(疑似 SYN Flood):sudo tcpdump -i eth0 ‘tcp[tcpflags] & (tcp-syn) != 0 and tcp[tcpflags] & (tcp-ack) = 0’
- 某主机的全部流量:sudo tcpdump -i eth0 host 192.168.1.100
- 某端口流量:sudo tcpdump -i eth0 port 80
- 步骤3 统计高频来源
- 统计每个源IP的连接尝试数:sudo tcpdump -i eth0 -n -q | awk ‘{print $3}’ | cut -d. -f1-4 | sort | uniq -c | sort -nr
- 判据:少数IP的连接数远高于基线,需重点关注。
- 步骤4 图形化深入分析
- 用 Wireshark 打开 capture.pcap,使用显示过滤器:
- tcp.syn == 1 and tcp.ack == 0(仅SYN)
- 通过“统计 → 会话/端点/流量分布”查看异常主机、异常协议占比与突发会话。
- 步骤5 关联进程与历史基线
- 按进程排查:sudo nethogs -i eth0
- 对比历史:vnstat 查看当日/当月带宽曲线,判断是否显著偏离常态。
三 常见DDoS特征与判别要点
- 带宽型(如 UDP/ICMP Flood):iftop 显示总带宽或某IP带宽在短时间内急剧飙升,无明显业务对应。
- 协议层(如 SYN Flood):tcpdump/Wireshark 中出现大量仅 SYN、缺少 ACK 的包;连接未完成三次握手却大量堆积。
- 连接耗尽(如 ACK/RST Flood、连接表耗尽):会话/端点统计中出现异常多的半开或异常短连接,源IP分散但行为一致。
- 应用层(如 HTTP Flood):针对 80/443 的并发请求数、请求速率与失败率异常升高,与正常访问画像不符。
四 告警与缓解建议
- 轻量告警脚本思路
- 阈值示例:1 分钟内仅 SYN 包超过 1000 即触发告警
- 示例:sudo tcpdump -i eth0 -c 1000 ‘tcp[tcpflags] & (tcp-syn) != 0 and tcp[tcpflags] & (tcp-ack) = 0’ | mail -s “SYN Flood Alert” admin@example.com
- 处置要点
- 抓包留证:先保存 pcap 再变更配置,便于溯源与复盘。
- 联动防护:Sniffer 仅用于检测,无法直接“防止”攻击;结合 防火墙/清洗/上游限速 等手段处置,并制定应急流程与联系人清单。
- 合法与性能
- 仅在授权范围内抓包;抓包与深度解析会占用 CPU/磁盘/内存,建议限制接口、时间窗与过滤条件,必要时在离线环境分析。