Snort

来自 ArchWiki

来自项目 website

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

序言

  • 嗅探 WAN <-> LAN 的 Snort 设置更难使用。它不会显示哪个计算机触发了警报,并且需要您将 HOME_NET 设置为您的 WAN IP 地址,如果您的调制解调器使用 DHCP,WAN IP 地址可能会更改。
  • Snort 将为您桥接两个接口,您无需配置此项。

您可以使用 Snort 通过两个路由器嗅探无线流量。为简单起见,开启 DHCP 和关闭无线的路由器将称为“路由器 A”,开启无线和关闭 DHCP 的路由器将称为“路由器 B”。

  • 确保路由器没有相同的 IP 地址,但在同一子网内。
  • 如果运行 Snort 的机器配置为内联模式,您将需要 3 个网络接口卡。一个用于管理,一个用于传入流量,一个用于传出流量。
  • 将以太网线从路由器 B 连接到 Snort 机器上的备用 NIC。
  • 将另一根以太网线从路由器 A 连接到 Snort 机器上的备用 NIC。
  • 一旦 Snort 运行,流量应该从路由器 B <-> Snort 机器 <-> 路由器 A <-> 互联网 流动。
  • 如果您不使用内联模式,则需要将流量转发到 Snort 机器,请参阅:端口镜像

安装

安装 snortAUR 软件包。

Cisco Telos 团队还提供了一个 Docker 镜像: [1]

配置

主配置文件位于 /etc/snort/snort.lua

本地配置可以在 /etc/snort/local.lua 中设置。建议使用 pulledporkAUR 下载您的规则集。默认情况下,规则存储在 $RULE_PATH/snort.rules 下。

家庭网络可以在 /etc/snort/homenet.lua 中设置。如果需要,请让 Snort 知道您要监控的网络(或多个网络)。

HOME_NET = [[ 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 ]]

内联模式

内联模式意味着数据包通过 snort,而不是被重定向到 snort。在这种模式下,snort 可以丢弃数据包并实时中止利用尝试。在这种模式下,snort 充当入侵防御系统 (IPS)。

默认情况下,snort 以内联模式运行,这在 /etc/snort/local.lua 中定义如下

daq =
{
   modules =
   {
       {
           name = 'afpacket',
           
           --For netfilter (NFQUEUE) based IPS
           --name = 'nfq',
           
           mode = 'inline',
       },
   },
   module_dirs =
   {
       '/usr/lib/daq',
   },
}

ips =
{
   mode = inline,
   ...
}

IDS 模式

此文章或章节已过时。

原因: 本节适用于 snort 2,需要针对 snort 3 进行更正(在 Talk:Snort 中讨论)

在入侵检测模式 (IDS) 中,数据包被重定向到 snort。Snort 无法丢弃数据包,这意味着它只能通知您正在发生或已经发生利用尝试。

在 IDS 模式下,启动 snort@ens1

使用 Pulledpork 更新规则

安装 pulledporkAUR

配置

配置文件位于 /etc/pulledpork

编辑 /etc/pulledpork/pulledpork.conf 并取消注释您想要使用的规则。您将需要一个“oinkcode”来下载某些规则。

  • dropsid.conf 在此文件中匹配的任何规则都将丢弃其流量。
  • enablesid.conf 用于启用签名。所有签名似乎默认都已启用,无需编辑此文件。
  • disablesid.conf 用于从 Snort 中完全删除签名。

可以通过运行以下命令找到规则集中包含的当前类别

$ pulledpork.pl -c /etc/snort/pulledpork.conf -Pw
$ zgrep -E '\.rules' /var/tmp/*.gz | cut -d'/' -f3 | sort -u | perl -lne '/(.*).rules/ && print $1' > rules.`date +%F`

使用 Pulledpork 丢弃流量

如果您想丢弃与 Snort 签名匹配的所有流量,而不仅仅是发出警报,请将以下内容添加到您的 dropsid.conf

pcre:.

或者,如果您想丢弃与整个类别匹配的所有流量

policy-social
policy-other
file-other

如果您只想丢弃单个规则

118:7

使用 Pulledpork 禁用规则

如果您想禁用单个签名,请将其 gen_id 和 sig_id 添加到 /etc/pulledpork/disablesid.conf

118:22

如果您想禁用整个类别

deleted
protocol-icmp
policy-social
policy-other

运行 Pulledpork

这将拉取新规则并将它们写入 /etc/snort/rules/snort.rules

pulledpork.pl -c /etc/pulledpork/pulledpork.conf  -P

更新规则:Oinkmaster

Snort 分发两组规则:“社区规则集”和“Snort 订阅者规则集”。前者对所有用户免费开放。后者提供给订阅和注册用户。付费订阅者在规则集发布时实时接收。注册用户将在订阅者之后 30 天收到规则集。注册是免费的,可在此处获得:Snort: Sign up

oinkmasterAUR 软件包可用。

Oinkmaster 设置

编辑 /etc/oinkmaster.conf 并查找 URL 部分,取消注释 2.4 行。确保将 <oinkcode> 替换为您登录 Snort 帐户后生成的 Oink 代码。对于 Bleeding Snort 规则,取消注释相应的行。

当您登录新帐户时,创建一个“Oink 代码”。另一个需要更改的是

use_external_bins=1 # 1 uses wget, tar, gzip instead of Perl modules

配置文件的其余部分可以保持不变。

Oinkmaster 用法

oinkmaster.pl -o /etc/snort/rules

创建一个包含确切命令的可执行脚本,并将其放在 /etc/cron.daily 中,以每天自动更新规则。

参见