温馨提示×

怎样通过Linux Sniffer分析网络日志

小樊
44
2025-12-17 06:53:49
栏目: 智能运维

Linux Sniffer分析网络日志实操指南

一、工具与场景选择

  • 抓包与离线分析:优先使用tcpdump(命令行、轻量、可保存为pcap),配合Wireshark/tshark做深度解析与可视化。
  • 文本型业务日志:如**/var/log/下的系统日志或Nginx/Apache访问日志,使用grep、awk、sed、sort、uniq、journalctl**进行检索与统计。
  • 正则匹配流量内容:使用ngrep快速定位包含特定字符串(如GET /、error)的会话。
  • 安装示例(按需选择其一或多项):
    • Debian/Ubuntu:sudo apt-get update && sudo apt-get install -y tcpdump wireshark tshark ngrep
    • CentOS/RHEL:sudo yum install -y tcpdump wireshark wireshark-cli ngrep
    • 以上工具覆盖了命令行抓包、图形化分析、命令行分析、正则匹配的主流需求。

二、抓包采集与保存

  • 实时抓取并写入文件:sudo tcpdump -i eth0 -w capture.pcap(建议始终保存为**.pcap**以便后续分析)。
  • 读取已有抓包文件:tcpdump -r capture.pcap
  • 只抓取特定流量,减少噪声:
    • 按主机:sudo tcpdump -i eth0 host 192.168.1.10
    • 按端口:sudo tcpdump -i eth0 port 80 or port 443
    • 按协议:sudo tcpdump -i eth0 icmp
    • 组合过滤:sudo tcpdump -i eth0 ‘tcp port 80 and host 192.168.1.10’
  • 控制抓取规模:sudo tcpdump -i eth0 -c 1000(抓取1000个包后自动停止)。
  • 提高可读性:sudo tcpdump -i eth0 -e -n -v(显示链路层头部、禁用解析、更详细输出)。

三、离线分析与统计

  • 文本日志快速检索与统计
    • 关键字检索:grep ‘error’ /var/log/syslog
    • 时间范围:journalctl --since “2025-12-01 00:00:00” --until “2025-12-01 23:59:59”
    • Top N IP:awk ‘{++c[$1]} END {for (ip in c) print c[ip], ip | “sort -nr | head -10”}’ /var/log/nginx/access.log
    • 提取访问路径:grep -oE ‘"(GET|POST) [^ ]+ HTTP’ /var/log/nginx/access.log | cut -d’ ’ -f2 | sort | uniq -c | sort -nr
  • pcap 深度分析
    • 读取并筛选:tcpdump -r capture.pcap ‘tcp port 80’ -n
    • 仅导出 HTTP 流量到新文件:tcpdump -r capture.pcap -w http_only.pcap ‘tcp port 80’
    • 命令行统计(tshark):tshark -r capture.pcap -q -z io,stat,1,‘tcp.port==80’
    • 正则匹配内容(ngrep):sudo ngrep -d eth0GET /’ port 80
  • 典型分析场景
    • 异常流量识别:观察是否存在突发大流量或单一来源/目标的异常连接(可用于初步判断DDoS特征)。
    • Web 攻击线索:在 HTTP 流量中检索可疑字符串(如**’ or 1=1**、union select