Configuración de Snort: ¿por qué RULE_PATH no está definido?

Configuración de Snort: ¿por qué RULE_PATH no está definido?

Estoy instalando y configurando Snort 3 por primera vez en CentOS 8 mientras sigo lasResoplido 3.0.3 en CentOS8manual de la documentación oficial de Snort (no puedo vincularlo directamente ya que es un PDF generado dinámicamente que puede caducar después de un tiempo).

Ahora estoy intentando iniciar Snort en mi interfaz de red usando el 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 nonesudo después de haber generado mis reglas con PulledPork en un archivo snort.rules. Sin embargo, el resultado que genera este comando menciona el error FATAL: ips.rules:2 undefined variable name: RULE_PATHal leer mi archivo snort.lua.

El contenido de la ipsmatriz dentro de mi snort.luaarchivo es el siguiente:

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

La RULE_PATHvariable está definida en el snort_defaults.luaarchivo:

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

No entiendo por qué no estaría definido, porque snort_defaults.lua se importa al principio del archivo 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'

¿Qué podría estar haciendo que Snort piense que mi variable RULE_PATH no está definida?

Respuesta1

Me encontré con el mismo problema al configurar Snort 3.1.25, y parece que la sintaxis puede haberse actualizado durante el período de desarrollo, después de que se escribió ese artículo. El problema está en la forma en que se establece el camino. Quieres usar:

ips =
{
    mode = tap,
    enable_builtin_rules = true,

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

La sintaxis necesaria es GLOBAL_VARIABLE, el operador Lua Concat ".." y luego la ruta de la cadena.

Nota: Las reglas integradas son opcionales, pero por si acaso...

información relacionada