Emezeta.com

Sincronizar logs del router con linux


Con este breve tutorial, aprenderemos a sincronizar un router (en nuestro caso, un Zyxel Prestige P660HW-61, uno de los que distribuye Telefónica España) con un sistema Linux. Registraremos -con un alto nivel de refinamiento- los accesos al router desde fuera de la red, cómodamente en un fichero log de nuestro equipo.

Esto puede ser interesante -por ejemplo- para temas de seguridad: registrar los intentos de acceso al telnet del router, a un programa de control remoto o simplemente cualquier mensaje de alerta o error del router.

Antes de empezar, es importante tener claros varios conceptos de redes, para los que quizás necesitemos una cierta base de conocimiento, como los siguientes:

  • Dirección IP privada: La IP de nuestro equipo, dentro de la red (del router hacia dentro)
  • Dirección IP pública: La IP de nuestro equipo, fuera de la red (del router hacia fuera)
  • Puerta de enlace: Generalmente, si no tenemos equipos intermedios, es la IP de nuestro router.

Para nuestro tutorial, necesitaremos la dirección IP privada (puedes averiguarla con el comando ifconfig, a partir de ahora 192.168.0.2) y la puerta de enlace, la dirección IP de nuestro router (puedes averiguarla con el comando route, a partir de ahora 192.168.0.1).

mapa red network map

Lo primero que debemos hacer es conectar al interfaz de control de nuestro router. Para ello hacemos un telnet 192.168.0.1. Nos pedirá la clave de nuestro Zyxel Prestige P660HW-61. De fábrica, la clave de este router es 1234. Si no lo consigues con esta, comprueba la información de los manuales de tu router.

Entonces, aparecerá una pantalla titulada Prestige 660HW-61 Main Menu, con una serie de opciones. Para movernos por estas pantallas, utilizaremos los números (para las opciones), la barra de espacio (para cambiar valores), CTRL+H (para borrar un carácter si nos equivocamos) y ESC para retroceder al menú anterior.

Escogemos las siguientes opciones:

  • System Maintenance tecleando 24.
  • Log and Trace tecleando 3.
  • UNIX Syslog pulsando 2.
  • Active Yes pulsando espacio.
  • Syslog IP Address 192.168.0.2 (la IP de nuestro Linux).
  • Log Facility Local 1.

Para hacer los cambios efectivos, tenemos que ir pulsando ENTER hasta colocarnos en la línea Press ENTER to Confirm or ESC to Cancel donde lo haremos nuevamente.

Ya tenemos el router comunicándose con nuestro sistema Linux. La comunicación se realiza enviando mensajes por el puerto UDP/514, así que aunque no es común, ojo con bloquearlo con un firewall.

Ahora debemos especificarle al router que queremos registrar en los logs. Para ello vamos al siguiente menú:

  • System Maintenance tecleando 24.
  • Command Interpreter Mode tecleando 8.
  • Escribimos sys logs load y lo siguiente para cargar datos.
  • sys logs category access 1 registra accesos al router.
  • sys logs category upnp 1 registra eventos UPnP.
  • sys logs category 8021x 1 registra eventos 802.1x (tanto LAN como Wireless).
  • sys logs category error 1 registra errores.
  • sys logs category mten 1 registra eventos de mantenimiento.

Nótese que usamos un 1 para activar cada categoría. Para indicar que no se registren colocar un 0. Finalmente con un sys logs category display podemos ver que categorías se registrarán. Para salir del modo de comandos escribimos exit.

Esta primera parte, algo tediosa por el uso del interprete de comandos, puede realizarse desde el interfaz web del router. Sin embargo, los siguientes pasos de edición de filtros sólo pueden realizarse desde telnet.

Ahora mismo el router ya transmite posibles errores, notificaciones o eventos de mantenimiento, sin embargo, podemos personalizar con un nivel muy alto lo que queremos registrar mediante el filtrado de paquetes.

En principio, como se puede ver en el menú 11 / 1 / Edit Filter Sets, de fábrica el router utiliza los conjuntos de filtros 9 y 10 (se puede usar hasta un máximo de 4, separados por comas).

  • Filter Set Configuration tecleando 21.
  • Enter Filter Set Number to Configure= tecleamos 10.
  • Edit Comments= pulsamos ENTER dos veces.

Nos aparecerá una pantalla como la siguiente:

telnet filter set router zyxel prestige 660HW 61

Se trata de una especie de «paquete» con 6 reglas configurables. Introduciremos el número de la regla a modificar (en nuestro caso, para registrar eventos telnet la número 6) y nos aparecerá una serie de datos sobre esa regla.

  • Filter Type puede ser una regla basada en el protocolo TCP/IP o una regla genérica mucho más potente, donde puedes especificar los detalles de la cabecera de cada datagrama. OJO: No se puede combinar reglas TCP/IP y Genericas en un mismo conjunto de reglas. Nos basaremos en el protocolo TCP/IP.
  • Active Mantiene activada o desactivada la regla.
  • IP Protocol Especifica el protocolo IP de la regla (los más usados son 6 (TCP), 17 (UDP) y 1 (ICMP)).
  • Destination IP, máscara y puerto de destino (nuestra red).
  • Source IP, máscara y puerto de origen (red externa o internet).
  • TCP Estab. Solo se atiene a paquetes que intentan establecer conexiones (SYN/ACK).
  • More Encadena la regla actual con la siguiente a modo de AND.
  • Log He aquí lo que nos interesa. Generalmente está en None y por lo tanto no registra nada, pero si establecemos Action Matched registra cuando el paquete cumple las características de la regla.
  • Action (Not) Matched Acción a realizar cuando se detecta un paquete que cumple con la regla.

Finalmente, todo será en vano si no configuramos adecuadamente nuestro Linux para recibir estos avisos. En Linux, existe un demonio llamado syslog (generalmente viene instalado por defecto, pero en caso contrario puede instalarse con un apt-get install sysklogd) que está activo a la espera de registrar información en diferentes ficheros (logs de Apache, logs de FTP, etc...).

Editamos la configuración del programa con un vim /etc/syslog.conf y añadimos la línea local1.* /var/log/router.log, que indica que guardará en el fichero router.log la información obtenida por el canal local1, configurado anteriormente en el router.

Listo. Sólo resta guardar los cambios (:wq!) y reiniciar el demonio con un /etc/init.d/sysklogd restart. Si alguien intenta acceder desde fuera de la red, su acción será registrada:

Jul 25 01:30:51 192.168.0.1 RAS: src=“198.105.193.82:43015” dst=“88.41.51.66:23” msg=“TCP/IP Filter match DROP TCP (set: 9, rule: 1)” note=“ACCESS BLOCK” devID=“73DCBF” cat=“Access Control”