En mi día a día, compagino la administración de servidores Linux con Firewalls dedicados de la familia Juniper SSG y Fortinet Fortigate.

En algunas situaciones te encuentras con problemas que no logras ver a simple vista con la interfaz del Firewall.. Un túnel VPN que no sabes porque no negocia, un tráfico que no está cayendo en la policy correspondiente.. etc.

Por ello, en esta entrada os voy a indicar cómo capturar trazas de tráfico en un Firewall Juniper, algo muy útil a la hora de hacer un debugging a bajo nivel de un problema.

Lo primero de todo es entrar al Firewall por ssh con nuestro usuario admin. Una vez dentro, vamos a proceder a activar el llamado “dbuffer”, lo cual no es más que un buffer en memoria en el cual se almacenarán los paquetes que vamos a capturar.

Una vez esté activo, vamos a comprobar su estado, tamaño y ocupación, puesto que muy probablemente nos interese aumentarlo:

El comando nos devuelve el resultado:

Como vemos, el valor size nos indica el tamaño del dbuf, es muy pequeño, por lo que vamos a aumentarlo a 4 Mb para poder guardar más paquetes

Tras esto, ya estamos listos para añadir filtros a nuestra captura de trazas. Para añadir los mismos, usaremos el comando set ffilter seguido del tipo de filtro, y su valor.

Los tipos de filtros disponibles son:

Es decir, podemos filtrar por IP y puerto origen o destino y por protocolo.

Indicar que los filtros, si se añaden uno a uno, son filtros de tipo “or” es decir, la traza será capturada si cumple UNO de los filtros añadidos, recuerdo, uno a uno.

Si sin embargo se concatenan los filtros, el filtro será de tipo “AND”.

Ejemplos: Quiero filtrar el tráfico de la IP origen 192.168.10.50

Ejemplo 2: Quiero filtrar el tráfico de la IP origen 192.168.10.50 y con destino 10.10.10.50

Si por error añadimos un filtro que no queremos, se puede borrar. Para ello:

Lo cual te devolverá un listado de los filtros activos:

Con esto, basta con lanzar un unset ffilter y el ID del filtro, y se deshabilitará:

Bueno, una vez tenemos nuestros filtros activos, es hora de activar el debug y comenzar a ver trazas.

Par activar el debug usaremos el comando debug flow seguido del tipo de debug, que puede ser basic, all o drop, yo recomiendo basic pues es el más acorde a la mayoría de escenarios:

Tras esto, comenzamos a capturar trazas, pudiendo ver las mismas con el comando:

Y, una vez tengamos todas nuestras trazas, paramos el debug

Y, por limpieza, vaciamos la db de dbuf:

¡Espero que os sirva!


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *