dmesg inundado com logs de firewall

5

No meu iptables, eu tenho uma regra que registra os pacotes descartados:

-A INPUT -i eth0       -j   LOG  --log-prefix "FW: " --log-level 7
-A INPUT -i eth0       -j   DROP

E em /etc/rsyslog.conf , tenho outra regra que envia esses logs para um arquivo dedicado /var/log/firewall.log .

:msg, contains, "FW: "                    -/var/log/firewall.log
& ~

O & ~ exclui os logs imediatamente, para que eles não inundem syslog ou outros arquivos de log.

Isso funciona bem, exceto que ele inunda dmesg com esses logs de firewall (não /var/log/dmesg , mas a saída do comando dmesg ).

Existe uma maneira de impedir que esses logs sejam exibidos em dmesg ?

    
por Martin Vegter 11.05.2014 / 20:58

3 respostas

1

Você pode usar o NFLOG target em vez de LOG :

NFLOG
    This target provides logging of matching packets. When this  target  is  set  for  a
    rule, the Linux kernel will pass the packet to the loaded logging backend to log the
    packet. This is usually used in combination with nfnetlink_log as  logging  backend,
    which  will multicast the packet through a netlink socket to the specified multicast
    group. One or more userspace processes may subscribe to the  group  to  receive  the
    packets.  Like  LOG, this is a non-terminating target, i.e. rule traversal continues
    at the next rule.

Tudo o que você precisa é de um programa de log com nfnetlink_log . As mensagens iriam até lá e o processo do espaço do usuário decidiria se o pacote seria ou não registrado.

Outra coisa que você poderia tentar seria limitar a regra LOG a um limite específico:

-A INPUT -i eth0 -m limit --limit 10/minutes -j LOG --log-prefix "FW: " --log-level 7
-A INPUT -i eth0 -j DROP

Isso, em média, registra 10 pacotes por minuto. Você poderia, claro, ajustar isso às suas necessidades.

    
por 12.05.2014 / 11:42
0

Pode estar relacionado ao nível de log que você está usando no iptables. Pelo que entendi, os níveis de log da documentação do rsyslog são: "A prioridade é uma das seguintes palavras-chave, em ordem crescente: debug, info, notice, warning, warn (igual a warning), err, error (igual a err), crit, alert, emerg, pânico (mesmo que emerg). " Que tal tentar especificar o nível de log no iptables usando seu nome, ou seja, 'notice'. Bem me serve direito para postar sem verificar como agora eu acho que não é o problema em tudo. Eu implementei um esquema semelhante ao descrito acima e recebo o mesmo problema. Meu kernel do centos 7 é v3.10.0 e aparentemente desde a v3.5 parece que o registro do kernel é feito usando o / dev / kmsg e presumo que o dmesg de alguma forma receba sua entrada a partir daí.

    
por 28.07.2014 / 04:24
-5

Por que você se importa? dmesg é uma ferramenta de baixo nível para imprimir mensagens recentes do kernel, e você solicitou que o kernel registrasse pacotes descartados.

Configure o sistema syslog do sistema para registrar as mensagens do iptables em um arquivo de log separado de outras mensagens do kernel e use os arquivos de log que ele grava em vez de dmesg .

    
por 28.07.2014 / 10:05