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.conf
tengo 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 syslog
u otros archivos de registro.
Esto funciona bien, excepto que se inunda dmesg
con esos registros del firewall (no /var/log/dmesg
más que la salida del comando dmesg
).
¿Hay alguna manera de evitar que estos registros se muestren en dmesg
?
Respuesta1
Podrías usar el NFLOG
objetivo 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_log
programa 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 LOG
regla 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? dmesg
es 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
.