Snort

概述

参考:

Snort 是世界上最重要的开源 Intrusion Prevention System(入侵防御系统,IPS)。 Snort IPS 使用一系列规则来帮助定义恶意网络活动,并使用这些规则来查找与其匹配的数据包并为用户生成警报。

Snort 也可以内联部署来阻止这些数据包。 Snort 有三个主要用途:作为数据包嗅探器(如 tcpdump)、作为数据包记录器 — 这对于网络流量调试很有用,或者可以用作成熟的网络入侵防御系统。 Snort 可以下载并配置用于个人和商业用途。

Snort 规则

参考:

Snort 规则主要由两部分组成

  • Rule header # 定义了流量的基础规则,协议、源/目 的 IP 和 PORT,最基本就是这 5-tuple。
  • Rule body # 类似于 7 层策略。定义了与指定规则关联的数据包的内容应该如何匹配。用 () 包裹起来。

以下是具有 Rule header 和 Rule body 定义的完整形式的 Snort 3 规则的示例:

alert tcp $EXTERNAL_NET 80 -> $HOME_NET any
(
    msg:"Attack attempt!";
    flow:to_client,established;
    file_data;
    content:"1337 hackz 1337",fast_pattern,nocase;
    service:http;
    sid:1;
)
关键字协议源 IP源 PORT关键字目的 IP目的 PORT规则主体
alerttcp/udp可以用 any 或具体 IP可以用 any 或具体 PORT->可以用 any 或具体 IP。需要使用 [] 括起来可以用 any 或具体 PORT。需要添加 [] 括起来除了 源/目 之外的匹配规则。使用 () 括起来

匹配规则 # 除了 源/目 IP 或 PORT 之外,还可以匹配数据包的 URL、数据内容 等进行过滤。只有完全匹配到的才会记录成安全事件。

Rule header

Rule body

详见 Snort Rule body

Snort 规则最佳实践

alert udp 159.138.48.8 any -> [111.30.108.165] [53] (msg:\"ip test\"; pcre:\"/./\"; sid:99999999;)


最后修改 May 6, 2024: clearup, printer, snort (e6e9abaf)