Diagnose Debug Flow FortiGate

FortiGate dispone de muchas herramientas de diagnóstico de tráfico para poder realizar troubleshooting. Una de ellas es el comando «diagnose debug flow» que nos permitirá por consola comprobar qué está sucediendo con un determinado tráfico que queramos analizar.

Por ejemplo, supongamos que el equipo 192.168.200.20 no llega a las DNS de Google y tras revisar las reglas no encontramos motivo aparente para que no funcione este tráfico. Revisamos los logs y tampoco detectamos nada de ese tráfico, no aparece muy probablemente porque la regla que está actuando para este tráfico no esté configurada para recopilar logs.

Bajo este pretexto lo mejor que podemos realizar es un «debug flow«. En el siguiente recuadro se indican los comandos que introduciremos por consola, podéis cambiar el saddr y el daddr para probar en vuestro entorno:

diagnose debug flow filter saddr 192.168.200.20
diagnose debug flow filter daddr 8.8.8.8
diag debug flow show iprope enable
diagnose debug flow show function-name enable
diagnose debug console timestamp enable
diagnose debug flow trace start 999
diagnose debug enable

En la siguiente imagen veremos los detalles del comando anterior:

  1. Se recibe el tráfico con origen la IP 192.168.200.20 y destino 8.8.8.8. (proto=1 es ICMP)
  2. Se verifica que existe una ruta para este tráfico mediante el gateway 192.168.1.1 – port1
  3. El tráfico hace match con la regla 4 y action-drop.
  4. Se loguea con el mensaje «Denied by forward policy check (policy 4)»

Como se puede observar, con la información recopilada hemos comprobado que existe una regla que está denegando ese tráfico pero no pudimos verlo en el GUI porque no está haciendo log.

IMPORTANTE: Recordad que esto es solo un laboratorio de prueba y aquí solo hay 3 reglas, pero en un entorno en producción pueden existir cientos/miles de reglas por lo que este comando nos resultará muy útil para detectar rápidamente por dónde va un determinado tráfico.

Por último, para reiniciar/deshabilitar el debug flow lanzamos los siguientes comandos:

diagnose debug disable
diagnose debug flow trace stop
diagnose debug flow filter clear
diagnose debug reset

Scroll al inicio
WordPress Appliance - Powered by TurnKey Linux