OSX:Snort:错误:/etc/snort/../rules/local.rules(0) 无法打开规则文件“/etc/snort/../rules/local.rules”:没有此文件或目录

OSX:Snort:错误:/etc/snort/../rules/local.rules(0) 无法打开规则文件“/etc/snort/../rules/local.rules”:没有此文件或目录

我正在尝试使用这种教程在 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_PATHPREPROC_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 用户!!

相关内容