Redirigir los logs de iptables a otro fichero en Ubuntu / Debian empleando rsyslog

Previamente se ha hablado acerca de la configuración de iptables. Suele ser común, una vez terminada la configuración de iptables, conocer los eventos que se generan en el mismo. Si se ha activado la monitorización de los LOGS, tal y como se describió en el post anterior de iptables, en la sección "Registro de eventos",  los sucesos se almacenarán en la siguiente ruta:

/var/log/syslog

Dicho fichero es compartido por otras aplicaciones, lo que produce que sea algo confuso encontrar los logs de iptables, ya que se encuentran mezclados con otros eventos. A tal efecto, es conveniente redirigir los logs a otro fichero. 

Para poder realizar dicho cambio en primer lugar es necesario adaptar la ruta en la que se almacenen los eventos de iptables. Para ello se modificará el fichero 50-default.conf de la siguiente forma:

sudo nano /etc/rsyslog.d/50-default.conf

En el fichero 50-default.conf, se agregarán las siguientes líneas:

:msg,contains,"IPTables Packet Dropped" /var/log/iptables
& ~

Nota: La línea primera indica que cuando se registre un evento cuyo campo mensaje contenga IPTables Packet Dropped, se almacene en la ruta /var/log/iptables. Destacar que cada lector deberá de adaptar el campo mensaje en función de como genera iptables los eventos. En mi caso los genera con el contenido: "IPTables Packet Dropped". A través de la segunda línea, se le indica al servicio rsyslog que descarte los mensajes que han cumplido el criterio anterior. 

Dichas líneas de configuración deben de insertarse por encima de aquellas que hacen referencia a la ruta del fichero syslog. En mi caso lo he colocado encima de la siguiente línea:

*.*;auth,authpriv.none -/var/log/syslog

Nota: Es posible que en algunas documentaciones se indique que es necesario crear el fichero de eventos de iptables con los permisos pertinentes. En mi caso no ha sido necesario ya que al reiniciar el servicio, rsyslog se ha encargado de generarlo. Si el fichero en cuestión no se genera, será necesario generarlo y darle los permisos pertinentes para que el usuario que ejecuta el servicio rsyslog pueda escribir en el mismo. Generalmente el servicio rsyslog se ejecuta con el usuario syslog. 

El siguiente paso consistirá en moficiar el archivo de configuración de rotado de syslog de tal forma que  permita al fichero iptables "el cual se empleará para almacenar los eventos de iptables" rotar periódicamente o cuando se llene. Por lo tanto será necesario editar la configuración de la siguiente forma:

sudo nano /etc/logrotate.d/rsyslog

Se procederá a añadir la ruta de iptables encima de la de rsyslog tal y como se aprecia en la siguiente configuración:

/var/log/iptables
/var/log/syslog
{
      rotate 7
      daily
      missingok
      notifempty
      delaycompress
      compress
      postrotate
      reload rsyslog >/dev/null 2>&1 || true
      endscript
}

Finalmente solo será necesario reiniciar el servicio rsyslog de la siguiente manera:

sudo service rsyslog restart