FortiGateGuías técnicas

FortiGate: cómo implementar políticas de seguridad basadas en cabeceras XFF

En ocasiones encontramos equipos de seguridad perimetral que, al estar dentro de una red corporativa, reciben información parcial de las IPs de origen de los clientes que acceden a sus servicios desde Internet, por ejemplo en el caso en que esos accesos se realicen a través de un proxy inverso en un “nivel superior” de la red. En este supuesto, los equipos perimetrales de la empresa/organismo/departamento ven llegar los paquetes con IP origen las de dichos proxies, estando las IPs reales de Internet de los usuarios (o atacantes) ocultas en cabeceras del tipo X-Forwarded-For, accesibles únicamente a nivel de aplicación.

Vamos a presentar a continuación una posible solución para esta situación, de modo que se permita desplegar políticas de seguridad basadas en las IPs reales de los usuarios en Internet, por ejemplo para limitar por GeoIP el acceso a determinados servicios, o para filtrar los accesos de cualquier otro modo que se desee. Para ello se van a emplear de manera combinadas dos funcionalidades de FortiGate: por un lado, su capacidad para funcionar en modo proxy (explícito o transparente) para protocolos como los de navegación, y por otro la funcionalidad que denominamos “Learn client IP”, que permite en el modo proxy identificar las IPs reales de los clientes a partir de determinadas cabeceras.

Comenzando por el final, será necesario habilitar en el “Learn client IP” ( https://help.fortinet.com/fos50hlp/56/Content/FortiOS/fortigate-firewall/Concepts%20-%20Web%20Proxy/Learn%20client%20IP.htm ) por ejemplo del siguiente modo:

config web-proxy global
    set proxy-fqdn “default.fqdn”
    set webproxy-profile “default”
    set learn-client-ip enable
    set learn-client-ip-from-header x-forwarded-for
    set learn-client-ip-srcaddr “all”

end

Si se desea, se puede restringir el alcance de las IPs origen desde las que “aprender” las direcciones reales de los clientes, limitándolas a aquellas empleadas por los proxies inversos.

A continuación, se configura la funcionalidad de proxy transparente ( https://docs.fortinet.com/document/fortigate/6.2.0/cookbook/15908/transparent-proxy ); siguiendo la guía de la referencia, se creará una regla en la política de seguridad para el tráfico que queramos inspeccionar en modo proxy (proxy-based), en este caso el proveniente de los proxies inversos del escenario planteado:

En esta política, los orígenes son las direcciones IP de los proxies inversos, ya que aún no se ha realizado ningún tratamiento de nivel 7 a este tráfico.

NOTA: Es importante tener en cuenta que el “HTTP redirect” necesario para enviar el tráfico de esta política hacia el proxy transparente de FortiGate sólo puede configurarse vía CLI, así como que para redirigir también el tráfico HTTPS se requiere habilitar en la regla la inspección profunda de SSL (“deep inspection”). Del artículo referenciado sobre el proxy transparente, destacamos ambos requisitos en la configuración que en él se muestra como ejemplo:

Una vez el que tráfico pasa por la regla anterior, es redirigido hacia el proxy transparente de FortiGate, en el que ya podremos definir una política para denegar el tráfico que no queramos que llegue a nuestros servidores internos basándonos en información de nivel de aplicación:

En la imagen mostrada, hay dos orígenes (una dirección IP y un objeto de GeoIP) cuyo tráfico va a ser denegado. Estas IPs, las reales de los clientes, serán identificadas por FortiGate a partir de las cabeceras X-Forwarded-For de las peticiones que le llegan desde el proxy inverso.

Adicionalmente, será necesario crear otra política de proxy permitiendo el resto del tráfico que no haya sido denegado por la regla anterior.

Tags

Contenidos relacionados

Deja un comentario

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