Con iptables puedes registrar la actividad de red en un archivo de log, lo que permite monitorear los datos que se envían y desde dónde se originan. Aquí tienes un ejemplo de cómo hacerlo:
sudo iptables -t filter -A FORWARD -s 192.168.1.0/24 -m tcp -p tcp --dport 443 -j LOG --log-prefix "Iptables: "
En este comando, la regla captura el tráfico de la red local (192.168.1.0/24) en el puerto 443 y lo registra con el prefijo "Iptables: ".
Para que estos registros no se mezclen con otros en rsyslog
, crearemos un archivo de configuración específico:
sudo nano /etc/rsyslog.d/10-iptables.conf
Luego, añade las siguientes líneas al archivo:
:msg, contains, "Iptables: " -/var/log/iptables.log
& ~
o este::msg, contains, "Iptables: " -/var/log/iptables.log
stop
&
Estas líneas indican que los mensajes que contienen "Iptables:" se almacenarán en el archivo /var/log/iptables.log
.
Aplicar los cambios
Para que la configuración tenga efecto, reinicia rsyslog
con el siguiente comando:
sudo systemctl restart rsyslog
Ahora, los registros de la actividad de red especificada se guardarán en /var/log/iptables.log
.
Configuración de Logrotate para el Registro de IPTables
Logrotate se utiliza para gestionar archivos de registro de gran tamaño en Linux, permitiendo rotarlos, comprimirlos y eliminarlos automáticamente en función de políticas personalizables. Para los registros de IPTables, configuraremos logrotate para rotar el archivo /var/log/iptables.log
.
- Crear la Configuración de Logrotate:
Abre un nuevo archivo de configuración para los registros de IPTables en el directorio de configuración de logrotate:sudo nano /etc/logrotate.d/iptables
- Añadir las Opciones de Configuración:
Dentro de este archivo, configura logrotate con opciones específicas. Aquí tienes un ejemplo de configuración básica:/var/log/iptables.log {
daily # Rotar el archivo diariamente
missingok # Ignorar el archivo si no existe
rotate 7 # Mantener los últimos 7 archivos de registro
compress # Comprimir los registros antiguos
delaycompress # Retrasar la compresión hasta que pase un ciclo
notifempty # No rotar el archivo si está vacío
create 0640 root adm # Crear el nuevo archivo con permisos y propietario específicos
postrotate
/usr/bin/systemctl reload rsyslog > /dev/null 2>&1 || true
endscript
}
Explicación de cada parámetro:
daily
: rota el archivo cada día.missingok
: si el archivo no existe, logrotate continuará sin generar errores.rotate 7
: conserva los últimos 7 archivos de registro; los registros más antiguos se eliminan.compress
: comprime los archivos de registro antiguos (utilizando gzip por defecto).delaycompress
: evita la compresión del archivo de registro más reciente, permitiendo que se comprima en el siguiente ciclo.notifempty
: evita rotar archivos vacíos.create 0640 root adm
: crea el archivo de registro nuevo con permisos de lectura y escritura para el propietario (root
) y solo lectura para el grupo (adm
).postrotate
: después de cada rotación, reinicia el serviciorsyslog
para aplicar cambios en la configuración del archivo de registro.
- Guardar y Salir:
Guarda el archivo y cierra el editor. Esta configuración ahora se aplicará automáticamente cada día (o según el ciclo de rotación especificado). - Probar la Configuración:
Puedes probar la configuración de logrotate para asegurarte de que funcione correctamente con el siguiente comando:sudo logrotate -f /etc/logrotate.d/iptables
Esto forzará una rotación del archivo/var/log/iptables.log
, permitiéndote comprobar que se crea un archivo comprimido con el log actual y uno nuevo vacío. - Verificar la Configuración de Logrotate:
Para confirmar que logrotate está configurado correctamente y se ejecuta según lo previsto, revisa los archivos en el directorio/var/log
para ver los archivos comprimidos (por ejemplo,iptables.log.1.gz
,iptables.log.2.gz
, etc.).
Con estos pasos, tendrás configurado logrotate para gestionar automáticamente los registros de IPTables y evitar que crezcan sin control, preservando el espacio en disco y manteniendo un historial reciente de la actividad de red.