我正在尝试使用这种教程在 Mac 上设置和运行 Snort IDS: https://discussions.apple.com/thread/3370709?start=0&tstart=0
OSX Yosemite(10.10.2);PostgreSQL 9.4.1(使用 Homebrew 安装)Snort:稳定版 2.9.7.0(使用 Homebrew 安装)
当我最终尝试像这样加星标时:
$ sudo /usr/local/bin/snort -d -e -i en0 -c /etc/snort/snort.conf
得到这个:
Password:
Running in IDS mode
--== Initializing Snort ==--
Initializing Output Plugins!
Initializing Preprocessors!
Initializing Plug-ins!
Parsing Rules file "/etc/snort/snort.conf"
...
ERROR: /etc/snort/../rules/local.rules(0) Unable to open rules file "/etc/snort/../rules/local.rules": No such file or directory.
Fatal Error, Quitting..
规则实际上是在/etc/snort/rules/local.rules
RULE_PATH
设置/etc/snort/snort.conf
为/etc/snort/rules
所以:
$ echo $RULE_PATH
/etc/snort/rules
尝试这个:
$ grep RULE_PATH /etc/snort/snort.conf
var RULE_PATH ../rules
var SO_RULE_PATH ../so_rules
var PREPROC_RULE_PATH ../preproc_rules
...
改变之后
var RULE_PATH ../rules
var SO_RULE_PATH ../so_rules
var PREPROC_RULE_PATH ../preproc_rules
到
var RULE_PATH /etc/snort/rules
var SO_RULE_PATH /etc/snort/so_rules
var PREPROC_RULE_PATH /etc/snort/preproc_rules
获取:
$ sudo /usr/local/bin/snort -d -e -i en0 -c /etc/snort/snort.conf
Running in IDS mode
--== Initializing Snort ==--
Initializing Output Plugins!
Initializing Preprocessors!
Initializing Plug-ins!
Parsing Rules file "/etc/snort/snort.conf"
...
ERROR: /etc/snort/snort.conf(741) Unknown output plugin: "database"
Fatal Error, Quitting..
第 741 行/etc/snort/snort.conf
是:
output database: log, postgresql, user=snort password=password dbname=snort host=localhost
因此,自 snort 2.9.3.0 以来,直接数据库输出不再受支持。我应该使用 snort 的统一输出。我可以使用 Barnyard2 来重定向到 postgresql。
答案1
注意:这个答案是根据原始问题的评论中的对话编写的。
规则目录的问题
从错误中可以清楚地看出,某个地方(可能是
snort.conf
)有一个..
指向错误路径的。根据错误,我认为这var RULE_PATH ../rules
是在配置文件中。您应该将其更改为var RULE_PATH ./rules
或使用绝对路径: 。您也应该对和var RULE_PATH /etc/snort/rules
执行此操作。因此,您的配置现在具有:SO_RULE_PATH
PREPROC_RULE_PATH
var RULE_PATH /etc/snort/rules
var SO_RULE_PATH /etc/snort/so_rules
var PREPROC_RULE_PATH /etc/snort/preproc_rules
将数据输出到数据库的问题
自 snort 2.9.3.0 开始,直接数据库输出不再受支持。您应该使用 snort 的统一输出(像这样“ output unified2: filename merged.log, limit 128, mpls_event_types, vlan_event_types
)。您可以改用 Barnyard2 重定向到 postgresql。解释如何设置它会(在我看来)超出这个答案的范围。一个基本的开始可以在这里找到. 更详细的解释(并且专门针对 OSX)可以在这里找到。
答案2
错误:/etc/snort/../rules/local.rules(0) 无法打开规则文件“/etc/snort/../rules/local.rules”:没有此文件或目录。
致命错误,退出..
我能够通过注释以下几行来解决此错误:
#var RULE_PATH ../rules
#var SO_RULE_PATH ../so_rules
#var PREPROC_RULE_PATH ../preproc_rules
#var WHITE_LIST_PATH ../rules
#var BLACK_LIST_PATH ../rules
这些行指的是 Windows 用户!!