En este caso, la información se guardará en /var/log/iptablesy también en /var/log/messages. Solo quiero una copia de estos datos eniptables.log
Abid
1
Agregué mi propia respuesta para cubrir también la pregunta de Abid, más la configuración de logrotate que faltaba. el "stop" o "& ~" evita que los mensajes continúen bajando las reglas de rsyslog para llegar a / var / log / messages también.
Peter
6
Esto supone que su cortafuegos ya crea registros, como debería hacerlo cualquier cortafuego sano. Para algunos ejemplos, requiere un mensaje identificable, como "NETFILTER" en el ejemplo de slm.
hacer un archivo en rsyslog.d
vim /etc/rsyslog.d/10-firewall.conf
Esto funciona en CentOS 7. No sé cómo verificar que proviene del firewall, aparte de buscar IN y OUT ... CentOS es extraño. No use esto a menos que la próxima versión no funcione.
# into separate file and stop their further processing
if ($msg contains 'IN=' and $msg contains 'OUT=') \
then {
-/var/log/firewall
& ~
}
Esto funciona en CentOS 7 y también verifica el contenido del mensaje (reemplace "Shorewall" con lo que tenga en el mensaje de su regla -j LOG):
# into separate file and stop their further processing
if ($msg contains 'Shorewall') and \
($msg contains 'IN=' and $msg contains 'OUT=') \
then {
-/var/log/firewall
& ~
}
Esto funciona en otros (Ubuntu, Debian, openSUSE). Y esta es la mejor manera de hacerlo. No buscar cadenas en el mensaje:
# into separate file and stop their further processing
if ($syslogfacility-text == 'kern') and \\
($msg contains 'IN=' and $msg contains 'OUT=') \\
then -/var/log/firewall
& ~
Y esto es lo que tiene una máquina openSUSE predeterminada (que creo que todas las distribuciones deberían tener y falta) (la diferencia parece ser solo "detener" en lugar de "& ~"; no todos los sistemas admiten ambas sintaxis):
if ($syslogfacility-text == 'kern') and \
($msg contains 'IN=' and $msg contains 'OUT=') \
then {
-/var/log/firewall
stop
}
Y para todo lo anterior, no olvide un archivo logrotate.d también:
vim /etc/logrotate.d/firewall
que contiene:
/var/log/firewall {
rotate 7
size 500k
postrotate
# before using this, run the command yourself to make sure
# it is right... the daemon name may vary
/usr/bin/killall -HUP rsyslogd
endscript
}
Respuestas:
syslog
Echa un vistazo en la página del manual para
iptables
. Muestra un objetivo llamadoLOG
que puede hacer lo que quieras.Ejemplo
Establezca el nivel de registro para
LOG
4.Configure
syslog.conf
para escribir estos mensajes en un archivo separado.Reinicie syslogd.
Debian / Ubuntu
Fedora / CentOS / RHEL
NOTA: Este método de registro se denomina prioridades fijas. Son números o nombres (1,2,3,4, ..) o (DEPURACIÓN, ADVERTENCIA, INFORMACIÓN, etc.).
rsyslog
Si por casualidad lo está utilizando
rsyslog
, puede crear un filtro basado en propiedades de esta manera:A continuación, agregue el interruptor a sus reglas de iptables que desea registrar:
Como alternativa, también puede registrar los mensajes utilizando este tipo de filtro de propiedades:
NOTA: Este segundo método no requiere ningún cambio en
iptables
.Referencias
fuente
/var/log/iptables
y también en/var/log/messages
. Solo quiero una copia de estos datos eniptables.log
Esto supone que su cortafuegos ya crea registros, como debería hacerlo cualquier cortafuego sano. Para algunos ejemplos, requiere un mensaje identificable, como "NETFILTER" en el ejemplo de slm.
hacer un archivo en rsyslog.d
Esto funciona en CentOS 7. No sé cómo verificar que proviene del firewall, aparte de buscar IN y OUT ... CentOS es extraño. No use esto a menos que la próxima versión no funcione.
Esto funciona en CentOS 7 y también verifica el contenido del mensaje (reemplace "Shorewall" con lo que tenga en el mensaje de su regla -j LOG):
Esto funciona en otros (Ubuntu, Debian, openSUSE). Y esta es la mejor manera de hacerlo. No buscar cadenas en el mensaje:
Y esto es lo que tiene una máquina openSUSE predeterminada (que creo que todas las distribuciones deberían tener y falta) (la diferencia parece ser solo "detener" en lugar de "& ~"; no todos los sistemas admiten ambas sintaxis):
Y para todo lo anterior, no olvide un archivo logrotate.d también:
que contiene:
fuente