Ubuntu Sniffer网络数据备份实操指南
一、概念澄清与总体思路
- Sniffer是用于抓取网络流量的工具(如tcpdump、Wireshark),本身不提供“备份”功能。所谓“备份”,通常指将抓到的pcap文件安全、长期地保存与归档,便于后续分析或审计。
- 推荐做法:用tcpdump按时间/大小滚动抓包生成多个pcap文件,再用rsync或企业备份方案把文件远程复制/离线归档,并设置日志与监控确保完整性。
二、本地滚动抓包并自动备份
- 安装工具
- 在Ubuntu上安装抓包与分析工具:
- sudo apt-get update
- sudo apt-get install -y tcpdump
- sudo apt-get install -y wireshark # 可选,用于后期分析
- 滚动抓包示例(按大小切分)
- 每100MB生成一个文件,最多10个文件,保存到**/var/captures**:
- sudo mkdir -p /var/captures
- sudo tcpdump -i eth0 -w /var/captures/cap_%Y%m%d_%H%M%S.pcap -C 100 -W 10 -s 0
- 关键参数说明:
- -w 写入文件;-C 按大小(单位:百万字节)滚动;-W 最多保留文件数;-s 0 抓取完整报文;-i 指定网卡(可用tcpdump -D查看接口列表)。
- 定时备份到远端(rsync over SSH)
- 将新产生的 pcap 增量同步到备份服务器(示例:10.0.0.10 的 /backup/captures):
- rsync -avz --partial --bwlimit=5000 --remove-source-files /var/captures/ backup@10.0.0.10:/backup/captures/
- 说明:–remove-source-files 在成功同步后删除本地已备份文件;如要保留本地,请去掉该参数。
- 可选:按时间计划任务
- 例如每日02:00执行一次同步(先抓包、后备份):
- 0 2 * * * /usr/bin/rsync -avz --partial /var/captures/ backup@10.0.0.10:/backup/captures/ >> /var/log/sniffer_backup.log 2>&1
三、长期保存与归档策略
- 命名规范
- 使用包含时间戳的文件名(如:cap_20251219_0200.pcap),便于检索与去重。
- 生命周期管理
- 本地仅保留短期(如最近7天)滚动文件;远端按保留策略(如30/90天)归档与清理。
- 校验与完整性
- 传输后可用sha256sum生成校验值并入库;必要时对归档目录做定期校验与清单比对。
- 离线/异地备份
- 对关键时段(如故障窗口)的 pcap,建议再做一次离线拷贝(如移动硬盘/对象存储)以规避单点风险。
四、自动化脚本示例
- 功能:按大小滚动抓包 → 同步到远端 → 记录日志与统计
- 保存为:/usr/local/bin/sniffer_backup.sh
#!/usr/bin/env bash
set -Eeuo pipefail
IFACE="${1:-eth0}"
CAP_DIR="/var/captures"
LOG_FILE="/var/log/sniffer_backup.log"
RSYNC_USER="backup"
RSYNC_HOST="10.0.0.10"
RSYNC_DIR="/backup/captures"
RETENTION_DAYS=7
rotate_and_backup() {
local ts
ts=$(date +"%Y%m%d_%H%M%S")
local cur="$CAP_DIR/cap_${ts}.pcap"
echo "[$(date)] Start capture on $IFACE -> $cur" | tee -a "$LOG_FILE"
sudo tcpdump -i "$IFACE" -w "$cur" -C 100 -W 10 -s 0 >> "$LOG_FILE" 2>&1
if rsync -avz --partial --bwlimit=5000 --remove-source-files "$CAP_DIR/" "$RSYNC_USER@$RSYNC_HOST:$RSYNC_DIR/" >> "$LOG_FILE" 2>&1; then
echo "[$(date)] Backup succeeded: $cur" | tee -a "$LOG_FILE"
else
echo "[$(date)] Backup FAILED: $cur" | tee -a "$LOG_FILE"
fi
find "$CAP_DIR" -type f -mtime +"$RETENTION_DAYS" -delete 2>/dev/null || true
}
mkdir -p "$CAP_DIR"
rotate_and_backup
- 赋权与定时
- chmod +x /usr/local/bin/sniffer_backup.sh
- 编辑计划任务(示例每5分钟执行一次):
- crontab -e
- */5 * * * * /usr/local/bin/sniffer_backup.sh >> /var/log/sniffer_backup_run.log 2>&1
- 查看运行状态
- tail -f /var/log/sniffer_backup.log
- grep CRON /var/log/syslog # 验证 cron 是否触发执行
五、合规与性能注意事项
- 合法合规
- 抓包可能触及隐私与合规要求,务必在授权范围内使用,避免抓取敏感明文数据(如未加密凭据)。
- 性能与丢包
- 高流量环境下,合理设置过滤器(如仅抓取目标IP/端口/协议),避免无谓数据;必要时提升快照长度与系统资源,减少丢包。
- 权限与环境
- 抓包通常需要root或具备相应能力;在Cron中执行时,确保PATH与权限正确,脚本具备可执行权限。