Configuração do Snort: por que RULE_PATH está indefinido?

Configuração do Snort: por que RULE_PATH está indefinido?

Estou instalando e configurando o Snort 3 pela primeira vez no CentOS 8 enquanto sigo oSnort 3.0.3 no CentOS8manual da documentação oficial do Snort (não consigo vincular diretamente a ele, pois é um PDF gerado dinamicamente que pode expirar após algum tempo).

Agora estou tentando iniciar o Snort em minha interface de rede usando o comando /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 nonecom sudo depois de ter gerado minhas regras com PulledPork em um arquivo snort.rules. No entanto, a saída que este comando gera menciona o erro FATAL: ips.rules:2 undefined variable name: RULE_PATHao ler meu arquivo snort.lua.

O conteúdo do ipsarray dentro do meu snort.luaarquivo é o seguinte:

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

A RULE_PATHvariável está definida no snort_defaults.luaarquivo:

---------------------------------------------------------------------------
-- 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'

Não entendo por que seria indefinido, porque snort_defaults.lua é importado no início do arquivo 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'

O que poderia estar fazendo o Snort pensar que minha variável RULE_PATH é indefinida?

Responder1

Encontrei o mesmo problema ao configurar o Snort 3.1.25, e parece que a sintaxe pode ter sido atualizada durante o período de desenvolvimento, após a escrita do artigo. O problema está na forma como o caminho é definido. Você deseja usar:

ips =
{
    mode = tap,
    enable_builtin_rules = true,

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

A sintaxe necessária é GLOBAL_VARIABLE, o Operador Lua Concat ".." e depois o caminho da string.

Nota: As regras internas são opcionais, mas apenas por precaução...

informação relacionada