No es la primera vez que hablamos de iptables, ya les mencionamos antes cómo hacer para que reglas de iptables se implementen automáticamente cuando inicia el ordenador, también les explicamos lo básico/medio sobre iptables, y varias cosas más 🙂
El problema o molestia que siempre nos encontramos aquellos que gustamos de iptables es que, los logs de iptables (o sea, la información de los paquetes rechazados) se muestran en archivos dmesg, kern.log o syslog de /var/log/, o sea que en estos archivos no solo es muestra la información de iptables, sino mucha otra información, haciendo un poco tedioso ver solo la información relacionada con iptables.
Hace un tiempo les mostramos cómo sacar los logs de iptables a otro archivo, no obstante… he de reconocer que personalmente encuentro ese proceso un poco complejo ^-^
Entonces, ¿cómo sacar los logs de iptables a un archivo independiente y que sea lo más simple posible?
La solución es: ulogd
ulogd es un paquete que instalamos (en Debian o derivados -» sudo apt-get install ulogd) y nos servirá para precisamente esto que les acabo de decir.
Para instalarlo ya saben, busquen el paquete ulogd en sus repos y lo instalan, luego se les agregará un daemon (/etc/init.d/ulogd) al inicio del sistema, si usas alguna distro KISS como ArchLinux deben agregar ulogd a la sección de daemons que se inician con el sistema en /etc/rc.conf
Una vez lo tengan instalado ya, deben agregar la siguiente línea en su script de reglas de iptables:
sudo iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j ULOG
Luego vuelvan a ejecutar su script de reglas de iptables y listo, ya estará todo funcionando 😉
Busquen ya los logs en el archivo: /var/log/ulog/syslogemu.log
En este archivo que les menciono es donde por defecto ulogd ubica los logs de paquetes rechazados, no obstante si desean que sea en otro archivo y no en este pueden modificar la línea #53 en /etc/ulogd.conf, simplemente cambian la ruta del archivo que muestra esa línea y luego reinician el daemon:
sudo /etc/init.d/ulogd restart
Si miran atentamente ese archivo podrán ver que hay opciones para inclusive, guardar los logs en una base de datos MySQL, SQLite o Postgre, de hecho los archivos de configuración de ejemplo se encuentran en /usr/share/doc/ulogd/
Ok, ya tenemos los logs de iptables en otro archivo, ahora ¿cómo mostrarlos?
Para ello un simple cat bastaría:
cat /var/log/ulog/syslogemu.log
Recuerden, solo se guardará en log los paquetes rechazados, si ustedes tienen un servidor web (puerto 80) y tienen configurado iptables para que todo el mundo pueda acceder a este servicio web, los logs relacionados con esto no se guardarán en los logs, sin embargo si tienen un servicio SSH y mediante iptables configuraron el acceso al puerto 22 para que solo permita una IP específica, en caso de que alguna IP que no sea la elegida intente acceder al 22 entonces esto sí se guardará en el log.
Les muestro acá una línea de ejemplo de mi log:
Mar 4 22:29:02 exia IN=wlan0 OUT= MAC=00:19:d2:78:eb:47:00:1d:60:7b:b7:f6:08:00 SRC=10.10.0.1 DST=10.10.0.51 LEN=60 TOS=00 PREC=0x00 TTL=64 ID=12881 DF PROTO=TCP SPT=37844 DPT=22 SEQ=895081023 ACK=0 WINDOW=14600 SYN URGP=0
Como pueden ver, se muestra la fecha y hora de intento de acceso, interfaz (wifi en mi caso), dirección MAC, IP de origen del acceso así como también la IP de destino (la mía), y varios datos más entre los que se encuentran el protocolo (TCP) y el puerto de destino (22). A modo resumen, a las 10:29 del 4 de marzo la IP 10.10.0.1 intentó acceder al puerto 22 (SSH) de mi laptop cuando esta (o sea, mi laptop) tenía la IP 10.10.0.51, todo esto mediante la Wifi (wlan0)
Como ven… información realmente útil 😉
En fin, no creo que haya mucho más que decir. No soy ni de lejos un experto en iptables o en ulogd, no obstante si alguien tiene algún problema con esto me dejan saber e intentaré ayudarles
Saludos 😀
https://blog.desdelinux.net/iptables-para-novatos-curiosos-interesados/
Recuerdo que con ese artículo comencé a seguirlos.. jeje..
Gracias, honor que me haces 😀
ulogd es solo para iptables o es general? permite establecer canales? logging por red?
Creeeeoooo que solo es para iptables, no obstante échale un ‘man ulogd’ para que salgas de dudas.
Estás en lo cierto: «ulogd – The Netfilter Userspace Logging Daemon»
+1, articulazo!
Gracias, viniendo de tí que no eres de los que más halagos haces significa bastante 🙂
Eso no quiere decir que sepa más que nadie sino que soy grumpy xD
Gracias de nuevo por el post, haciendo referencia al otro artículo sobre la crisis de la blogósfera linuxera hispana este post tuyo -hablando de post técnicos- es justo el tipo de post que hacen falta en idioma español/castellano.
Post técnicos de calidad como este, provenientes de sysadmins, son siempre bienvenidos y van directo a favoritos 8)
Sí, la verdad es que artículos técnicos es lo que se necesita… no me canso de decirlo, de hecho ya hablé de eso acá -» https://blog.desdelinux.net/que-aporta-realmente-desdelinux-a-la-comunidad-global/
En fin, que gracias de nuevo… intentaré mantenerme así con posts técnicos 😀
Saludos