viernes, 25 de noviembre de 2022

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 lo que hacen es crear una tabla donde se relaciona el usuario con la ip asignada a su dispositivo. En nuestro la ip es asignada dinámicamente por APM, el módulo de f5 que provee conectividad VPN SSL, y network access, el objeto en el que se definen los parámetros de red que se entregarán al dispositivo.
   ¿Cómo puede el F5 APM informar al NG-FW la ip que fue asignada al usuario? Usando el protocolo syslog.
En el caso puntual de Palo Alto se debe configurar el User-ID Agent como Syslog Listener, y el F5 se debe configurar para enviar esta información usando el protocolo syslog, con una simple irule atachada al virtual server listener del servicio vpn ssl.

El tip

    De acuerdo al kb https://support.f5.com/csp/article/K27804015 podemos obtener los datos necesarios de la sesión cuando se está creando con la siguiente irule :

when CLIENT_ACCEPTED {
  ACCESS::restrict_irule_events disable
}
when HTTP_REQUEST {
  if { [HTTP::uri] starts_with "/myvpn?sess=" } {
    after 5000 {
      log local0.notice "User_Name=[ACCESS::session data get session.logon.last.username] Session_ID=[ACCESS::session data get session.user.sessionid] Assigned PPP Dynamic IPv4: [ACCESS::session data get session.assigned.clientip] NA Resource: [ACCESS::session data get session.assigned.resources.na] Client IP: [ACCESS::session data get session.user.clientip]"
      }
    }
}

Para integrarlo con el User-ID Agent Syslog de Palo Alto solo debemos modificar la irule de la siguiente manera:

when CLIENT_ACCEPTED {
  ACCESS::restrict_irule_events disable
}
when HTTP_REQUEST {
  if { [HTTP::uri] starts_with "/myvpn?sess=" } {
    after 5000 {
      log <IP_PALO_ALTO_SYSLOG>:<PORT_PALO_ALTO_SYSLOG> local0.notice "User_Name=[ACCESS::session data get session.logon.last.username] Session_ID=[ACCESS::session data get session.user.sessionid] Assigned PPP Dynamic IPv4: [ACCESS::session data get session.assigned.clientip] NA Resource: [ACCESS::session data get session.assigned.resources.na] Client IP: [ACCESS::session data get session.user.clientip]"
      }
    }
}

El mensaje en cuestión puede modificarse en la irule para hacer match con lo que este configurado en palo alto o vice versa.

Observaciones. 

    El comando "after 5000" que está en la irule quiere decir que ese bloque de código se ejecutara 5 segundos despues, por lo que existe un pequeño periodo de tiempo en que pueden transitar paquetes hacia el firewall pero el firewall no tendra la relación usuario-ip para esos paquetes.

 

lunes, 10 de octubre de 2022

¿Que ocurre al deshabilitar un virtual server en F5 LTM?

Introducción

La habilitación y deshabilitación de objetos en dispositivos BIG-IP es una tarea bastante común . Cuando hablamos de Pool members o Nodes el resultado al habilitar/deshabilitar es lógico, el objeto en cuestión comenzará o dejará de estar disponible para procesar tráfico, podríamos pensar que ocurrirá algo similar al deshabilitar un virtual server o una virtual address, el objeto dejaría de procesar tráfico y por precedencia debería otro objeto del mismo tipo,  pero es un poco más complejo que eso.

El tip

Cuando deshabilitamos un virtual server lo que realmente ocurre es que el tráfico asociado con el (traffic matching) es descartado. Si deseamos que se continúe evaluando virtual servers menos específicos se debe usar el siguiente comando:

tmsh modify sys db tm.continuematching value true

De todas formas esta configuración no es recomendada por F5, pero si aun asi les interesa utilizarla les dejo más información en los siguientes enlaces:

https://support.f5.com/csp/article/K44310518

https://support.f5.com/csp/article/K8009

En el caso de deshabilitar una virtual address ocurre lo siguiente: se descarta el tráfico asociado con el objeto en cuestión, las conexiones existentes se seguirán procesando, continuará respondiendo por ARP y anunciando la ruta por OSPF o BGP en el caso de estar configurado. Más información al respecto en el siguiente enlace:

https://support.f5.com/csp/article/K5773

Conclusión 

Al deshabilitar un virtual server se debe tener en cuenta que, por defecto, el tráfico será descartado y F5 no recomienda modificar esta forma de operar.

Al deshabilitar una virtual address, se debe deshabilitar las propiedades ARP y Route Advertisement de manera independiente.




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.


miércoles, 14 de septiembre de 2022

Un blog en español dedicado a compartir tips para F5 y linux.

Este es el comienzo de una serie de artículos en los que compartiré la experiencia que he ganado trabajando con dispositivos F5. Este blog es 100% técnico. 

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...