dmesg inundado de registros de firewall

dmesg inundado de registros de firewall

En mis iptables, tengo una regla que registra los paquetes descartados:

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

Y /etc/rsyslog.conftengo otra regla que envía estos registros a un archivo dedicado /var/log/firewall.log.

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

Elimina & ~los registros inmediatamente, para que no se inunden syslogu otros archivos de registro.

Esto funciona bien, excepto que se inunda dmesgcon esos registros del firewall (no /var/log/dmesgmás que la salida del comando dmesg).

¿Hay alguna manera de evitar que estos registros se muestren en dmesg?

Respuesta1

Podrías usar el NFLOGobjetivo en lugar 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.

Todo lo que necesitas es un nfnetlink_logprograma de registro capaz. Los mensajes irían allí y el proceso del espacio de usuario decidiría si registrar el paquete o no.

Otra cosa que podrías intentar sería limitar la LOGregla a un umbral 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

En promedio, esto registraría 10 paquetes por minuto. Por supuesto, puede ajustar esto según sus necesidades.

Respuesta2

Cuando haya configurado el nivel de registro en 7 con el comando:

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

Luego, simplemente puede filtrar estos mensajes pasando el umbral de nivel al dmesg:

dmesg --level=err,warn

Respuesta3

Puede estar relacionado con el nivel de registro que está utilizando en iptables. Según tengo entendido por los niveles de registro de documentación de rsyslog son: "La prioridad es una de las siguientes palabras clave, en orden ascendente: depuración, información, aviso, advertencia, advertencia (igual que advertencia), err, error (igual que err), crítico, alerta, emergencia, pánico (igual que emergencia)". ¿Qué tal intentar especificar el nivel de registro en iptables usando su nombre, es decir, 'aviso'? Bueno, me lo merezco por publicar sin verificar, ya que ahora creo que ese no es el problema en absoluto. Implementé un esquema similar al descrito anteriormente y tengo el mismo problema. Mi kernel centos 7 es v3.10.0 y aparentemente desde v3.5 parece que el registro del kernel se realiza usando /dev/kmsg y supongo que dmesg de alguna manera obtiene su entrada desde allí.

Respuesta4

¿Por qué te importa? dmesges una herramienta de bajo nivel para imprimir mensajes recientes del kernel, y usted solicitó que el kernel registre los paquetes descartados.

Configure el sistema syslog de su sistema para registrar los mensajes de iptables en un archivo de registro separado de otros mensajes del kernel y use los archivos de registro que escribe en lugar de dmesg.

información relacionada