
Quiero guardar mis mensajes de registro generados por iptables en otro archivo mediante rsyslogd.
Actualmente uso este código de /etc/rsyslog.d/20-custom.conf
:
# Log cron to cron.log and not to syslog
*.*;cron,auth,authpriv.none -/var/log/syslog
cron.* /var/log/cron.log
# Log firewall to extra log
:msg,contains,"[BLOCK " /var/log/firewall.log
& stop
Mis registros cron están bien, se registran solo en cron.log
, pero mis registros de iptables se registran tanto en como syslog
en firewall.log
. ¿Hay alguna manera de iniciar sesión únicamente firewall.log
?
Especificaciones de mi sistema:
> rsyslogd -v
rsyslogd 8.16.0, compiled with:
PLATFORM: x86_64-pc-linux-gnu
PLATFORM (lsb_release -d):
FEATURE_REGEXP: Yes
GSSAPI Kerberos 5 support: Yes
FEATURE_DEBUG (debug build, slow code): No
32bit Atomic operations supported: Yes
64bit Atomic operations supported: Yes
memory allocator: system default
Runtime Instrumentation (slow code): No
uuid support: Yes
Number of Bits in RainerScript integers: 64
Linux MYHOSTNAME 4.4.0-116-generic #140-Ubuntu SMP Mon Feb 12 21:23:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
> lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.4 LTS
Release: 16.04
Codename: xenial
Respuesta1
Tienes que mover la parte de registro del firewall antes que otras reglas, para que parezca
# Log firewall to extra log
:msg,contains,"[BLOCK " /var/log/firewall.log
& stop
# Log cron to cron.log and not to syslog
*.*;cron,auth,authpriv.none -/var/log/syslog
cron.* /var/log/cron.log
Las reglas se consideran en orden, por lo que ahora aparece un mensaje que coincide.*.*;cron,auth,authpriv.nonesiempre se escribirá en syslog, incluso si también coincide:msg,contiene,"[BLOQUEAR "y se escribe en firewall.log. El comando de detención simplemente llega demasiado tarde en el archivo para detener algo.
Ver tambiénhttps://www.rsyslog.com/escribir-mensajes-específicos-a-un-archivo-y-descartarlos/