jueves, 15 de septiembre de 2022

Como capturar tráfico remotamente en F5 BIG IP usando ssh, tcpdump y wireshark (MacOS/Linux).

Introducción

  La captura remota ssh de Wireshark es muy opción muy útil que nos permite capturar tráfico directamente desde en un host que tengamos acceso ssh y analizarla en tiempo real, sin copiar la necesidad de guardar el archivo en el host remoto para luego transferirlo a nuestro dispositivo, fantástico. Esta opción siempre me había funcionando bien capturando tráfico en máquinas Centos 8 o AlmaLinux 8, pero días atrás intente utilizarla con un dispositivo F5 versión 15.1.x.x y para mi sorpresa no funcionó. Para los que no conocen la opción que menciono les dejo esta captura de pantalla.


    En fin, supongo que no soy el primero ni el ultimo que le ocurre esto, así es que compartiré el siguiente tip que explica cómo realizar la captura remota desde un ordenador con MacOS, este mismo método puede funcionar en Linux (cambiando el path de wireshark obviamente) y Windows (usando plink).

    La fuente de esta solución es este antiguo artículo en devcentral.

El tip

    La idea es simple, desde la terminal de nuestro ordenador nos conectamos por ssh al F5 big ip donde queremos capturar tráfico, ahi ejecutamos el comando tcpdump y lo que capture será enviado al STDOUT (en este caso el ssh en nuestro ordenador), luego esa salida del ssh es enviada usando pipe "|" a nuestra aplicación wireshark.

    El comando a ejecutar nuestra terminal es el siguiente:

ssh -l <USERNAME> <BIG_IP_ADDRESS> "tcpdump -w - -s0 -i <IF>:nnnp <TCPDUMP_EXPRESSION>" | /Applications/Wireshark.app/Contents/MacOS/Wireshark -k -i -  

    Explicacion:
  • ssh es cliente que inicia la conexión ssh desde nuestro ordenador hacia el dispositivo F5.
  • -l <USERNAME>  especifica el usuario para iniciar sesión.
  • <BIG_IP_ADDRESS> es la direccion ip de el dispositivo F5 big ip donde realizaremos la captura de tráfico.
  • tcpdump es el comando que se ejecutará en el big ip para capturar datos.
  • -w - es la opción que le indica escribir la captura al STDOUT.
  • -s0 le indica a tcpdump que capture el paquete completo y no solo los encabezados.
  • -i <IF> es la opción donde especificamos la interfaz donde capturaremos tráfico (internal, 0.0).
  • :nnn es la opción para especificar el nivel de ruido de la captura (n=bajo, nn=medio,nnn=alto), cuando hablamos de ruido en realidad nos referimos a la información de tmm que se agrega a la captura de paquetes y wireshark es capaz de interpretar. https://support.f5.com/csp/article/K13637
  • p es la opcion para decirle al tcpdump de f5 que capture ambos lados de la conexión. Esto es util cuando capturamos en una vlan específica, si usamos la interfaz 0.0 no tiene sentido.
  • <TCPDUMP_EXPRESSION> es el filtro que aplicaremos al tráfico.
  • | /Applications/Wireshark.app/Contents/MacOS/Wireshark envia la salida de todo lo anterior a la aplicación local Wireshark.
  • -k indica a wireshark comenzar a capturar inmediatamente.
  • -i - indica a wireshark capturar desde el STDIN.

Observaciones. 

    La salida de tcpdump es "buffered" por lo que la visualización de datos en wireshark demora un par de segundos, dependiendo de la cantidad de tráfico capturado, pero de todas formas lei que tcpdump se puede combinar la opción -U con -w para que escriba paquete por paquete al STDOUT, pero aun no lo he probado.


No hay comentarios.:

Publicar un comentario

Como enviar la IP de Usuario F5 APM NA a Palo Alto User-ID Agent como Syslog Listener

Introducción   Varios dispositivos de seguridad, principalmente NG-FW, son capaces de crear políticas o reglas basadas en usuario. Para esto...