summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/confsamples/normalization.conf83
1 files changed, 59 insertions, 24 deletions
diff --git a/doc/confsamples/normalization.conf b/doc/confsamples/normalization.conf
index f4c983ea..7cfd92ef 100644
--- a/doc/confsamples/normalization.conf
+++ b/doc/confsamples/normalization.conf
@@ -1,6 +1,11 @@
# this is a config sample for log normalization, but can
# be used as a more complex general sample.
# It is based on a plain standard rsyslog.conf for Red Hat systems.
+#
+# NOTE: Absolute path names for modules are used in this config
+# so that we can run a different rsyslog version alongside the
+# regular system-installed rsyslogd. Remove these path names
+# for production environment.
#### MODULES ####
@@ -12,21 +17,19 @@ module(load="/home/rger/proj/rsyslog/plugins/imtcp/.libs/imtcp")
module(load="/home/rger/proj/rsyslog/plugins/mmjsonparse/.libs/mmjsonparse")
module(load="/home/rger/proj/rsyslog/plugins/mmnormalize/.libs/mmnormalize")
-# We assume to have all UDP logging (for simplicity)
-#input(type="imudp" port="13514" Ruleset="struclog")
+/* We assume to have all TCP logging (for simplicity)
+ * Note that we use different ports to point different sources
+ * to the right rule sets for normalization. While there are
+ * other methods (e.g. based on tag or source), using multiple
+ * ports is both the easiest as well as the fastest.
+ */
input(type="imtcp" port="13514" Ruleset="WindowsRsyslog")
input(type="imtcp" port="13515" Ruleset="LinuxPlainText")
-#input(type="imtcp" port="13516" Ruleset="struclog3")
+input(type="imtcp" port="13516" Ruleset="WindowsSnare")
#debug:
action(type="omfile" file="/home/rger/proj/rsyslog/logfile")
-# Provides TCP syslog reception
-# for parameters see http://www.rsyslog.com/doc/imtcp.html
-#module(load="imtcp") # needs to be done just once
-#input(type="imtcp" port="514")
-
-
/* This ruleset handles structured logging.
* It is the only one ever called for remote machines
* but executed in addition to the standard action for
@@ -49,7 +52,32 @@ ruleset(name="WindowsRsyslog") {
set $!usr!type = "logon";
set $!usr!rcvdfrom = $!source;
set $!usr!rcvdat = $timereported;
- set $!usr!user = $!TargetUserName;
+ set $!usr!user = $!TargetDomainName & "\\" & $!TargetUserName;
+ call outwriter
+ }
+}
+
+/* This handles clumsy snare format. Note that "#011" are
+ * the escape sequences for tab chars used by snare.
+ */
+ruleset(name="WindowsSnare") {
+ set $!usr!type = field($rawmsg, "#011", 6);
+ if $!usr!type == 4634 then {
+ set $!usr!type = "logoff";
+ set $!doProces = 1;
+ } else if $!usr!type == 4624 then {
+ set $!usr!type = "logon";
+ set $!doProces = 1;
+ } else
+ set $!doProces = 0;
+ if $!doProces == 1 then {
+ set $!usr!rcvdfrom = field($rawmsg, 32, 4);
+ set $!usr!rcvdat = field($rawmsg, "#011", 5);
+ /* we need to fix up the snare date */
+ set $!usr!rcvdat = field($!usr!rcvdat, 32, 2) & " " &
+ field($!usr!rcvdat, 32, 3) & " " &
+ field($!usr!rcvdat, 32, 4);
+ set $!usr!user = field($rawmsg, "#011", 8);
call outwriter
}
}
@@ -73,8 +101,6 @@ ruleset(name="LinuxPlainText") {
}
}
-# uleset(name="struclog3") { }
-
/* with CSV, we the reader must receive information on the
* field names via some other method (e.g. tool configuration,
* prepending of a header to the written CSV-file). All of
@@ -91,23 +117,33 @@ template(name="csv" type="list") {
property(name="$!usr!type" format="csv")
constant(value="\n")
}
-#template(name="cee" type="subtree" subtree="$!usr")
+
+/* template for Lumberjack-style logging. Note that the extra
+ * LF at the end is just for wrinting it to file - it MUST NOT
+ * be included for messages intended to be sent to a remote system.
+ * For the latter use case, the syslog header must also be prepended,
+ * something we have also not done for simplicity (as we write to files).
+ * Note that we use a JSON-shortcut: If a tree name is specified, JSON
+ * for its whole subtree is generated. Thus, we only need to specify the
+ * $!usr top node to get everytihing we need.
+ */
template(name="cee" type="string" string="@cee: %$!usr%\n")
/* this ruleset simulates forwarding to the final destination */
ruleset(name="outwriter"){
- action(type="omfile" file="/home/rger/proj/rsyslog/logfile.csv" template="csv")
- action(type="omfile" file="/home/rger/proj/rsyslog/logfile.cee" template="cee")
+ action(type="omfile"
+ file="/home/rger/proj/rsyslog/logfile.csv" template="csv")
+ action(type="omfile"
+ file="/home/rger/proj/rsyslog/logfile.cee" template="cee")
}
-############################ end test/remove ############################
-#call struclog
-#stop
-############################ end test/remove ############################
-
-/* below is just the usual "uninteresting" stuff... */
+/* below is just the usual "uninteresting" stuff...
+ * Note that this goes into the default rule set. So
+ * local logging is handled "as usual" without the need
+ * for any extra effort.
+ */
#### GLOBAL DIRECTIVES ####
@@ -116,6 +152,8 @@ ruleset(name="outwriter"){
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
# Include all config files in /etc/rsyslog.d/
+# commented out not to interfere with the system rsyslogd
+# (just for this test configuration!)
#$IncludeConfig /etc/rsyslog.d/*.conf
@@ -147,6 +185,3 @@ uucp,news.crit /var/log/spooler
# Save boot messages also to boot.log
local7.* /var/log/boot.log
-
-# now do the structured log processing
-#call struclog