the-bastion/etc/syslog-ng/conf.d/20-bastion.conf.dist
Stéphane Lesimple fde20136ef
Initial commit
2020-10-20 14:30:27 +00:00

104 lines
2.5 KiB
Text

# Example configuration file for syslog-ng
# The default s_src source is supposed to exist and contain at least system()
# This file should be copied to your /etc/syslog-ng/conf.d directory
#
# Don't forget to logrotate! (included in logrotate.d/bastion-syslog)
#
# Also don't forget to exclude bastion logs from system-wide logs, by excluding
# the filter(f_bastion) from those, under debian it usually means:
#
# filter f_syslog3 { not facility(auth, authpriv, mail) and not filter(f_debug) and not filter(f_bastion); };
# filter f_messages { level(info,notice,warn) and
# not facility(auth,authpriv,cron,daemon,mail,news) and not filter(f_bastion); };
# we define destinations, might be a good idea to log to a remote syslog in addition to locally
destination d_bastion_all {
file("/var/log/bastion/bastion.log"
perm(0640) dir_perm(0750) create_dirs(yes)
);
};
destination d_bastion_warn {
file("/var/log/bastion/bastion-warn.log"
perm(0640) dir_perm(0750) create_dirs(yes)
);
};
destination d_bastion_die {
file("/var/log/bastion/bastion-die.log"
perm(0640) dir_perm(0750) create_dirs(yes)
);
};
destination d_bastion_security {
file("/var/log/bastion/bastion-security.log"
perm(0640) dir_perm(0750) create_dirs(yes)
);
};
# this filter catches all bastion syslogs
filter f_bastion {
facility(local7);
match("bastion" value("PROGRAM") type("string"));
};
# split message just to get the msgtype and filter on it
parser p_bastion_msg {
csv-parser(columns("BASTION.MSGTYPE", "BASTION.PAYLOAD")
delimiters(" ")
flags(greedy)
flags(escape-none)
);
};
# then the 3 specific message types
filter f_bastion_warn {
filter(f_bastion);
match("warn" value("BASTION.MSGTYPE") type("string"));
};
filter f_bastion_die {
filter(f_bastion);
match("die" value("BASTION.MSGTYPE") type("string"));
};
filter f_bastion_security {
filter(f_bastion);
match("security" value("BASTION.MSGTYPE") type("string"));
};
# finally, we use our filters and destinations here
log {
source(s_src);
parser(p_bastion_msg);
filter(f_bastion);
destination(d_bastion_all);
};
log {
source(s_src);
parser(p_bastion_msg);
filter(f_bastion_warn);
destination(d_bastion_warn);
};
log {
source(s_src);
parser(p_bastion_msg);
filter(f_bastion_die);
destination(d_bastion_die);
};
log {
source(s_src);
parser(p_bastion_msg);
filter(f_bastion_security);
destination(d_bastion_security);
};