上一节我们学了 Wireshark 手动抓包分析,而 Snort 和 Zeek 是企业级的自动化流量分析工具:

  • Snort 是基于特征检测的轻量级 IDS/IPS
  • Zeek(原 Bro)是基于协议分析的行为流量监控工具两者互补,是企业内网安全监控的核心搭档。

一、先搞懂:Snort vs Zeek 核心差异

表格

维度SnortZeek
核心定位基于规则的入侵检测 / 防御系统基于协议分析的行为流量监控平台
工作原理用特征库匹配攻击流量(类似杀毒软件)解析完整协议栈,生成标准化事件日志,用脚本扩展分析
核心输出告警日志(匹配规则即告警 / 阻断)全量协议日志(连接、DNS、HTTP、文件传输等)
优势轻量、部署快、规则丰富,适合快速检测已知攻击协议解析能力强,可做未知攻击 / 行为分析,日志可溯源
适用场景边界 IDS/IPS 部署,检测已知漏洞利用、暴力破解内网流量监控,分析异常行为、数据外发、横向移动

二、Snort 使用指南

Snort 有三种工作模式,核心是规则驱动的检测。

1. 三种工作模式

表格

模式作用适用场景
嗅探器模式只抓包,不检测、不告警临时流量采集,类似简化版 Wireshark
包记录器模式抓包并保存为 pcap 文件事后分析流量,配合 Wireshark 排查问题
入侵检测 / 防御模式加载规则库,检测攻击并告警 / 阻断(IPS 模式)企业 IDS/IPS 部署,实时监控攻击

2. 核心配置文件与目录

  • 主配置文件:/etc/snort/snort.conf
  • 核心配置项:
    • var HOME_NET 192.168.1.0/24:定义受保护的内网网段
    • var RULE_PATH /etc/snort/rules:规则文件存放路径
    • output alert_syslog: LOG_AUTH LOG_ALERT:告警日志输出方式(本地日志 / Syslog)

3. 规则配置与更新

Snort 的核心是规则,分为三类:

  • 社区规则:免费公开,覆盖常见攻击(如漏洞利用、暴力破解)
  • 付费规则:Sourcefire 官方规则,更新更快,覆盖新型攻击
  • 自定义规则:针对企业业务场景编写,比如防护内部服务的暴力破解

规则示例(SSH 暴力破解检测):

plaintext

alert tcp $EXTERNAL_NET any -> $HOME_NET 22 (msg:"SSH Bruteforce Attempt"; flow:to_server,established; content:"Failed password"; sid:1000001; rev:1;)

4. 常用命令

bash

运行

# 1. 嗅探器模式(抓包)
snort -v -i eth0

# 2. 包记录器模式(保存为pcap)
snort -dev -l /var/log/snort -i eth0

# 3. IDS模式(加载配置文件运行)
snort -c /etc/snort/snort.conf -i eth0

三、Zeek 使用指南

Zeek 的核心是协议解析 + 事件日志,它不依赖攻击特征,而是通过还原完整协议交互,生成标准化日志,再用脚本做行为分析。

1. 核心概念

  • 事件(Event):Zeek 解析流量时生成的结构化事件(如连接建立、DNS 查询、HTTP 请求)
  • 日志(Log):事件持久化后的文件,按协议分类(conn.log/dns.log/http.log等)
  • 脚本(Script):用 Zeek 语言编写,扩展日志分析和告警逻辑,比如检测数据外发、异常 DNS 查询

2. 部署模式

  • 单节点部署:适合小型网络,直接监听网卡流量
  • 集群部署:适合大型网络,多节点采集流量,中心节点汇总分析

3. 常用命令

bash

运行

# 1. 前台运行(监听eth0网卡)
zeek -i eth0

# 2. 后台运行(服务模式)
zeekctl start

# 3. 查看运行状态
zeekctl status

# 4. 停止服务
zeekctl stop

4. 日志分析示例

Zeek 的日志默认保存在/usr/local/zeek/logs/current/,常见日志用途:

  • conn.log:TCP/UDP 连接日志,可分析端口扫描、异常外联
  • dns.log:DNS 查询日志,可检测 DNS 隧道、恶意域名访问
  • http.log:HTTP 请求日志,可分析 Web 攻击、数据外发

示例:用zeek-cut快速分析日志(统计访问次数最多的 IP)

bash

运行

cat conn.log | zeek-cut id.orig_h | sort | uniq -c | sort -nr | head -10

四、Snort + Zeek:企业内网监控的黄金搭档

两者结合,能实现 “特征检测 + 行为分析” 的双层防护:

  1. Snort 补 “已知攻击” 短板:用规则快速识别漏洞利用、暴力破解等已知攻击,实时告警
  2. Zeek 补 “未知威胁” 盲区:通过协议日志分析异常行为(如数据外发、内网横向移动),弥补 Snort 只能检测已知攻击的不足
  3. 日志联动溯源:Snort 告警后,可通过 Zeek 的全量日志还原攻击完整路径,定位入口和影响范围

五、企业落地常见误区(避坑指南)

  1. Snort 规则乱开,误报泛滥:直接启用所有规则,导致大量误报,告警堆压无人管。需根据业务场景精简规则,仅开启必需的防护规则。
  2. Zeek 日志不做外发,本地存储爆炸:Zeek 日志量很大,不配置外发和滚动留存,会很快占满磁盘。需同步到 ELK/Splunk,并设置按时间 / 大小滚动留存。
  3. 规则长期不更新,Snort 漏报新型攻击:社区规则更新慢,不及时同步会导致无法检测新型漏洞利用攻击。
  4. 只部署不监控,告警 / 日志无人管:Snort 告警和 Zeek 日志都不处置,等于没部署,必须建立告警分级处置闭环。

六、落地实践流程(可直接套用)

  1. 评估阶段:梳理企业网络规模和防护需求,确定部署模式(单节点 / 集群)
  2. 部署阶段:先部署 Snort 做 IDS/IPS,再部署 Zeek 做流量监控
  3. 配置阶段:Snort 精简规则,Zeek 配置日志外发和滚动留存
  4. 测试阶段:用模拟攻击(如端口扫描、SQL 注入)验证防护效果,调整误报规则
  5. 上线与监控:正式上线,建立告警处置闭环,定期审计日志和告警
  6. 持续优化:同步 Snort 规则库,更新 Zeek 脚本,根据业务变化调整配置

Categories:

Tags:

No responses yet

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

© 2026 世文的网络技术&蓝队安全学习小站
滇ICP备2026006758号-1 | 网安备