pfSense 配置Snort(包含OpenApp ID)

Snort是一个攻击检测和预防系统。 它可以配置为简单地将检测到的网络事件记录到日志中并将其阻止。 借助OpenAppID检测器和规则,Snort软件包支持应用程序检测和过滤。 该软件包可以通过系统>插件管理进行安装。 Snort使用称为规则的检测签名进行操作。 Snort规则可以由用户自定义创建,或者可以启用和下载几个预先打包的规则集中的任何一个。

Snort目前提供对这些预包装规则的支持:

  • Snort VRT(漏洞研究小组)规则
  • Snort GPLv2社区规则
  • Emerging Threats Open规则
  • Emerging Threats Pro规则
  • OpenAppID开放应用程序检测器和规则

Snort GPLv2社区规则和Emerging Threats Open规则都是免费提供的,无需注册。 Snort VRT规则有两种形式。 一个是免费的注册用户版本,但需要在snort注册。 注册用户的免费版本只能提供30天以前的规则。 可以购买Snort VRT付费订阅,并且每周更新两次(有时更频繁)。 Emerging Threats Pro规则仅向付费用户提供,几乎每天都会提供更新以应对快速变化的威胁。对于商业应用,强烈建议从Snort或Emerging Threats获得付费订阅,以便下载最新的规则。

  • 启动Snort配置GUI
  • 首次配置Snort
  • 更新规则
  • 添加Snort接口
  • 选择保护网络的规则类型
  • 启用Snort接口
  • 选择保护网络的签名类型
  • 定义服务器以保护和提高性能
  • 管理阻止的主机
  • 管理通行列表
  • 警报阈值和抑制
  • 了解警报
  • 使用OpenApp ID进行应用程序ID检测

1、启动Snort配置GUI

要启动Snort配置应用程序,请导航到pfSense菜单系统服务> Snort。

../_images/launchsnortgui.png

2、首次配置Snort

点击Global Settings(全局设置)标签,并启用规则集下载使用。 如果选中了Snort VRT或Emerging Threats Pro规则,将显示一个文本框输入通过订阅或注册获得的唯一订购用户代码。

可以启用多个规则集来进行下载,但请注意: 如果付费订阅适用于Snort VRT规则,则所有Snort GPLv2社区规则都将自动包含在使用Snort VRT规则下载的文件中;因此,如果付费用户帐户用于Snort VRT规则,则不要启用GPLv2社区规则。 所有Emerging Threats Open规则都包含在Emerging Threats Pro规则的付费订阅中。 如果启用Emerging Threats Pro规则,则会自动禁用Emerging Threats Open规则。

../_images/enablesnortrulesdownloads.png

一旦启用了所需的规则集,接下来设置Snort规则包的Update Interval(更新间隔)。 在大多数情况下,可以选择12小时。 当然也可以根据需要进行定制。时间格式采用24小时制, 默认开始时间是当地时间零点3分。 因此,如果选择12小时的更新间隔,Snort将在每天零点3分和每天12点3分检查Snort VRT和Emerging Threats网站,以便更新发布的规则包。

../_images/snortrulesupdatesettings.png

3、更新规则

Updates(更新)选项卡用于检查下载的规则包的状态并下载新的更新。 它显示了可用的规则包及其当前状态(未启用,未下载或有效的MD5校验和以及下载日期)。

点击update Rules(更新规则)按钮下载最新的规则包, 如果供应商网站上有更新,它将被下载并安装。 通过比较本地文件与供应商网站上的远程文件的MD5, 如果不匹配,则下载新文件。 无论MD5哈希值如何检测,FORCE(强制)按钮都可用于强制从供应商网站下载规则包。

在下面的截图中,Snort VRT和Emerging Threats Open规则包已经成功下载。 显示计算出的MD5哈希值和文件下载日期和时间。 另外要注意,上次更新的时间和结果显示在页面的中心。

../_images/snortupdaterulesstatus2.png

4、添加Snort 接口

单击Snort Interfaces 选项卡,然后点击 “+”图标添加Snort接口。

../_images/snortaddinterface.png

接口设置选项卡将打开,并自动选择可用接口。 也可以根据需要,使用接口下拉菜单更改接口。可以为接口输入一个描述说明。 其他接口参数也可以在此页面上设置。 完成后,请务必点击页面底部的SAVE(保存)按钮。

../_images/snortinterfacesettings.png

保存后,浏览器将返回到Snort Interfaces选项卡。 请注意下图中的警告图标,显示新的Snort接口没有选择规则。 那些规则将在下面配置。 点击图标可以再次编辑已建立的Snort接口。

../_images/snortinterfacesedit.png

5、选择保护网络的规则类型

点击新接口的Categories(类别)标签。

如果获得了Snort VRT Oinkmaster代码(免费注册用户或付费订阅),启用了Snort VRT规则,并在Global Settings (全局设置)选项卡中输入了Oinkmaster代码,则可以从三个预配置的IPS策略中进行选择。这极大地简化了在检查流量时选择Snort使用强制规则的过程。 IPS策略只有在启用了Snort VRT规则时才能使用。

三种Snort VRT IPS策略分别是:(1) Connectivity(连接)、(2)Balanced(平衡)和(3)Security安全。这些是按照安全性越来越高的顺序排列的,但是,如果对Snort不熟悉,建议选(1)。在更安全的策略下,会经常出现误报,并且需要有经验的管理员进行仔细的调整。所以对Snort不熟悉,那么建议在非阻止模式下使用限制性较低的连接策略。一旦在此网络环境中获得了使用Snort的经验,可以启用阻止模式,然后升级到更严格的IPS策略。

../_images/snortchooseipspolicy.png

如果未启用Snort VRT规则,或者要使用任何其他规则包,则通过选中要使用的规则类别旁边的复选框来选择规则类别。

../_images/snortmanualcategoryselection.png

完成后单击SAVE(保存)选择并构建Snort使用的规则文件。

6、在接口上启用Snort

单击Snort Interfaces选项卡显示已配置的Snort接口。 单击 “X”图标在接口上启用Snort。

../_images/snortinterfacesstart.png

Snort启动需要几秒钟的时间。 一旦开始,图标将显示为 fa-check-circle 。 要停止接口上的Snort运行,单击 fa-check-circle图标。

../_images/snortinterfacesrunning.png

7、选择保护网络的签名类型

单击接口的Rule(规则)选项卡,在启用的类别中配置单个规则。 通常这个页面只是用来禁用特定的规则,可能会在特定的网络环境中产生较多的误报。 确保它们实际上是真正的误报,然后再禁用Snort规则!

Category(类别)下拉列表中选择一个规则类别,以查看所有分配的规则。单击行最左端的fa-check-circlefa-check-circle-o图标,以将规则的状态从启用切换为禁用,或单击时代圈fa-times-circle-o从禁用状态 切换为启用。图标将更改以指示规则的状态。规则列表的顶部是图例,其中显示了用于指示规则当前状态的图标。

../_images/snortrulesenabledisable.png

../_images/snortrulesenabledisable2.png

8、定义服务器来保护和提高性能

../_images/snortvariables.png

9、管理阻止主机

Blocked(已阻止)选项卡显示Snort当前正在阻止的主机(当在Interface Settings(接口设置)选项卡上选择阻止选项时)。 阻止的主机可以通过几个预先定义的时间间隔被Snort自动清除。 接口的阻止选项在接口的Snort Interface Settings(接口设置)选项卡上进行配置。

../_images/snortblockedhosts.png

10、管理通行列表

通行列表是Snort不阻止的IP地址列表。 这些可以在Pass Lists(通行列表)选项卡上创建和管理。 当出现在通行列表中列出的IP地址时,即使检测到恶意通信,Snort也不会阻止该IP。

要创建新的通过列表,请单击fa-plus。要编辑现有的通行证列表,请单击铅笔。要删除通过列表,请单击垃圾邮件。请注意,如果“通过列表”当前已分配给一个或多个Snort接口,则可能无法删除。

../_images/snortpasslists.png

Snort会为每个接口自动生成一个默认的通行列表,当没有指定其他列表时,将使用此默认列表。通行列表自动分配给接口设置选项卡上设置的接口。

可以创建自定义通行列表并分配给一个接口。当有不在直连到防火墙网络上的可信外部主机时,可以这样做。要以这种方式添加外部主机,必须先在防火墙>别名管理下创建一个别名,然后将可信外部主机IP地址添加到别名中。在下面的例子中,别名“Friendly_ext_hosts”已被分配。该别名将包含可信外部主机的IP地址。

创建自定义通行列表时,请在Add auto-generated IP addresses(添加自动生成的IP地址)部分中选中所有自动生成的IP地址。不选中这部分可能会导致阻止包括防火墙接口本身的关键地址,这可能会将自己锁定在防火墙之外!只有在绝对必要的情况下,才能取消选中框。

../_images/snortpasslistedit.png

点击ALIASES(别名)按钮打开一个窗口,显示以前定义的别名供选择。 选择后请记住点击保存以应用更改。

注意:简单地创建一个通行列表只是第一步! 必须通过转到Snort接口的Interface Settings(接口设置)选项卡并选择新创建的通行列表,如下所示。 分配并保存新的通行列表后,在受影响的接口上重新启动Snort以使应用生效。

../_images/snortassignpasslist.png

11、警报阈值和抑制

抑制列表允许控制由Snort规则生成的警报。当警报被抑制时,Snort不再记录警报条目(或者在阻止违规者被启用的情况下阻止IP地址)。 Snort仍然根据规则检查所有网络流量,但即使流量符合规则签名,也不会生成警报。这与禁用规则不同。当禁用规则时,Snort不再尝试将其与任何网络流量进行匹配。只能根据源IP或目标IP停止警报时,可以用抑制规则来代替禁用规则。例如,要抑制来自特定可信IP地址的流量来源时的警报,如果有任何其他IP流量的来源,则规则仍然会触发。为了消除规则中的所有警报,简单地禁用规则而不是抑制规则会更有效。禁用该规则将从Snort的匹配规则列表中删除它,因此Snort所做的工作会更少。

../_images/snortsuppresslists.png

在Suppress List Edit(抑制列表编辑)页面上,可以手动添加或编辑新的抑制列表条目。 通过单击 Alerts(警报)选项卡上的警报条目显示的来添加抑制列表更方便。在手动编辑抑制列表条目后,必须单击SAVE(保存)按钮以应用更改。

../_images/snortsuppresslistedit.png

12、了解警报

Alerts(警报)选项卡是查看由Snort生成的警报的位置。 如果Snort在多个接口上运行,请在下拉选择器中选择要查看警报的接口。

单击DOWNLOAD(下载)按钮将下载包含所有记录警报的gzip .tar文件到本地电脑。 CLEAR(清除)按钮用于清除当前警报日志。

../_images/snortalerts.png

警报详情

../_images/snortalertdetails.png

Date (日期)列显示警报生成的日期和时间。 其余的列显示来自生成警报规则的数据。

在“Source(源), Destination(目标)列中,搜寻用于在IP地址上执行反向DNS查找的图标。fa-plus图标,用于使用IP地址和SID(签名ID)为警报添加自动“禁止列表”条目。这将防止规则仅针对该特定IP地址生成未来的警报。如果源或目标地址当前被Snort阻止,则还将显示一个垃圾邮件图标。单击该图标将删除该IP地址的阻止。

SID列包含两个图标。fa-plus图标将自动将该SID添加到接口的“禁止列表”,并禁止来自所有IP地址签名的以后的警报。SID列中的图标时光将禁用该规则并将其从强制规则集中删除。手动禁用规则后,SID列中的图标将变为时代圈

13、使用OpenApp ID进行应用程序ID检测

OpenAppID是用于开源入侵检测系统Snort的应用层网络安全插件。 点击此处了解详情。

启用OpenAppID及其规则是从Global Settings(全局设置)完成的。 选中下图中的两个复选框并保存页面后将启用检测器和规则下载。

../_images/enablingopenappid.png

启用检测器和规则后,进入Snort Updates选项卡并单击update Rules更新规则, 等待所有的规则更新。 完成后,页面将显示OpenAppID检测器和规则已更新。

../_images/updatedrules.png

以下步骤假设已经将Snort接口添加到LAN接口。 编辑LAN接口并导航到LAN categories(LAN类别)选项卡。 确保右栏中的Snort OPENAPPID Rules(规则)都被选中,然后点击保存。

../_images/openappidrules.png

最后,在编辑Snort接口的同时,导航至 LAN Preprocessor(LAN预处理器)选项卡。

../_images/lanpreprocessor.png

向下滚动到Application ID Detection(应用程序ID检测)部分,并选中Enable (启用)和 AppID Stats Logging(AppID统计信息)复选框, 保存页面,在Snort接口上激活OpenApp ID。

../_images/lanpreprocessor2.png

可以从 Alerts(警报)选项卡查看检测到的应用程序。 以下屏幕截图是已识别的服务和应用程序的示例:

Facebook

../_images/appid_facebook.png

Netflix

../_images/appid_netflix.png

Reddit

../_images/appid_reddit.png

Amazon Web Services

../_images/appid_aws.png

iCloud

../_images/appid_icloud.png

Twitter

../_images/appid_twitter.png