Snort
来自项目 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 机器,请参阅:端口镜像
安装
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 模式
在入侵检测模式 (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 中,以每天自动更新规则。