Registra mensagens contendo uma string específica para outro arquivo no rsyslogd

0

Eu quero salvar minhas mensagens de log geradas pelo iptables para outro arquivo via rsyslogd.

Atualmente, eu uso esse código em /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

Meus logs do cron estão bem, eles são registrados apenas em cron.log , mas meus logs do iptables são registrados em syslog e firewall.log . Existe uma maneira de registrá-lo apenas em firewall.log ?

Especificações do meu 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
    
por Chris 11.03.2018 / 12:34

1 resposta

1

Você precisa mover a parte de log do firewall antes de outras regras, para que pareça

# 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

As regras são consideradas em ordem, assim como você tem agora uma mensagem correspondente a *. *; cron, auth, authpriv.none será sempre escrita no syslog, mesmo que também corresponda a < em>: msg, contém, "[BLOCK" e é gravado em firewall.log. O comando de parada é simplesmente muito tarde no arquivo para parar qualquer coisa.

Veja também link

    
por 11.03.2018 / 16:22