Wireshark自动化抓包告警:异常检测配置

Wireshark自动化抓包告警:异常检测配置

【免费下载链接】wireshark Read-only mirror of Wireshark's Git repository at https://gitlab.com/wireshark/wireshark. ⚠️ GitHub won't let us disable pull requests. ⚠️ THEY WILL BE IGNORED HERE ⚠️ Upload them at GitLab instead. 【免费下载链接】wireshark 项目地址: https://gitcode.com/gh_mirrors/wi/wireshark

网络运维中,手动排查异常流量如同大海捞针。Wireshark提供的命令行工具与过滤机制可构建自动化检测体系,实时捕捉异常流量并触发告警。本文将分步骤讲解配置流程,涵盖关键模块路径与实操案例。

核心组件与工作原理

Wireshark的自动化告警依赖三大模块协同工作:

  • 抓包引擎dumpcap.c负责底层数据包捕获,支持环形缓冲区与后台运行模式
  • 过滤系统epan/dfilter/实现强大的显示过滤逻辑,语法定义见doc/README.display_filter
  • 统计分析:tshark的-z参数调用wsutil/中的统计函数,生成异常检测所需的流量指标

异常检测流程如下: mermaid

环境准备与基础配置

1. 编译与安装

确保系统已安装必要依赖,从源码编译:

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local
make -j4
sudo make install

编译配置详情见CMakeLists.txt,安装文档参考INSTALL

2. 抓包权限配置

普通用户需添加cap_net_raw权限:

sudo setcap cap_net_raw,cap_net_admin=eip /usr/local/bin/dumpcap

详细权限说明见doc/README.linux

自动化抓包配置

1. 环形缓冲区设置

使用dumpcap创建循环存储的抓包任务,避免磁盘占满:

dumpcap -i eth0 -b duration:300 -b files:10 -w /var/wireshark/capture.pcapng
  • -b duration:300:每5分钟生成一个文件
  • -b files:10:最多保留10个文件
  • 更多参数见dumcap.c源码注释

2. 后台运行与日志

创建systemd服务实现开机自启:

[Unit]
Description=Wireshark Automated Capture
After=network.target

[Service]
ExecStart=/usr/local/bin/dumpcap -i eth0 -b duration:300 -b files:10 -w /var/wireshark/capture.pcapng
User=wireshark
Group=wireshark
Restart=always

[Install]
WantedBy=multi-user.target

服务文件存放路径:/etc/systemd/system/wireshark-capture.service

异常检测规则配置

1. 关键过滤规则示例

SYN Flood检测
tshark -r /var/wireshark/capture.pcapng -Y "tcp.flags.syn==1 && tcp.flags.ack==0" -T fields -e frame.time_epoch -e ip.src -e tcp.srcport > syn_flood.log

过滤逻辑基于tcp_dissect中的标志位解析

DNS异常查询检测
tshark -r /var/wireshark/capture.pcapng -Y "dns.qry.type==3 && dns.count.answers==0" -z io,stat,300,"COUNT(dns) as DNS请求数","COUNT(dns.qry.type==3) as 异常类型占比"

DNS协议解析实现见packet-dns.c

2. 统计分析配置

使用tshark的统计功能建立流量基线:

tshark -r /var/wireshark/capture.pcapng -z conv,tcp -z io,phs
  • -z conv,tcp:TCP会话统计
  • -z io,phs:协议分层统计 统计模块源码位于epan/stat_groups.c

告警触发与响应

1. 阈值监控脚本

创建Python监控脚本tools/alert.py:

import subprocess
import re
import smtplib

def check_syn_flood():
    result = subprocess.run(
        ['tshark', '-r', '/var/wireshark/capture.pcapng', 
         '-Y', 'tcp.flags.syn==1 && tcp.flags.ack==0', 
         '-T', 'fields', '-e', 'ip.src'],
        capture_output=True, text=True
    )
    src_ips = result.stdout.splitlines()
    if len(src_ips) > 100:  # 阈值设为100个SYN包/5分钟
        send_alert(f"SYN Flood detected from {len(set(src_ips))} IPs")

def send_alert(message):
    # 邮件发送逻辑
    server = smtplib.SMTP('smtp.example.com', 587)
    server.sendmail('alerts@example.com', 'admin@example.com', message)

if __name__ == "__main__":
    check_syn_flood()

2. 定时任务配置

添加crontab任务每5分钟执行一次:

*/5 * * * * /usr/bin/python3 /usr/local/share/wireshark/tools/alert.py >> /var/log/wireshark/alert.log 2>&1

高级应用:自定义异常检测器

1. 开发显示过滤函数

epan/dfilter/dfunctions.c中添加自定义检测函数:

static bool df_func_anomaly_detector(GList *arg1list, GList *arg2list, GList **retval) {
    // 实现基于熵值的异常检测算法
    // 参数处理逻辑参考现有函数df_func_gt
}

df_func_def_t df_functions[] = {
    {"anomaly_detector", df_func_anomaly_detector, FT_BOOLEAN, 1, 1, semcheck_anomaly_detector},
    // 其他函数定义...
};

详细开发指南见doc/README.display_filter的"Display Filter Functions"章节。

2. 编译自定义模块

修改epan/dfilter/CMakeLists.txt添加新源文件,重新编译生效。

最佳实践与排障

1. 性能优化建议

  • 对大流量接口使用editcap.c的流量采样功能:
    editcap -r input.pcapng output.pcapng 0-1000  # 只保留前1000个包
    
  • 过滤规则优化参考doc/wsug_src/WSUG_chapter_work.adoc

2. 常见问题排查

  • 抓包文件损坏:使用capinfos.c验证文件完整性
    capinfos -v /var/wireshark/capture.pcapng
    
  • 过滤规则语法错误:使用dftest.c调试
    dftest "tcp.flags.syn==1 && ip.src==192.168.1.1"
    

总结与扩展方向

本文配置的自动化检测系统可有效监控常见网络异常,关键改进方向:

  1. 整合机器学习模型:使用plugins/开发TensorFlow Lite推理模块
  2. 分布式部署:结合sharkd.c实现远程抓包分析
  3. 可视化面板:集成ui/qt/开发自定义告警仪表盘

完整项目文档见README.md,更多高级功能参考doc/wsdg_src/中的开发者指南。

【免费下载链接】wireshark Read-only mirror of Wireshark's Git repository at https://gitlab.com/wireshark/wireshark. ⚠️ GitHub won't let us disable pull requests. ⚠️ THEY WILL BE IGNORED HERE ⚠️ Upload them at GitLab instead. 【免费下载链接】wireshark 项目地址: https://gitcode.com/gh_mirrors/wi/wireshark

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值