快速入门指南 ================ 本指南将帮助您快速上手运行Suricata,仅聚焦基础操作。更多细节请查阅后续专题章节。 安装步骤 ------------ 假设您使用最新版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输出(本指南后续会说明)。 其他系统安装或特定编译选项请参阅 :ref:`installation` 章节。 安装完成后,可通过以下命令查看Suricata版本信息、编译选项及服务状态:: sudo suricata --build-info sudo systemctl status suricata .. _基础配置: 基础配置 ----------- 首先确定需要监控的网络接口及IP地址:: $ ip addr 2: enp1s0: 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模式的最新推荐设置。高性能环境下的其他配置选项详见专题章节。 规则管理 ---------- Suricata依赖签名(Signatures)触发告警,需安装并定期更新。签名又称规则,对应配置文件中的 `rule-files` 。通过 ``suricata-update`` 工具可获取和管理规则。 本指南仅演示获取ET Open规则集的默认模式:: sudo suricata-update 规则将安装至 ``/var/lib/suricata/rules`` 目录,默认使用 ``suricata.rules`` 文件。 运行Suricata ---------------- 安装规则后重启服务:: sudo systemctl restart suricata 检查运行日志确认状态:: sudo tail /var/log/suricata/suricata.log 末行应显示类似信息:: - all 4 packet processing threads, 4 management threads initialized, engine started. 实际线程数取决于系统和配置。 查看实时统计信息:: sudo tail -f /var/log/suricata/stats.log 默认每8秒更新一次,显示流量处理量及协议解码等状态。 告警测试 -------- 测试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地址。 EVE JSON输出 -------- 更高级的EVE JSON输出详见 :ref:`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")' 首条命令显示内核抓包数,第二条显示完整统计信息。