dmesg inundado com logs de firewall

dmesg inundado com logs de firewall

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

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

E /etc/rsyslog.conftenho outra regra que envia esses logs para um arquivo dedicado /var/log/firewall.log.

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

Exclui & ~os logs imediatamente, para que eles não inundem syslogoutros arquivos de log.

Isso funciona bem, exceto que inunda dmesgos logs do firewall (não /var/log/dmesgmas a saída de command dmesg).

Existe uma maneira de evitar que esses logs sejam mostrados dmesg?

Responder1

Você poderia usar o NFLOGalvo 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 que você precisa é de um nfnetlink_logprograma de registro capaz. As mensagens iriam para lá e o processo do espaço do usuário decidiria se registraria o pacote ou não.

Outra coisa que você poderia tentar seria limitar a LOGregra 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 registraria em média 10 pacotes por minuto. É claro que você pode ajustar isso de acordo com suas necessidades.

Responder2

Depois de definir o nível de log como 7 com o comando:

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

Então você pode simplesmente filtrar essas mensagens passando o limite de nível para o dmesg:

dmesg --level=err,warn

Responder3

Pode estar relacionado ao nível de log que você está usando no iptables. Pelo que entendi nos níveis de log da documentação do rsyslog são: "A prioridade é uma das seguintes palavras-chave, em ordem crescente: debug, info, warning, warning, warning (o mesmo que warning), err, error (o mesmo que err), crítico, alerta, emerg, pânico (o mesmo que emerg)." Que tal tentar especificar o nível de log no iptables usando seu nome, ou seja, 'aviso'. Bem, é justo postar sem verificar, pois agora acho que esse não é o problema. 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 log do kernel é feito usando /dev/kmsg e presumo que o dmesg de alguma forma obtém sua entrada a partir daí.

Responder4

Por quê você se importa? dmesgé uma ferramenta de baixo nível para imprimir mensagens recentes do kernel, e você pediu ao kernel para registrar pacotes descartados.

Configure o sistema syslog do seu sistema para registrar mensagens 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.

informação relacionada