Configurar FortiProxy Explícito + Autenticación por Kerberos

La autenticación basada en Kerberos es un estándar ampliamente utilizado para la autenticación segura en redes, especialmente en entornos de Windows. Implementar esta tecnología en un FortiProxy permite una gestión eficiente y segura de los accesos a internet y recursos internos, asegurando que solo usuarios autenticados puedan utilizar estos servicios.

En este artículo, se detalla el proceso completo de configuración de FortiProxy para utilizar autenticación por Kerberos, incluyendo la configuración del Active Directory, la creación de registros DNS necesarios y los ajustes específicos en FortiProxy mediante la interfaz de línea de comandos (CLI). A través de estos pasos detallados, los administradores de red podrán implementar de manera efectiva esta robusta forma de autenticación en sus entornos, mejorando así tanto la seguridad como la usabilidad de sus sistemas.

FortiProxy, como parte de la familia de productos de Fortinet, ofrece capacidades avanzadas de proxy web, filtrado de contenido y control de acceso. La integración de Kerberos en FortiProxy no solo mejora la seguridad, sino que también simplifica la experiencia del usuario final, eliminando la necesidad de introducir credenciales múltiples veces.

1. Configurar el Active Directory (AD)

A. Crear una Cuenta de Servicio para FortiProxy

  1. Abrir Active Directory Users and Computers (ADUC):
    • Crea un nuevo usuario en el AD. Este usuario actuará como la cuenta de servicio para el FortiProxy. Anota el nombre de usuario y la contraseña. En este caso lo llamaremos «fpx«.
  2. Delegar los Permisos Adecuados:
    • Da a esta cuenta de servicio los permisos necesarios para leer las propiedades de los usuarios y los grupos del AD.

B. Generar el Keytab para la Cuenta de Servicio

  1. Usar ktpass para Crear un Keytab:
    • En el servidor AD, abre una ventana de comandos y ejecuta:
ktpass -princ HTTP/[email protected] -mapuser fpx -pass 123456789 -crypto all -ptype KRB5_NT_PRINCIPAL -out fortiproxy.keytab

C. Convertir el Keytab a Base64

  1. Convertir el Keytab:
    • Puedes usar una herramienta como certutil en Windows:
certutil -encode fortiproxy.keytab fortiproxy.txt

2. Configurar el DNS

  1. Crear un Registro DNS para FortiProxy:
    • Abre la consola de administración DNS.
    • Crea un nuevo registro A en el DC. En este caso lo hemos creado para proxy.nosololinux.es con la dirección IP del FortiProxy

3. Configurar servidor LDAP

Configuramos el servidor de LDAP en nuestro FortiProxy:

Introducimos los siguientes comandos también por consola:

config user ldap
    edit "LDAP_DC"
        set account-key-processing strip
        set account-key-filter "(&(sAMAccountName=%s)(!(UserAccountControl:1.2.840.113556.1.4.803:=2)))"
    next
end

4. Configurar FortiProxy a través de CLI

Conectarse al CLI de FortiProxy e introducimos los siguientes comandos, teniendo en cuenta que el parámetro «keytab» es el valor que obtuvimos en el DC tras convertirlo en base64.

config user krb-keytab
    edit "http_service"
        set pac-data disable
        set principal "HTTP/[email protected]"
        set ldap-server "LDAP_DC"
        set keytab "ENC 8OTtBUGfR0KYyYPtUhWyX4LlMRYN0..."
    next
end

5. Configuramos el Domain Controller

config user domain-controller
    edit "DC_WS2012"
        set ip-address 10.1.1.12
        set domain-name-src server
        set ldap-server "LDAP_DC"
    next
end

6. Configuramos el Authentication Scheme

Configuramos el método como «Negotiate«, en el apartado «Kerberos keytab» seleccionamos el que acabamos de crear.

7. Configuramos la Authentication Rule

8. Configuramos la regla de navegación

9. Configuramos el proxy explícito

10. Autenticación de usuario y comprobación

Nos logamos en el equipo con el usuario de dominio, en este caso «alozanox«:

Verificamos que tenemos el proxy correctamente configurado con su FQDN:

Introducimos el comando «klist» en el equipo Windows10/11 para comprobar los servicios de Kerberos:

C:\Users\alozanox.NOSOLOLINUX>klist

Current LogonId is 0:0x4a50a6

Cached Tickets: (2)

#0>     Client: alozanox @ NOSOLOLINUX.ES
        Server: krbtgt/NOSOLOLINUX.ES @ NOSOLOLINUX.ES
        KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96
        Ticket Flags 0x40e10000 -> forwardable renewable initial pre_authent name_canonicalize
        Start Time: 6/4/2024 9:18:36 (local)
        End Time:   6/4/2024 19:18:36 (local)
        Renew Time: 6/11/2024 9:18:36 (local)
        Session Key Type: AES-256-CTS-HMAC-SHA1-96
        Cache Flags: 0x1 -> PRIMARY
        Kdc Called: WIN-Q0QDAA1OU0C.NOSOLOLINUX.ES

#1>     Client: alozanox @ NOSOLOLINUX.ES
        Server: HTTP/proxy.nosololinux.es @ NOSOLOLINUX.ES
        KerbTicket Encryption Type: RSADSI RC4-HMAC(NT)
        Ticket Flags 0x40a10000 -> forwardable renewable pre_authent name_canonicalize
        Start Time: 6/4/2024 9:18:36 (local)
        End Time:   6/4/2024 19:18:36 (local)
        Renew Time: 6/11/2024 9:18:36 (local)
        Session Key Type: RSADSI RC4-HMAC(NT)
        Cache Flags: 0
        Kdc Called: WIN-Q0QDAA1OU0C.NOSOLOLINUX.ES

Por último, podremos observar en el FortiProxy los usuarios autenticados:

Scroll al inicio
WordPress Appliance - Powered by TurnKey Linux