Ubuntu Sniffer怎样识别异常流量
小樊
39
2025-12-08 00:14:29
Ubuntu 下识别异常流量的实用方法
一、识别思路与流程
建立“正常行为”基线:统计接口的带宽使用率 、协议占比 、连接数/会话时长 、服务响应时间 等,后续出现显著偏离即标记为可疑。
抓包与解析:在需要时启用混杂模式 抓取全量流量,按协议/主机/端口进行过滤与解析,便于定位异常会话与载荷。
统计与可视化:用实时工具观察突发流量、异常连接与异常主机,再结合协议解析确认是否为恶意行为。
签名与规则检测:使用Snort 等 IDS 加载规则,对已知攻击特征(如异常 ICMP、SQLi、XSS 特征等)进行匹配告警。
合规与性能:抓包与分析涉及敏感数据与资源占用,务必在合法授权 范围内使用,并控制抓包规模与保存时长。
二、快速发现异常的工具与命令
实时带宽与连接异常
使用iftop 查看按源/目的 IP 与端口的实时带宽:sudo iftop -i ens33
使用nethogs 定位按进程占用带宽:sudo nethogs ens33
使用nload 观察接口总吞吐:sudo nload
使用bmon 查看更细的统计与图形:sudo bmon
使用vnstat 查看历史与按日/月统计:vnstat -i ens33
抓包与深度解析
抓取并写盘:sudo tcpdump -i ens33 -w capture.pcap
按主机/协议过滤:sudo tcpdump -i ens33 host 192.0.2.10 and tcp ;sudo tcpdump -i ens33 port 80
用Wireshark 打开 capture.pcap,结合过滤器做协议与载荷分析(如 http、dns、icmp 等)
可视化拓扑与协议分布
使用Etherape 观察节点/协议的实时关系与流量占比,快速发现异常热点主机或异常协议。
三、用 Snort 做特征规则检测
安装与验证(示例为 Snort 3)
编辑规则文件(如**/usr/local/etc/rules/local.rules**)添加测试规则:
alert icmp any any -> any any (msg:“ICMP Traffic Detected”; sid:10000001 ; metadata:policy security-ips alert;)
验证规则:snort -c /usr/local/etc/snort/snort.lua -R /usr/local/etc/rules/local.rules
在接口ens33 上以检测模式运行并输出到控制台:
sudo snort -c /usr/local/etc/snort/snort.lua -R /usr/local/etc/rules/local.rules -i ens33 -A alert_fast -s 65535 -k none
规则示例(异常 ICMP 与超大 ICMP)
超大 ICMP 报文:
alert icmp any any -> any any (msg:“ICMP Large ICMP Packet”; dsize:>800 ; reference:arachnids,246 ; classtype:bad-unknown; sid:499 ;)
运行与告警查看
运行后从另一终端执行 ping,若规则生效将在控制台看到对应告警 输出(可用于验证环境)。
四、常见异常场景与排查要点
DDoS/突发大流量:iftop/nload 显示某接口或某 IP 的突发吞吐 远超基线;抓包可见SYN Flood 、UDP/ICMP 洪泛等特征。
扫描与探测:tcpdump/Wireshark 发现大量SYN 扫描 (半开连接)、端口枚举;可结合 Snort 规则识别常见扫描特征。
可疑应用与横向移动:nethogs 发现未知进程占用带宽;抓包/Wireshark 可见异常C&C 域名/IP 、非常规端口通信。
协议滥用与异常载荷:Wireshark 检索 HTTP 中的SQL 注入 关键字(如 ’ OR 1=1)、异常User-Agent ;识别 XSS 可疑脚本片段;Snort 规则可对这些特征做精确匹配告警。
五、合规与性能建议
仅在授权范围 内抓包与分析,避免收集、存储不必要的隐私数据 ;对抓包文件设置合适的保留周期 与访问控制。
控制抓包规模(BPF 过滤、采样)、避免在高负载接口长期全量抓包;必要时将抓包与分析分离 到不同主机,降低对业务的影响。