Snort 設定: RULE_PATH が未定義なのはなぜですか?

Snort 設定: RULE_PATH が未定義なのはなぜですか?

CentOS 8にSnort 3を初めてインストールして設定しています。CentOS8 上の Snort 3.0.3Snort の公式ドキュメントからのマニュアル (これは動的に生成される PDF であり、しばらくすると期限切れになる可能性があるため、直接リンクすることはできません)。

PulledPork を使用してルールを snort.rules ファイルに生成した後、sudo 付きのコマンドを使用してネットワーク インターフェイスで Snort を起動しようとしています。ただし、このコマンドが生成する出力には、snort.lua ファイルの読み取り中に発生した/usr/local/snort/bin/snort -c /usr/local/snort/etc/snort/snort.lua -i enp37s0 -l /var/log/snort --plugin-path /usr/local/snort/extra -k noneエラーが記載されています。FATAL: ips.rules:2 undefined variable name: RULE_PATH

ipsファイル内の配列の内容snort.luaは次のとおりです。

ips =
{
    mode = tap,
    rules = [[
        include $RULE_PATH/snort.rules
    ]]
}

変数は次のファイルRULE_PATHで定義されますsnort_defaults.lua:

---------------------------------------------------------------------------
-- default paths
---------------------------------------------------------------------------
-- Path to your rules files (this can be a relative path)

RULE_PATH = '../../rules'
BUILTIN_RULE_PATH = '../../builtin_rules'
PLUGIN_RULE_PATH = '../../so_rules'

-- If you are using reputation preprocessor set these
PASS_LIST_PATH = '../../intel'
BLOCK_LIST_PATH = '../../intel'

snort_defaults.lua は snort.lua ファイルの先頭でインポートされているので、なぜ未定義になるのかわかりません。

---------------------------------------------------------------------------
-- 2. configure defaults
---------------------------------------------------------------------------

-- HOME_NET and EXTERNAL_NET must be set now
-- setup the network addresses you are protecting
HOME_NET = [[ 192.168.1.0/24 ]]

-- set up the external network addresses.
-- (leave as "any" in most situations)
EXTERNAL_NET = 'any'

-- dofile(conf_dir .. '/snort_defaults.lua')
-- dofile(conf_dir .. '/file_magic.lua')

include 'snort_defaults.lua'
include 'file_magic.lua'

Snort が RULE_PATH 変数が未定義であると判断する原因は何でしょうか?

答え1

Snort 3.1.25 をセットアップしたときに同じ問題に遭遇しましたが、その記事が書かれた後、開発期間中に構文が更新された可能性があります。問題はパスの設定方法にあります。次のように使用します。

ips =
{
    mode = tap,
    enable_builtin_rules = true,

    variables = default_variables,
    include = RULE_PATH .. "/snort.rules",
    include = BUILTIN_RULE_PATH .. "/builtins.rules",
}

必要な構文は、GLOBAL_VARIABLE、Lua 連結演算子「..」、そして文字列パスです。

注: 組み込みルールはオプションですが、念のため...

関連情報