|
|
Logear Netfilter en una base de datos
(13155 lectures)
Por Oriol Raventos
w00g
(http://www.oxhuge.com)
Creado el 17/10/2002 23:56 modificado el 17/10/2002 23:56
|
Cómo sabeis, Netfilter reemplazó a IPChains como sistema de filtrado de
paquetes en Linux. Una de las novedades de Netfilter es el target ULOG
que, junto al daemon ulogd, permite logear de forma mucho más flexible que
la típica combinación LOG+syslog.
En este artículo explicaré cómo hacer que Netfilter logee a una base de
datos MySQL. | Pagina1/1 |
Hace tiempo que quería tener el log de netfilter en una base de datos porque
hacer consultas es mucho más potente que "grepear" logs, así que perpetré un
invento que cumplía con el cometido. Luego descubrí ULOG y recordé una
lección muy valiosa: no te lanzes a hacer algo sin antes averiguar si ya
está hecho ;P ..bueno, me dejo de rollos y vamos al grano.
Este artículo está orientado a Debian, pero hacer que funcione en otras
distribuciones, cómo siempre, no será demasiado complicado. También se
supone que no hemos instalado previamente MySQL en este host.
ajustando el kernel
con un kernel instalado desde un paquete oficial, puedes usar modconf para
cargar los módulos de forma permanente.
sino, debes asegurarte de tener compilado el kernel con las opciones
CONFIG_NETFILTER
CONFIG_IP_NF_IPTABLES
CONFIG_IP_NF_FILTER
CONFIG_IP_NF_TARGET_ULOG
si usas menuconfig, hay que seleccionar
Networking options > Network packet filtering
Networking options > Netfilter Configuration > IP tables support
Networking options > Netfilter Configuration > Packet filtering
Networking options > Netfilter Configuration > ULOG target support
en función de tu configuración puede que necesites otras opciones
relacionadas, suelen ser habituales las siguientes
CONFIG_IP_NF_CONNTRACK
CONFIG_IP_NF_FTP
CONFIG_IP_NF_IRC
ulogd
ulogd es el daemon de logeo específico para el target ULOG así que deberemos
instalarlo
apt-get install ulogd-mysql
Si estás usando un kernel 2.4.18 o superior en Woody o Sarge los paquetes
oficiales no te funcionarán. Se puede leer el problema aquí,
cómo ese era mi caso, hice unos paquetes nuevos que podéis descargar aquí (
ulogd y ulogd-mysql)
.. una vez descargados, los instalamos con
dpkg -i ulogd_0.97-1_i386.deb
dpkg -i ulogd-mysql_0.97-1_i386.deb
volveremos a ulogd luego
MySQL
como root, instalamos el servidor con
apt-get install mysql-server
al acabar, nos preguntará "should MySQL start on boot?", seleccionamos
"Yes"
ahora ajustaremos MySQL, primero cambiamos el password del usuario root de
MySQL (que no es el mismo que el root del sistema)
mysqladmin -u root password 'mi_password'
entramos
mysql -pmi_password
creamos la base de datos
mysql> create database logs;
Query OK, 1 row affected (0.02 sec)
creamos la tabla
mysql> use logs;
Database changed
mysql> source /usr/share/doc/ulogd-mysql/mysql.table
Query OK, 0 rows affected (0.00 sec)
creamos un par de usuarios y les damos los permisos necesarios
mysql> GRANT select,insert ON logs.* TO logwriter@localhost IDENTIFIED BY 'un_password';
Query OK, 0 rows affected (0.02 sec)
mysql> GRANT select ON logs.* TO logreader@localhost IDENTIFIED BY 'otro_password';
Query OK, 0 rows affected (0.02 sec)
mysql> flush privileges;
configuración de ulogd
abrimos /etc/ulogd.conf con un editor y quitamos los comentarios a las
siguientes líneas
#mysqltable ulog
#mysqlpass bar
#mysqluser foo
#mysqldb ulogd
#mysqlhost localhost
#plugin /usr/lib/ulogd/ulogd_MYSQL.so
y ajustamos los parámetros necesarios
mysqluser logwriter
mysqlpass un_password
mysqldb logs
si no queremos que logee en un archivo de texto, podemos comentar las líneas
syslogfile /var/log/ulogd.syslogemu
plugin /usr/lib/ulogd/ulogd_LOGEMU.so
reiniciamos el servicio
/etc/init.d/ulogd restart
iptables
en nuestro script de iptables cambiamos todas las reglas con destino LOG por
ULOG, lo podéis hacer a mano o con lo siguiente
perl -ne 's/-j\s+LOG/ULOG/i;print' -i scriptfw
os aconsejo que metáis una regla para comprobar que funciona, podría ser
parecida a esta
iptables -A INPUT -i eth1 -s 192.168.100.0/24 -p tcp --dport 9999 \
-j ULOG --log-prefix "test"
que luego probáis, por ejemplo, con hping
hping ip_interna_de_mi_cortafuegos -S -p 9999 -c 1
accediendo a los datos
afortunadamente se puede acceder MySQL desde prácticamente cualquier
lenguaje de programación lo que hace realmente sencillo hacernos nuestras
propias utilidades para hacer consultas sobre los datos. De todas formas, he encontrado
un par de scripts php que pueden serviros ulogd-php y ulog.
|
|
|
|
|
|
Comentarios Es posible que se hayan omitido algunos comentarios considerados poco constructivos
| 1. Re: Logear Netfilter en una base de datos (18/10/2002 08:10, #9237) Por: carcoco (http://bulma.net/~carcoco/) |
W00g, bienvenido a Bulma, muy bueno el artículo.
Precisamente, como sabras, en la lista Bulmailing preguntaron sobre este tema hace muy poco.
Bueno pues eso, gracias y enhorabuena por el artículo ;-)
| No es pot respondre |
2. Re: Logear Netfilter en una base de datos (18/10/2002 13:51, #9242) Por: El cobarde anónimo |
| "iptables -A INPUT -i eth1 -s 192.168.100.0/24 -p tcp -dport 9999 \"
Sólo un detalle es --dport con 2 guiones.
Muy bueno el artículo. ;)
BY TOXINPOWE | No es pot respondre |
3. Re: Logear Netfilter en una base de datos (18/10/2002 14:07, #9243) Por: w00g (http://www.oxhuge.com) |
Sólo un detalle es --dport
ops, gracias! ya está corregido, las prisas.. | No es pot respondre |
|
4. Re: Logear Netfilter en una base de datos (18/10/2002 16:57, #9246) Por: juanma |
El artículo perfecto:
-corto
-interesante
-claro
-util
Gracias. | No es pot respondre |
5. Re: Logear Netfilter en una base de datos (28/03/2004 17:53, #20396) Por: Pridebowl |
Buenas tardes
Unicamente comentar que en Woody no funciona.
Y que esta persona tiene la solución:
http://djoume.free.fr/
Un saludo | No es pot respondre |
6. Re: Logear Netfilter en una base de datos (15/08/2004 00:21, #22790) Por: Anónimo |
| A ver si me podeis echar una mano, consigo que loguee el fichero de texto, pero no a la base de datos, y he comprobado con mysqlcc que como ese usuario puedo entrar e introducir registros... además el ulogd ya no me tira el error de que no existía el usuario, ahora no hay errores de ningún tipo, pero no logueo en la BBDD...
Un saludo ;) | No es pot respondre |
7. Re: Logear Netfilter en una base de datos (10/11/2005 19:08, #29354) Por: Juanmi |
| Me ocurre lo mismo que el anterior anonimo, muy bien el el archivo de log pero no en la base de datos.
¿Alguna solucion? | No es pot respondre |
8. Re: Logear Netfilter en una base de datos (13/04/2007 00:39, #39688) Por: Anónimo |
| Revisen que el plugin para la DB elegida exista , y que esté descomentado ,ademas q el usuario configurado en ulogd.conf se pueda conectar desde la linea de commado | No es pot respondre |
|
|
|
|---|
|
|
|
|
Calificacion
    Vots: 9 |
Danos tu opinion:
|
|
|
|
|
|
|
|