Ubuntu Sniffer日志分析的通用流程与工具指南
在Ubuntu系统中,“Sniffer”通常指网络嗅探工具(如tcpdump、Wireshark),其核心功能是捕获网络数据包,而非直接处理系统日志(如/var/log/syslog)。但通过捕获网络流量并分析其中的日志相关信息(如DHCP请求、SSH登录尝试、应用层日志传输),可辅助定位网络问题或安全事件。以下是具体的分析框架与工具应用:
Ubuntu下常用的网络嗅探工具分为两类:
tcpdump(轻量、快速,适合脚本自动化);Wireshark(功能全面,适合深度分析)。sudo)运行,可通过以下命令安装:sudo apt update && sudo apt install tcpdump wireshark # Debian/Ubuntu系统
首先需明确要监听的网络接口(如以太网eth0、无线网卡wlan0),可使用以下命令查看:
ip a # 或 ifconfig(旧版系统)
输出中“UP”状态的接口即为可用接口(如eth0)。
使用tcpdump捕获指定接口的所有流量(保存到output.pcap文件,便于后续分析):
sudo tcpdump -i eth0 -w output.pcap
按Ctrl+C停止捕获。
为减少无关数据,可通过过滤表达式聚焦特定流量:
sudo tcpdump -i eth0 dhcp # 仅捕获DHCP流量
sudo tcpdump -i eth0 port 80 or port 443 # 捕获HTTP/HTTPS流量
sudo tcpdump -i eth0 port 22 # 捕获SSH流量
192.168.1.100)的流量:sudo tcpdump -i eth0 host 192.168.1.100
3306、Nginx8080)的日志流量:sudo tcpdump -i eth0 port 3306
tcpdump读取与过滤捕获文件捕获的output.pcap文件可通过tcpdump重新读取,并进一步过滤:
sudo tcpdump -r output.pcap -nn # -nn:不解析主机名和端口名(提升速度)
示例:过滤出源IP为192.168.1.100、目标端口为80的HTTP请求:
sudo tcpdump -r output.pcap src 192.168.1.100 and dst port 80 -A # -A:以ASCII格式显示内容(便于查看日志文本)
通过-A选项可直接查看HTTP请求中的日志信息(如GET /logs HTTP/1.1)。
Wireshark进行图形化分析Wireshark提供更直观的界面,适合深度分析:
wireshark output.pcap;tcp.port == 80 && http.request:过滤HTTP请求;ip.addr == 192.168.1.100 && udp.port == 53:过滤DNS查询(可能包含日志服务器域名);ssh:过滤SSH登录尝试(查看用户名、密码是否泄露)。User-Agent、POST请求的日志内容)。网络嗅探到的日志流量需与Ubuntu系统本身的日志(如/var/log/syslog、/var/log/auth.log)结合,才能全面定位问题:
journalctl(systemd系统)或直接读取日志文件:sudo journalctl -u sshd # 查看SSH服务日志
sudo less /var/log/auth.log # 查看认证日志(Ubuntu 18.04+)
tcpdump捕获到SSH登录失败流量(如invalid user admin),可同步查看auth.log中的对应日志,确认攻击来源IP或用户账户状态。通过cron定时运行tcpdump,定期捕获流量并保存到指定目录:
# 编辑cron任务
crontab -e
添加以下内容(每5分钟捕获一次eth0接口的HTTP流量,保存到/var/log/http_capture.pcap):
*/5 * * * * sudo tcpdump -i eth0 port 80 -w /var/log/http_capture_$(date +\%F_\%H\%M).pcap
注意:需赋予脚本执行权限(chmod +x script.sh)。
使用grep、awk等工具提取关键信息(如统计SSH登录失败次数):
sudo grep "invalid user" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr
输出结果为:
10 192.168.1.100
5 192.168.1.101
表示192.168.1.100有10次SSH登录失败尝试,192.168.1.101有5次。
tcpdump的-c选项限制捕获包数量(如-c 100捕获100个包);