
Ich installiere und konfiguriere Snort 3 zum ersten Mal auf CentOS 8 und folge dabei denSnort 3.0.3 auf CentOS8Handbuch aus der offiziellen Dokumentation von Snort (ich kann nicht direkt darauf verlinken, da es ein dynamisch generiertes PDF ist, das nach einiger Zeit ablaufen kann).
Ich versuche nun, Snort auf meiner Netzwerkschnittstelle mit dem Befehl /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
mit sudo zu starten, nachdem ich meine Regeln mit PulledPork in einer snort.rules-Datei generiert habe. Die Ausgabe dieses Befehls erwähnt jedoch den Fehler FATAL: ips.rules:2 undefined variable name: RULE_PATH
beim Lesen meiner snort.lua-Datei.
Der Inhalt des ips
Arrays in meiner snort.lua
Datei ist wie folgt:
ips =
{
mode = tap,
rules = [[
include $RULE_PATH/snort.rules
]]
}
Die RULE_PATH
Variable ist in der snort_defaults.lua
Datei definiert:
---------------------------------------------------------------------------
-- 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'
Ich verstehe nicht, warum es nicht definiert sein sollte, da snort_defaults.lua am Anfang der Datei snort.lua importiert wird:
---------------------------------------------------------------------------
-- 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'
Was könnte Snort dazu veranlassen, zu denken, dass meine RULE_PATH-Variable nicht definiert ist?
Antwort1
Ich bin beim Einrichten von Snort 3.1.25 auf dasselbe Problem gestoßen und es scheint, dass die Syntax während der Entwicklungsphase, nachdem dieser Artikel geschrieben wurde, aktualisiert wurde. Das Problem liegt in der Art und Weise, wie der Pfad festgelegt wird. Sie möchten Folgendes verwenden:
ips =
{
mode = tap,
enable_builtin_rules = true,
variables = default_variables,
include = RULE_PATH .. "/snort.rules",
include = BUILTIN_RULE_PATH .. "/builtins.rules",
}
Die erforderliche Syntax ist GLOBAL_VARIABLE, der Lua-Concat-Operator ".." und dann der Stringpfad.
Hinweis: Die integrierten Regeln sind optional, aber nur für den Fall ...