Está en la página 1de 43

Troubleshooting FortiWeb

Actualizado hasta FortiWeb 6.3

© Copyright Fortinet Inc. All rights reserved. Last Modified: 20 October 2020
Lesson Overview

Falsos Positivos

Problemas SSL/TLS

Problemas de Rendimiento

Traffic Flow y Site Statistics


Falsos Positivos
Objectives
• Describir falsos positivos
• Identificar falsos positivos en attack logs
• Prevenir y tomar acción para reducir falsos positivos
Falsos Positivos
• Si un tráfico normal parece como un ataque, FortiWeb puede accidentalmente
bloquear una petición legítima
• Ejemplo: Foros de desarrolladores o webmail que permite ejemplos de código
• Example: Después de actualizar a una nueva versión de la aplicación aparecen nuevos falsos
positivos

• En casos extremos, si un cliente es confiable se puede añadir a la white list


• Bypasea la mayoría de protecciones
• No bypasea TCP flood prevention
• No bypasea block period list
• Machine learning debería prevenir la gran mayoría de los falsos positivos

4
Cómo eliminar Falsos Positivos
• Usar Machine Learning cuando sea posible
• Corregir Falsos Positivos:
1. Comprobar attack logs para identificar qué protección está haciendo saltar el falso positivo
• Podría haber más de una protección, IP, o geolocalización
• Mirar la scan sequence list en la FortiWeb Administration Guide
• Hacer una excepción para ese host o url específica, en caso donde se repita en mucha aplicaciones
deshabilitar la firma.
2. Conseguir la IP del cliente.
• Si el cliente está temporalmente baneado por un periodo de tiempo, borrar la IP de la lista de blocked IPs
3. Si el bloqueo es causado por un perfil de DoS se necesitará hacer una o todas las medidas
siguientes dependiendo del caso:
• Habilitar shared Internet connections (SNAT)
• Añadir una regla X-Forwarded-For
• Incrementar rate limits

5
Attack Logs
• Desde attack logs, deshabilitar la firma o añadir una excepción
Log&Report > Log Access > Attack

6
Cómo buscar el Signature ID y ejemplo de un ataque

• Hacer click en el log de ataque


en la sección message y Log&Report > Log Access > Attack
seleccionar “View Signature”
• Veremos el ejemplo de un
ataque detectado por esa firma
tanto en HTTP 1.X como HTTP 2
• A nivel de logs se puede añadir
excepción, poner en modo alerta y
deshabilitar la firma
• Se pueden hacer excepciones con
condiciones lógicas desde
Signature Details en la sección de
Web Protection → Known attacks
→ signatures

7
Quitando un cliente o IP baneados
• Si el cliente accidentalmente es bloqueado por un periodo de tiempo puedes hacer
dos cosas:
• Liberal manualmente la IP de la blacklist
• Dejar que expire
• Por ADOM, por política

• Monitor > Blocked IPs

• Para ver los bots detectados ir a FortiView → Security → Bot Analysis

• También relacionado con: Server Objects > Global > Known Search Engines
• Los bogs de los buscadores más conocidos se reconocen por rangos de IPs públicas, no por el
campo de la cabecera HTTP User-Agent.

8
Blocked IPs
• Cuando el block period expira se borran automáticamente
• Si un cliente con IP privada fija confiable frecuentemente tiene falsos positivos se
puede meter en whitelist
• Evita liberar manualmente la IP
• Usar esta opción con precaución ya que excepto TCP flood bypasea la mayoría de protecciones

Monitor > Blocked IPs

9
Search Engines
• Listado de IPs mantenido por
FortiGuard
• Los webistes deben ser accesibles e
indexados por los motores de Server Objects > Global > Known Search Engines
búsqueda si no serán invisibles

10
Bot Analysis
• Estadísticas de tráfico de bots FortiView > Security > Bot
Analysis
conocidos y scripts abusivos,
incluyendo ContentSmartz,
curl y wget
• User-Agent: fácilmente
spoofeable, known search
engines usan IPs

11
Lesson Progress

Falsos Positivos

Problemas SSL/TLS

Problemas de Rendimiento

Traffic Flow y Site Statistics


Problemas SSL/TLS
Objectives
• Identificar y resolver problemas relacionados con cifrado
• Securizar SSL
Fallos SSL/TLS—Aggregated Attack Logs
• Deshabilitar “ignore SSL Errors” en Log&Report→ Log Config → Other Log
Settings para que se logueen los errores SSL
• Muchas conexiones HTTPS fallidas pueden ser :
• Misconfiguration (Problemas de negociación entre cliente y FortiWeb entre otros )
• Intento de ataque DoS mediante SSL/TLS DoS
• Real browser enforcement o DoS sensor indica ataque DoS
• Ir a Log Access → Attack → Aggregated Atacks

14
Fallos SSL/TLS—Attack Logs
• no shared cipher o unknown protocol = proposal mismatch
Log&Report > Log Access > Attack

15
SSL/TLS Mismatches
1. FortiWeb (virtual server) propone un protocolo y posibles algoritmos de cifrado
al cliente

• SSL Error(252) - unknown 2. Si el setting ignore ssl errors está deshabilitado en Fortiweb mostrará que SSL
3.0 o superior era desconocido para el cliente
protocol • If old clients, they may be OK. Comportamiento esperado para sitios que cumplan con PCI
DSS
• Android 2.3, IE 6 y Windows XP SP1, y buscadores muy antiguos pueden no funcionar sin SSL
2.0/3.0

• Los atacantes pueden intentar versiones falsas para probar manejo de errores en la
plataforma atacada (por ejemplo, TLS 5.9)
• Si se repiten los ataques, podemos cargar una clave privada en wireshark y analizar el ataque

3. Fallo de negociación de claves, cifrado y hashing


• Con más de 160 suites de cifrado, y usando los más usados cliente y servidor deberían
siempre encontrar cifrados comunes
• A menos que el atacante esté probando suites específicas de cifrado débiles y vulnerables

• SSL Error(193) - no shared • FortiWeb usará Fingerprint attacker’s IP, user agent, geolocación, y otros para bloquear

cipher

16
SSL/TLS Mismatches
• Desactivar SSL 3.0, TLS 1.0 y TLS 1.1 y poner high ciphers
• Desactivar estos cifrados
- Null ciphers
- Anonymous ciphers
- EXPORT ciphers
- Cipher Block Chaining (CBC)
• Testear el resultado de las webs públicas en https://www.ssllabs.com/ssltest/
• Testear localmente con nmap:nmap -p 443 --script=ssl-enum-ciphers virtualHost
• Refencia cifrados usados en modo high y medium:
https://docs.fortinet.com/document/fortiweb/6.3.7/administration-guide/742465/supported-cipher-suites-
protocol-versions#ssl_414712646_1189301

17
Lesson Progress

Falsos Positivos

Problemas SSL/TLS

Problemas de Rendimiento

Traffic Flow y Site Statistics


Problemas de Rendimiento
Objectives
• Identificar y resolver problemas de rendimiento
System Performance
• CLI
# get system performance
CPU states: 4% used, 96% idle
Memory states: 20% used
Up: 0 days, 1 hours, 35 minutes
• GUI
System > Status > Status

20
SNMP Traps y Queries
• SNMP v1, v2c, o v3
• Usar Standard Fortinet MIB, además FortiWeb-specific
• “Network link down,” “CPU usage is high”
• “Invalid hidden field detected”, etc
• Descargar las MIB de https://support.fortinet.com/

21
Event Logs
• En events se pueden ver los eventos de ocupación alta de RAM o alto uso de CPU
Log&Report > Log Access > Event

22
Alert Email
• Mandar avisos por correo
• SMTPS y SMTP sobre STARTTLS están soportados
• Intervalo y severidad configurable
• Durante un ataque DoS hay logs y alertas frecuentes sobre pocos recursos hardware
• FortiWeb registra un mensaje con múltiples ocurrencias durante un ataque DoS
• No saturará de mensajes el buzón destino
• Pueden ser centralizadas vía FortiAnalyzer o FortiSIEM

23
Uso de recursos
# diagnose sys top
Run Time: 0 days, 1 hours and 38 minutes
CPU Usage: user 0%, system 0%, idle 99%
Memory Usage: total 1002M, free 296M, buffers 111M, cached 100M

<process name> <proc id> <state> <CPU> <Memory>


policy(Pol 227 S 0.9 67.4
mysqld 63 S 0.0 10.2
proxyd 79 S 0.0 4.3
alertmail 67 S 0.0 4.0
httpsd 238 S 0.0 3.4

# diagnose sys kill 227 (USAR CON CUIDADO)

24
Optimizando Buffers
• SÓLO MODIFICAR SI EXISTE ALGÚN PROBLEMA
• Demasiados buffers o buffers muy grandes requieren más RAM
• HTTP y páginas HTML a menudo requieren de largos buffers de strings
• Si se excede la memoria física causa que el SO pagine mediante disco reduciendo el rendimiento
• Reducir body y DLP cache sizes en System > Config > Advanced
• Bloquear ficheros mayores que la RAM disponible con file upload policy
• HTTP protocol constraints puede restringir el número y tamño de otros buffer
• En CLI, se pueden configurar más FortiWeb buffers y bloquear o dejar pasar cuando se excedan
los límites del buffer

25
Optimizando la Web Cache
• La web cache de FortiWeb se hace EN MEMORIA NO en disco No se debe cachear
respuestas más grandes
• Mantener el session management cookie timeouts corto si es posible que la RAM libre
• 1200 segundos son 20 minutos. ¿Nuestros clientes están idle tanto tiempo?
config waf web-cache-policy
edit <web-cachce-policy_rule_name>
set max-cached-page-size <page_size>
set cache-buffer-size <cache_size>
set default-cache-timeout 30 Configura la edad de la
next cache apropiadamente
end
• Si la configuración está optimizada pero el uso de la RAM se mantiene alto, habrá
que plantear la necesidad de hacer un upgrade a modelos de FortiWeb con mayor
RAM o vRAM

26
Estructura de Almacenamiento
• Se compone de:
• RAM disk (running OS, configuration)
• Flash memory (imágenes de firmware, fichero de configuración, certificados X.509)
• Hard disk (eventos, attack y traffic logs, ficheros anti-defacement , reportes)
• Para ver las particiones de disco:
# diagnose system mount list
Filesystem 1M-blocks Used Available Use% Mounted on
/dev/ram0 97 81 16 83% /
none 150 0 150 0% /tmp
none 501 0 501 0% /dev/shm
/dev/sda1 97 43 49 46% /data
/dev/sda3 378 16 342 4% /home
/dev/sdb1 30238 212 28490 0% /var/log

27
Mantenimiento del Almacenamiento
• Para formatear la partición de logs de disco:
# execute formatlogdisk

• Para formatear el disco entero se requiere cargar un firmare especial


• Requerido para algunas actualizaciones de firmware

• Listar todas las imágenes firmware instaladas en las particiones:


# diagnose system flash list
have 3 partitions
Image# Version TotalSize(KB) Used(KB) Use% Active
1 FV-VMB-6.02-FW-build0070-190122 99150 72329 73% Yes
3 2019-03-25 18:29 387432 16716 4 % No

28
Indexado de Log
• Se requiere el indexado de los logs para buscar y para los reports
# diagnose index all show
time span starts from 2015-02-24 09:02:39.000000
Total time span is 30251.004856 seconds
Currently processing/Last processed file
'/var/log/fwlog/root/disklog/elog(2015-02-13-00:45:39).log'
event log processed ok: 24, failed: 0
traffic log processed ok: 0, failed: 0
attack log processed ok: 1394, failed: 0

A veces ante problemas e incoherencias en la base de datos de los logs se


requiere reconstruir la base de datos de logs:
# execute db rebuild

29
Listar las sesiones de administradores logueados
# get system logged-users
Logged in users: 6
INDEX USERNAME TYPE FROM TIME
0 admin ssh ssh(10.0.1.1) Tue Feb 24 17:05:57 2019

1 admin web 10.0.1.10 Tue Feb 24 11:01:44 2019

2 admin web 10.0.1.1 Tue Feb 24 15:41:34 2019

3 admin web 10.0.1.10 Tue Feb 24 16:36:18 2019

4 admin web 10.0.1.1 Tue Feb 24 16:46:22 2019

5 admin cli console Tue Feb 24 17:25:40 2019

30
Lesson Progress

Falsos Positivos

Problemas SSL/TLS

Problemas de Rendimiento

Traffic Flow y Site Statistics


Traffic Flow y Site Statistics
Objectives
• Ver varios ejemplos de traffic flow y site statistics
• Resolver incidencias de FortiGuard
Estadísticas de Interfaces de Red
# diagnose hardware nic list port1 Link detected yes
driver e1000 Link encap Ethernet
HWaddr 00:0C:29:F3:4F:3F
version 7.3.21-k8-NAPI INET addr 10.0.1.7
firmware-version Bcast 10.0.1.255
Mask 255.255.255.0
bus-info 0000:02:00.0
FLAG UP BROADCAST RUNNING MULTICAST
Supported ports TP MTU 1500
Supported link modes 10baseT/Half 10baseT/Full MEtric 1
100baseT/Half 100baseT/Full RX packets 78658
RX errors 0
1000baseT/Full RX dropped 0
Supports auto-negotiation: Yes RX overruns 0
RX frame 0
Advertised link modes: 10baseT/Half 10baseT/Full
TX packets 100457
100baseT/Half 100baseT/Full TX errors 0
1000baseT/Full TX dropped 0
TX overruns 0
Advertised auto-negotiation: Yes
TX carrier 0
Speed: 1000Mb/s TX collisions 0
Duplex: Full TX queuelen 1000
Port: Twisted Pair RX bytes 17027027 (16.2 Mb)
...
PHYAD 0
Transceiver: internal
Auto-negotiation on
Supports Wake-on d
Wake-on d
Current message level 0x00000007 (7)
33
Tabla ARP
• Mostrar la tabla de ARP
# diagnose network arp list
port2: 10.0.1.2 00:50:56:fb:af:21 stale
lo: 127.0.0.1 00:00:00:00:00:00 noarp
lo: 10.0.1.7 00:00:00:00:00:00 noarp
port3: 10.0.1.21 00:0c:29:59:03:56 reachable
port1: 10.0.1.1 00:50:56:c0:00:02 delay
port2: 10.0.1.10 00:0c:29:0e:64:85 stale
lo: ::1 0: 0: 0: 0: 0: 0 noarp
• Borrar una entrada específica de ARP
# diagnose network arp delete <port_name> <IP>
• Añadir una entrada estática de ARP
# diagnose network arp add <port_name> <IP> <MAC>

34
Comandos para testear conectividad
• Para testear problemas de conectividad:
• Ping:
execute ping {<IPv4> | <host_fqdn>}
execute ping6 {<IPv6> | <host_fqdn>}
• Traceroute:
execute traceroute {<IPv4> | host_fqdn>}

35
Packet Capture—CLI
# diagnose network sniffer <interface> <filter> <level> [count] [a]
• <interface> Nombre del interfaz físico; o any para capturar en todos los interfaces
• <filter> Qué paquetes capturar; sintáxis Berkeley Packet Filtering (BPF)
• Ejemplo: Muestra tráfico UDP port 1812 entre 1.example.com and either 2.example.com o
3.example.com
• 'udp and port 1812 and src host 1.example.com and dst \( 2.example.com or 2.example.com \)'
• <level>: Nivel de debug a capturar
• 1: Basic IP header; omite checksum, TTL, TOS/DSCP, y más
• 2: La misma salida del nivel 1, más packet payload in both hexadecimal, and ASCII
• 3: La misma salida del nivel 2, más link layer (Ethernet) header
• 4: La misma salida del nivel 1, más nombre del interfaz
• 5: La misma salida del nivel 2, más nombre del interfaz
• 6: La misma salida del nivel 3, más nombre del interfaz
• [count]: Número de paquetes que captura; pulsar Ctrl+C para parar
• [a]: UTC timestamp absoluto; si no el tiempo será relativo al inicio de la captura

36
Ejemplo: Packet Capture en FortiWeb (Verbosity 1)
# diagnose network sniffer port1 none 1 3
filters=[none]
2.969258 arp who-has 10.0.1.21 tell 10.0.1.7
2.969492 arp who-has 10.0.1.22 tell 10.0.1.7
3.523396 10.0.1.7.22 -> 10.0.1.10.10927: psh 908262810 ack 3725488367
3 packets recieved by filter

37
Ejemplo: Packet Capture (Filtro y Verbosity 6)
# diagnose network sniffer packet any 'tcp port 443' 6
filters=[tcp port 443]
interface=[port1]
12.230428 10.0.1.10.11020 -> 10.0.1.8.443: syn 2188166743
0x0000 000c 29f3 4f3f 000c 290e 6485 0800 4500 ..).O?..).d...E.
0x0010 0034 75a2 4000 8006 6f10 0a00 010a 0a00 .4u.@...o.......
0x0020 0108 2b0c 01bb 826c c657 0000 0000 8002 ..+....l.W......
0x0030 2000 c373 0000 0204 05b4 0103 0308 0101 ...s............
0x0040 0402 ..

interface=[port1]
12.230457 10.0.1.8.443 -> 10.0.1.10.11020: syn 1895238276 ack 2188166744
0x0000 000c 290e 6485 000c 29f3 4f3f 0800 4500 ..).d...).O?..E.
0x0010 0034 0000 4000 4006 24b3 0a00 0108 0a00 .4..@.@.$.......
0x0020 010a 01bb 2b0c 70f7 0a84 826c c658 8012 ....+.p....l.X..
0x0030 3908 1638 0000 0204 05b4 0101 0402 0103 9..8............
0x0040 0301 ..

interface=[port1]
12.230514 10.0.1.10.11021 -> 10.0.1.8.443: syn 4238907980
0x0000 000c 29f3 4f3f 000c 290e 6485 0800 4500 ..).O?..).d...E.
0x0010 0034 75a3 4000 8006 6f0f 0a00 010a 0a00 .4u.@...o.......
0x0020 0108 2b0d 01bb fca8 9a4c 0000 0000 8002 ..+......L......
0x0030 2000 7541 0000 0204 05b4 0103 0308 0101 ..uA............
0x0040 0402 ..
...
caught signo SIGINT
39 packets recved from port1
39 packets recved by filter

38
Packet Capture—GUI
• Existe una funcionalidad vía GUI para realizar capturas de red
• Las capturas se guardan en formato PCAP
• Se pueden descargar las capturas y abrir directamente en Wireshark incluso sin
pararlas

System > Network > Packet Capture

39
Conectividad a FortiGuard
• Para el primer intento, FortiWeb conecta por defecto al siguiente FQDN
update.fortiguard.net
• Consigue la lista de los servidores FortiGuard
• Después, FortiWeb se conecta al servidor FDN en la misma zona horaria o a la más
próxima
• Si se detecta lentitud en la conectividad a FortiGuard verificar la zona horaria
configurada y que no haya problemas de conectividad a FortiGuard
• Las conexiones usan HTTPS

40
FortiGuard Troubleshooting
• DNS debe estar correctamente configurado y debe poder resolver
update.fortiguard.net (probar execute ping update.fortiguard.net desde el CLI de
FortiWeb)
• FortiWeb debe tener acceso a Internet a través de HTTPS TCP puerto 443
• Comandos de Debug:
diagnose debug application fds 7
diagnose debug enable
execute update-now
• Esto también se usa para disparar la activación de la licencia de FortiWeb VM

41
FW .3.3
Diagnose Debug for URL rewriting

6
B
Habilitar el módulo url-rewriting diag por CLI y chequear los mensajes

diagnose debug flow filter module-detail status on


diagnose debug flow filter module-detail module url-rewriting
diagnose debug flow trace start
diagnose debug enable

42
Otras recomendaciones
• Hardenizar Acceso administración
l Nunca dejar abierto el acceso hacia redes públicas
l Controlar el acceso desde redes seguras con IPv4 Trusted Host
l Configurar usuarios administrador con AD

• Actualizaciones de Firmware con FortiWeb


l Leer siempre los release notes antes de actualizar
l La política de actualizaciones de Fortiweb es tipo rolling release
l Muchos parches son simples bugfixes

43

También podría gustarte