Ajuda para configurar um arquivo de log customizado para o iptables

7

Estou tentando registrar pacotes perdidos em um arquivo personalizado em vez de /var/log/messages .

Para conseguir isso, adicionei essas duas linhas no final do meu arquivo de configuração:

    -A INPUT -m limit --limit 5/min -j LOG --log-prefix "IPTables-INPUT-Dropped: " --log-level 4
    -A OUTPUT -m limit --limit 5/min -j LOG --log-prefix "IPTables-OUTPUT-Dropped: " --log-level 4

Isso funciona porque eu configurei as cadeias INPUT e OUTPUT como DROP por padrão, portanto, se o pacote não atender a nenhuma regra anterior, ele será registrado e descartado.

No entanto, não consigo registrá-los em um arquivo personalizado. Eles logam com sucesso em /var/log/messages , mas eu quero que eles estejam logados em /var/log/iptables.log . Eu criei o arquivo /etc/rsyslog.d/iptables.conf com o seguinte conteúdo:

    :msg, contains, "IPTables-INPUT-Dropped: " - /var/log/iptables.log
    & ~

então reiniciei o rsyslog, /etc/init.d/rsyslog restart e enviei alguns pacotes que eu sabia que iam ser descartados. No entanto, eles não estão logados no iptables.log, eles ainda estão sendo registrados em /var/log/messages .

Qual configuração está faltando?

RESOLVIDO O problema é que não deve haver um espaço entre - e /

    
por yzT 31.08.2013 / 16:33

4 respostas

4

O problema é que não deve haver um espaço entre - e /

    
por 29.07.2014 / 11:59
2

Esta é uma abordagem alternativa usando ulogd . Eu sugeriria esse mecanismo, pois ele para o mecanismo de registro do kernel -m LOG uses (que tem o efeito colateral de preencher seu log dmesg ).

Primeiro, você precisará do ulogd, que pode ser obtido com um apt-get install ulogd . Edite seu /etc/ulogd.conf , ative este módulo (removendo # no início da linha):

plugin="/usr/lib/ulogd/ulogd_LOGEMU.so"

e altere / adicione a seção [LOGEMU] :

[LOGEMU]
file="/var/log/iptables.log"
sync=1

E, em seguida, reinicie seu ulogd com /etc/init.d/ulogd restart . Então, em vez de -j LOG use -j ULOG em suas regras do iptables. O módulo ULOG não tem nenhum conceito de --log-level , portanto você pode remover essas opções. Ele também usa --ulog-prefix em vez de --log-prefix .

    
por 31.08.2013 / 16:57
2

Isso pode ser possível usando:

Para desabilitar os logs do iptables no syslog, faça as modificações abaixo em /etc/rsyslog.d/50-default.conf :

*.*;auth,authpriv.none;kern.*=!kern.warning             -/var/log/syslog

Para efetuar login no arquivo separado; acrescentar:

kern.=warning -/var/log/iptables.log

depois, reinicie syslog ou rsyslog e tail os registros

/etc/init.d/rsyslog restart

Funciona em syslog e rsyslog também

    
por 31.08.2013 / 19:43
1

FYI:

& ~ está obsoleto no novo rsyslog, você deve usar stop .

/etc/rsyslog.d/10-iptables

if ( $msg contains 'IN=' and $msg contains 'OUT=' ) 
then { 
    /var/log/10-iptables.log
    stop
}

/etc/logrotate.d/iptables

/var/log/iptables.log
{
        rotate 30
        daily
        missingok
        notifempty
        delaycompress

        postrotate
                service rsyslog rotate > /dev/null
        endscript
}

Note que eu defino o prefixo para 10- para pegá-lo antes que ele atinja as regras padrão (padrões de 50).

    
por 23.09.2014 / 12:54