# Fortinet

> Proteger la VPN de FortiGate con Ironchip: SSL VPN por SAML o RADIUS con NPS, y túnel IPsec de acceso remoto con SAML, con comprobación con FortiClient.

URL: https://docs.ironchip.com/identidad/integraciones/red/fortinet/

Esta guía explica las formas de integrar **Fortinet** (FortiGate) con Ironchip: SSL VPN con [SAML](https://docs.ironchip.com/identidad/protocolos/saml/), SSL VPN con [RADIUS](https://docs.ironchip.com/identidad/protocolos/radius/) a través de [NPS](https://docs.ironchip.com/identidad/integraciones/red/nps/), e IPsec de acceso remoto con SAML.

## SSL VPN con SAML

Integra la VPN SSL de FortiGate con la autenticación de Ironchip por SAML.

### Requisitos

- Acceso a la consola de administración de Ironchip.
- Un usuario con permisos para realizar la configuración en Fortinet.

### Configuración en Ironchip

1. En la consola de administración de Ironchip, ve a **Applications** y haz clic en el botón verde **New application**.

   [Imagen: Botón New application en Applications]

2. Selecciona el tipo **SAML** y descarga los metadatos con **Download metadata file**. Los usarás en los pasos siguientes.

   [Imagen: Selección del tipo SAML y descarga de los metadatos]

Más adelante volverás a esta aplicación para terminar la configuración.

### Configuración en FortiGate

1. En el panel de administración de FortiGate, ve a **User & Authentication > Single Sign-On** y haz clic en **Create New**, arriba a la izquierda.

   [Imagen: Botón Create New en Single Sign-On]

2. Configura estos parámetros, todos obligatorios:

   - **Name**: un nombre identificativo.
   - **Address**, en **Service Provider Configuration**: la dirección IP pública a la que se enviará la solicitud de autenticación. Normalmente es la misma IP que la de la VPN.
   - **Entity ID**, **Assertion consumer service URL** y **Single logout service URL**: las URL que usará Ironchip para comunicarse con Fortinet.
   - **Certificate**: el certificado de Fortinet que se utilizará.

   [Imagen: Primera pantalla de configuración del SSO en FortiGate]

3. Haz clic en **Next**. El segundo apartado se edita con comandos: haz clic en **Edit in CLI**.

   [Imagen: Botón Edit in CLI]

4. En la consola que se abre, ejecuta estos comandos y sustituye `<IP VPN>` por la IP de tu VPN:

   ```text
   set entity-id "https://<IP VPN>/remote/saml/metadata/"
   set single-sign-on-url "https://<IP VPN>/remote/saml/login"
   set single-logout-url "https://<IP VPN>/remote/saml/logout"
   end
   ```

5. Cierra la terminal y haz clic en **Cancel**. Así evitas que se restablezcan los datos por defecto.

### Volver a Ironchip: metadatos de FortiGate

En la aplicación de Ironchip hay que indicar la URL de metadatos que usará para comunicarse con Fortinet.

1. Abre una terminal en Fortinet y ejecuta:

   ```text
   diag vpn ssl saml-metadata "<SAML NAME HERE>"
   ```

2. Sube el resultado a una dirección pública de internet y copia la URL en formato raw.
3. Pega esa URL en el campo **Metadata URL** de la aplicación de Ironchip.

   [Imagen: Campo Metadata URL de la aplicación SAML en Ironchip]

4. Haz clic en **Add service** para terminar la configuración en Ironchip.

:::note
En la versión actual de la consola, la aplicación SAML tiene el apartado **Service Provider (SP)** con el campo **SP Metadata**, que admite **URL**, **Text** y **File**. Elige **Text**, pega el resultado del comando y haz clic en **Import**, como en [IPsec con SAML](#ipsec-con-saml): no hace falta subirlo a una dirección pública.
:::

### Terminar la configuración en FortiGate

Vuelve a la pantalla de Fortinet donde lo dejaste. Ten abierto el archivo de metadatos que descargaste de Ironchip.

1. En **Type**, selecciona `Custom`.
2. Rellena las URL del IdP con los datos del archivo de metadatos:

   - **EntityID**: la propiedad `entityID` de la etiqueta XML `EntityDescriptor`.
   - **Assertion consumer service URL**: la propiedad `Location` de la etiqueta XML `SingleSignOnService`.
   - **Single logout service URL**: la propiedad `Location` de la etiqueta XML `SingleLogoutService`.
   - **Certificate**: crea un fichero con extensión `.crt` y pega en él el resultado de introducir el contenido de la etiqueta XML `X509Certificate` del archivo de metadatos en el primer campo de [SAML Tool](https://www.samltool.com/format_x509cert.php). Los dos certificados son idénticos.

3. Introduce los atributos:

   - **Attribute used to identify users**: `urn:oid:0.9.2342.19200300.100.1.1`
   - **Attribute used to identify groups**: `urn:oid:1.3.6.1.4.1.5923.1.1.1.1`

   [Imagen: Configuración de los datos del IdP y los atributos en FortiGate]

4. Haz clic en **Submit** para guardar la configuración.

### Configuración adicional

1. Crea un grupo que tenga como miembro la configuración de SSO de Fortinet.

   [Imagen: Grupo de usuarios con la configuración de SSO como miembro]

2. Añade el grupo a la configuración de la SSL VPN, en **Authentication/Portal Mapping**.

   [Imagen: Grupo añadido en Authentication/Portal Mapping]

3. Añade el grupo a la política de la VPN, en el apartado **Source**.

   [Imagen: Grupo añadido en el campo Source de la política de la VPN]

4. Configura los tiempos de autenticación. Abre una terminal de Fortinet con el icono de la parte superior derecha y ejecuta estos comandos, que dan 60 segundos para autenticarse a los usuarios del grupo asociado:

   ```text
   config user group
   edit <NOMBRE_DEL_GRUPO_PROTEGIDO>
   set authtimeout 60
   end
   ```

   ```text
   config system global
   set remoteauthtimeout 60
   end
   ```

### Autenticación por SAML o contraseña simultáneamente (opcional)

Para que los usuarios puedan entrar tanto por SAML como con contraseña local, elige una de estas opciones.

**Opción 1.** Añade los usuarios locales al grupo creado antes.

[Imagen: Usuarios locales añadidos al grupo de SAML]

**Opción 2.** Crea un grupo nuevo con los usuarios locales.

[Imagen: Nuevo grupo con los usuarios locales]

Después añade ese grupo a **SSL-VPN Settings** y a la política creada anteriormente.

[Imagen: Grupo local añadido a SSL-VPN Settings]

[Imagen: Grupo local añadido a la política de la VPN]

## SSL VPN con RADIUS

Implementa el servicio RADIUS en Fortinet e intégralo con un servidor NPS en un entorno de Active Directory.

### Requisitos

- Un Active Directory funcional.
- El rol de NPS instalado en un Windows Server y protegido por Ironchip. Consulta [Microsoft NPS](https://docs.ironchip.com/identidad/integraciones/red/nps/).
- Una aplicación MFA creada en la consola de administración de Ironchip.
- La app de Ironchip descargada.

### Configuración de NPS

1. En tu servidor AD, abre la configuración de NPS (Servidor de directivas de redes) y crea un nuevo cliente RADIUS que apunte a la IP de Fortinet.

   [Imagen: Creación de un cliente RADIUS en NPS]

2. Introduce estos datos:

   - Un nombre identificativo para RADIUS.
   - La IP de Fortinet.
   - Una clave secreta para RADIUS.

   [Imagen: Datos del cliente RADIUS: nombre, IP y secreto]

### Usuarios y grupos en FortiGate

1. Entra en el panel de configuración de Fortinet desde un navegador, con la IP de tu Fortinet.

   [Imagen: Pantalla de acceso al panel de FortiGate]

2. Ve a **User & Authentication > RADIUS Servers** y añade uno nuevo.

   [Imagen: Menú User & Authentication > RADIUS Servers]

3. Rellena los datos: un nombre identificativo, la IP del servidor donde creaste el RADIUS y el secreto de RADIUS.

   [Imagen: Formulario del servidor RADIUS en FortiGate]

4. Para confirmar que se conectó correctamente, haz clic en **Test Connectivity**. Si el resultado es `Successful`, haz clic en **Test User Credentials** e inicia sesión con un usuario de tu dominio. Si falla, comprueba que el cortafuegos de Windows Server tiene una regla de entrada que permite el tráfico RADIUS (UDP) desde la IP de Fortinet.
5. Crea un grupo y usuarios que hagan referencia al dominio en Fortinet. Ve a **User & Authentication > User Groups** y añade uno nuevo.

   [Imagen: Menú User & Authentication > User Groups]

6. Ponle un nombre, selecciona la opción **Firewall** y en **Remote groups** selecciona tu servidor RADIUS.

   [Imagen: Formulario del grupo de usuarios con el servidor RADIUS remoto]

7. Para configurar los usuarios, ve a la pestaña **User Definition** y repite estos pasos por cada usuario:

   1. Haz clic en **Create New**.
   2. Selecciona **Remote RADIUS User**.
   3. Escribe el usuario con formato `dominio\usuario` y selecciona el servidor RADIUS creado antes.
   4. Deja **Two-factor** deshabilitado.
   5. Habilita **User Group** y selecciona el grupo creado.

Vídeo: [Crear usuarios RADIUS remotos en FortiGate](https://play.hubspotvideo.com/v/7745202/id/130741975671)

#### Atributo en la directiva de red (opcional)

Para no crear los usuarios uno a uno, añade un atributo a la directiva de red del dominio.

1. Abre el **Servidor de directivas de red**.

   [Imagen: Ventana del Servidor de directivas de red]

2. Ve a **Directivas > Directivas de red** y haz doble clic en la directiva.

   [Imagen: Lista de directivas de red]

   [Imagen: Propiedades de la directiva de red]

3. Ve a **Configuración**, en **Atributos RADIUS** selecciona **Específico del proveedor** y haz clic en **Agregar**.

   [Imagen: Atributos RADIUS específicos del proveedor]

4. En el desplegable **Proveedor**, selecciona **Personalizado** y después la opción `vendor-specific`.

   [Imagen: Selección del proveedor personalizado]

5. Haz clic en **Agregar**. Aparece esta ventana:

   [Imagen: Ventana de información del atributo específico del proveedor]

6. Haz clic en **Agregar** y deja la ventana siguiente configurada así:

   [Imagen: Configuración del identificador de proveedor]

7. Haz clic en **Configurar atributo** y en la ventana que aparece establece:

   1. **Número de atributo asignado por el proveedor**: `1`.
   2. **Formato del atributo**: `Cadena`.
   3. **Valor de atributo**: el grupo creado antes en Fortinet.

   [Imagen: Configuración del atributo con número 1, formato cadena y el grupo]

### Configurar la VPN

1. Ve a **VPN > SSL-VPN Settings**.

   [Imagen: Menú VPN > SSL-VPN Settings]

2. Modifica los campos así:

   - Selecciona las interfaces que vas a usar, por ejemplo la WAN o la LAN.
   - Cambia el puerto para evitar conflictos. Te recomendamos `4443` o `10443`.
   - No es necesario crear un certificado, pero puedes crear uno autofirmado si lo necesitas.

3. Baja hasta el final de la página, donde hay otros dos campos por configurar.

   [Imagen: Campos finales de SSL-VPN Settings: asignación de portal]

4. En **Authentication/Portal Mapping**, haz clic en **Create New**, selecciona tu grupo de usuarios y asígnale el portal `tunnel-access`.
5. Haz clic en **Apply**.

### Política de cortafuegos

1. Ve a **Policy & Objects > Firewall Policy** y crea una política nueva.

   [Imagen: Pantalla Firewall Policy]

2. Configúrala así:

   - **Name**: un nombre para la política. Es el que escribirás en la aplicación de la consola de Ironchip y en el plugin.
   - **Incoming Interface**: `SSL-VPN tunnel interface`.
   - **Outgoing Interface**: la interfaz física.
   - **Source**: `all` y, muy importante, el grupo que has creado.
   - **Destination**: `all`.
   - **Service**: `ALL`.

3. Haz clic en **OK**.
4. Configura el timeout de Fortinet y de la conexión RADIUS en 60 segundos, para que los usuarios tengan tiempo de completar la autenticación. Abre una terminal de Fortinet con el icono de la parte superior derecha. Este comando da 60 segundos a los usuarios del grupo asociado:

   ```text
   config user group
   edit <NOMBRE_DEL_GRUPO_PROTEGIDO>
   set authtimeout 60
   end
   ```

5. Haz lo mismo para la conexión RADIUS:

   ```text
   config system global
   set remoteauthtimeout 60
   end
   ```

6. Cambia la configuración para que, al autenticarte, Fortinet no mande más de una petición:

   ```text
   config user radius
   edit <NOMBRE_DEL_SERVIDOR_RADIUS_EN_FORTI>
   set timeout 60
   end
   ```

### Aplicación en Ironchip

Vídeo: [Crear la aplicación de Fortinet en la consola de Ironchip](https://play.hubspotvideo.com/v/7745202/id/130740447107)

### Comprobación con FortiClient

El servidor NPS y Fortinet deben estar iniciados al hacer las pruebas.

1. En FortiClient, selecciona **ACCESO REMOTO**.

   [Imagen: Opción Acceso remoto en FortiClient]

2. En la ventana siguiente, elige **Configurar VPN**.

   [Imagen: Opción Configurar VPN]

3. Rellena los datos de la VPN. Respeta el mismo patrón de identificación de usuario que hayas establecido en el grupo y en la aplicación de la consola de Ironchip. Haz clic en **Guardar**.

   [Imagen: Formulario de configuración de la VPN en FortiClient]

4. En la pantalla siguiente verás el nombre de la conexión y el usuario. Escribe la contraseña y haz clic en **Conectar**. Si el cortafuegos del equipo bloquea la conexión, crea una regla que permita a FortiClient conectar con la IP y el puerto de la VPN en lugar de desactivar el cortafuegos.

   [Imagen: Pantalla de conexión con usuario y contraseña]

5. Aparece una alerta de seguridad. Léela y haz clic en **Sí**.

   [Imagen: Alerta de seguridad al conectar]

6. Continúa el proceso de conexión. Recibirás un mensaje para autorizar el acceso desde la app de Ironchip. Al aceptarlo, se completa la conexión.
7. Cuando se establece la conexión, aparece una ventana con una breve descripción.

   [Imagen: Ventana de conexión VPN establecida]

Vídeo: [Demostración de acceso a la VPN de Fortinet con Ironchip](https://play.hubspotvideo.com/v/7745202/id/130741050703)

## IPsec con SAML

Protege un túnel VPN IPsec de acceso remoto (dial-up, IKEv2) en FortiGate con autenticación SAML mediada por Ironchip.

### Requisitos

- Acceso administrativo a la GUI y a la CLI de FortiGate.
- Una cuenta de administrador en la consola de Ironchip con permisos para crear aplicaciones SAML.
- **FortiClient VPN** instalado en los equipos cliente, con soporte de SSO/SAML para IPsec.
- Una VPN IPsec de acceso remoto (IKEv2).

### Habilitar el puerto SAML global

Desde la CLI de Fortinet, ejecuta:

```text
config system global
    set auth-ike-saml-port 1001
end
```

### Configurar la aplicación SAML

Configura el SSO con SAML en Fortinet y en Ironchip.

1. En FortiGate, ve a **User & Authentication > Single Sign-On** y haz clic en **Create New**.

   [Imagen: Botón Create New en Single Sign-On]

2. Indica un nombre para la configuración, la IP o el DNS de la VPN junto con el puerto SAML configurado antes y el certificado que uses en la VPN.

   [Imagen: Datos del proveedor de servicio: nombre, dirección, puerto SAML y certificado]

3. La siguiente ventana pide los metadatos del proveedor de identidad (IdP), en este caso Ironchip. Para obtenerlos, ve a la consola de administración de Ironchip > **Applications > New application > SAML**.

   [Imagen: Menú Applications y botón New application]

   [Imagen: Selección del tipo SAML]

4. Al crear la aplicación te pide un nombre. Usa uno descriptivo, porque aparecerá más tarde en los dispositivos autenticadores de los usuarios.

   [Imagen: Nombre de la aplicación SAML en Ironchip]

5. Ve al apartado **Identity Provider (IdP)** y copia estos datos:

   - **IdP Entity ID or Issuer**
   - **Single Sign On Service (URL)**
   - **Signing X.509 Certificate**. Este certificado debes importarlo en Fortinet.

   [Imagen: Datos del Identity Provider en Ironchip]

6. Pega los datos en la configuración de Fortinet:

   - **IdP Entity ID or Issuer** en **Entity ID**.
   - **Single Sign On Service** en **Assertion consumer service URL**.
   - **Single logout service URL**: usa la misma URL que la de **Assertion consumer service URL**, pero cambia `sso` por `slo` en la ruta.

7. Indica los atributos que pide Fortinet para autenticar a los usuarios:

   - **Attribute used to identify users**: `urn:oid:0.9.2342.19200300.100.1.1`
   - **Attribute used to identify groups**: `urn:oid:1.3.6.1.4.1.5923.1.1.1.1`

   [Imagen: Atributos de usuario y grupo en la configuración SAML de FortiGate]

8. Obtén los metadatos de Fortinet para importarlos en Ironchip. Abre la CLI global de Fortinet y ejecuta:

   ```text
   diag vpn ssl saml-metadata "<SAML NAME HERE>"
   ```

9. Copia el resultado. En la aplicación que creaste en la consola de Ironchip, abre el apartado **Service Provider (SP)**, elige **Text** en **SP Metadata**, pega el resultado y haz clic en **Import**.

   [Imagen: Campo SP Metadata en el apartado Service Provider]

10. Haz clic en **Add** para terminar de crear la aplicación en Ironchip.

### Crear el grupo de usuarios

Asigna esta configuración SAML a un grupo, para poder asociarlo después a las políticas del cortafuegos.

[Imagen: Creación del grupo de usuarios con la configuración SAML]

[Imagen: Grupo de usuarios creado]

### Activar EAP en la interfaz de fase 1

Edita la interfaz de fase 1 para sustituir PSK por EAP contra el grupo de usuarios de Ironchip:

```text
config vpn ipsec phase1-interface
    edit IPSEC-DIALUP
        set eap enable
        set eap-identity send-request
        set authusrgrp SAML-Group
end
```

:::note
Para que la autenticación se aplique a varios grupos en vez de a uno solo, deja `authusrgrp` con comillas vacías: `set authusrgrp ""`.
:::
