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")'
首条命令显示内核抓包数,第二条显示完整统计信息。