2. 快速入门指南

本指南将帮助您快速上手运行Suricata,仅聚焦基础操作。更多细节请查阅后续专题章节。

2.1. 安装步骤

假设您使用最新版Ubuntu系统,可直接通过官方PPA安装。安装最新稳定版Suricata步骤如下:

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:oisf/suricata-stable
sudo apt update
sudo apt install suricata jq

添加专用PPA仓库并更新索引后即可安装Suricata。建议同时安装 jq 工具,该工具可用于解析Suricata的EVE JSON输出(本指南后续会说明)。

其他系统安装或特定编译选项请参阅 installation 章节。

安装完成后,可通过以下命令查看Suricata版本信息、编译选项及服务状态:

sudo suricata --build-info
sudo systemctl status suricata

2.2. 基础配置

首先确定需要监控的网络接口及IP地址:

$ ip addr

2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:11:22:33:44:55 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.23/24 brd 10.23.0.255 scope global noprefixroute enp1s0

根据信息配置Suricata:

sudo vim /etc/suricata/suricata.yaml

众多配置选项中,我们重点关注 HOME_NET 变量和网卡设置。多数情况下 HOME_NET 应包含监控接口的IP地址及所有本地网络。默认配置已包含RFC 1918定义的私有网络。本例中 10.0.0.23 已包含在 10.0.0.0/8 范围内,若无其他网络可移除预定义值。

本例网卡名为 enp1s0 ,需确保 af-packet 章节中的接口名一致。示例配置如下:

抓包设置:

af-packet:
    - interface: enp1s0
      cluster-id: 99
      cluster-type: cluster_flow
      defrag: yes
      tpacket-v3: yes

此配置采用基础IDS模式的最新推荐设置。高性能环境下的其他配置选项详见专题章节。

2.3. 规则管理

Suricata依赖签名(Signatures)触发告警,需安装并定期更新。签名又称规则,对应配置文件中的 rule-files 。通过 suricata-update 工具可获取和管理规则。

本指南仅演示获取ET Open规则集的默认模式:

sudo suricata-update

规则将安装至 /var/lib/suricata/rules 目录,默认使用 suricata.rules 文件。

2.4. 运行Suricata

安装规则后重启服务:

sudo systemctl restart suricata

检查运行日志确认状态:

sudo tail /var/log/suricata/suricata.log

末行应显示类似信息:

<Notice> - all 4 packet processing threads, 4 management threads initialized, engine started.

实际线程数取决于系统和配置。

查看实时统计信息:

sudo tail -f /var/log/suricata/stats.log

默认每8秒更新一次,显示流量处理量及协议解码等状态。

2.5. 告警测试

测试IDS功能建议使用特定签名。ET Open规则集中的ID 2100498 专为测试设计。

2100498规则内容:

alert ip any any -> any any (msg:"GPL ATTACK_RESPONSE id check returned root"; content:"uid=0|28|root|29|"; classtype:bad-unknown; sid:2100498; rev:7; metadata:created_at 2010_09_23, updated_at 2010_09_23;)

签名语法详见其他章节。该规则会检测包含特定内容的IP流量。触发前请先监控 fast.log

触发规则:

sudo tail -f /var/log/suricata/fast.log
curl http://testmynids.org/uid/index.html

日志将输出类似信息:

[1:2100498:7] GPL ATTACK_RESPONSE id check returned root [**] [Classification: Potentially Bad Traffic] [Priority: 2] {TCP} 217.160.0.187:80 -> 10.0.0.23:41618

包含时间戳和本机IP地址。

2.6. EVE JSON输出

更高级的EVE JSON输出详见 Eve JSON Output 。建议使用 jq 解析JSON数据。

告警查看:

sudo tail -f /var/log/suricata/eve.json | jq 'select(.event_type=="alert")'

显示包含元数据的详细告警信息。

统计查看:

sudo tail -f /var/log/suricata/eve.json | jq 'select(.event_type=="stats")|.stats.capture.kernel_packets'
sudo tail -f /var/log/suricata/eve.json | jq 'select(.event_type=="stats")'

首条命令显示内核抓包数,第二条显示完整统计信息。