{{tag> vpn, ipsec, certificados }}
===== VPN ipsec con certificados =====
Vamos a realizar todo el proceso necesario para realizar conexiones a nuestro fortigate mediante certificados.
Para ello necesitamos un crear una entidad certificadora, ya sea con un servidor Windows con el rol de AD CS(mirar las páginas de referencia), mediante openssl, o como en nuestro caso usando una aplicación para windows llamada XCA http://xca.sourceforge.net/.
Los pasos que vamos a seguir son:
- Crear una entidad certificadora
- Generar un certificado raíz
- Generar certificados para los clientes de la vpn
- Generar un petición para los clienes desde el XCA
- Firmar la petición
- exportar el certificado firmado de cliente
- exportar desde el fortigate el certificado raíz CA_Cert
- importar los certificados clientes y raíz al Forticlient
- Crear vpn, políticas y usuarios en el fortigate
Una VPN con certificados nos garantiza una mayor seguridad, ya que por un lado usamos una clave de encriptación de mayor tamaño y por otro lado implica un segundo factor de autenticación ya que además del usuario/contraseña es necesario tener instalado un segundo elemento como es el certificado
==== Crear una entidad certificadora ====
Nos bajamos el XCA y lo instalamos en nuestro equipo con permisos de administrador
En XCA cada CA (Autoridad Certificadora)se almacena en un fichero con extensión *.xdb. Se recomienda usar distintas bases de datos para cada PKI (Infraestructura de clave pública) que creemos.
Ejecutamos el programa Click File > New Database.
* En la ventana que se abre especificar el nombre y la ubicación donse se almacena el fichero con la base de datos XCA y pulsar guardar.
* Nos aparece una ventana donde debemos poner una contraseña para encriptar el fichero de la base de datos. Esa contraseña es necesaria para cada vez que vayamos a abrir esa base de datos.
{{ :hardware:fortigate:xcapassword.png?600 |}}
Nos aparece la siguiente ventana {{ :hardware:fortigate:xca1.png?600 |}}
==== Generar el certificado Raíz ====
Pulsamos sobre la pestaña **Certificates** y entonces pulsamos en el botón **New Certificate**.
{{ :hardware:fortigate:xca2.png?600 |}}
Configuramos los parámetros del certificado.
=== Pestaña Sujeto ===
Configuramos la información de identificación.
Rellenamos los campos de Distinguished name y pulsamos sobre el botón inferior **Generate a new key**
{{ :hardware:fortigate:xca3.png?600 |}}
Seleccionamos el tamaño de la clave y pulsamos el botón **Create**
{{ :hardware:fortigate:xca4.png?300 |}}
=== Pestaña Extensions ===
modificamos los siguientes parámetros:
* en la lista desplegable **Type** elegimos **Certification Authority**
* En la casilla **Time range** ponemos 10 para que el certificado raíz tenga una validez de 10 años{{ :hardware:fortigate:xca5.png?600 |}}
=== Pestaña Key usage ===
En el panel de la izquierda comprobamos que tenemos las opciones:
* Digital Signature
* Key Agreement
* Certificate Sign
{{ :hardware:fortigate:xca6.png?600 |}}
Pulsamos Aceptar y nos debe aparecer una ventana indicandonos que el certificado ha sido creado
{{ :hardware:fortigate:xca7.png?600 |}}
{{ :hardware:fortigate:xca8.png?600 |}}
Lo siguiente es exportar el certificado raíz para tener una copia de seguridad. Para ello hacemos lo siguiente:
* Pestaña certificados ->Seleccionamos el certificado de la CZ ->Botón exportar ->ponemos la ubicación y el nombre de donde guardamos el certificado y pulsamos sobre el botón Aceptar
{{ :hardware:fortigate:xca9.png?600 |}}
==== Crear certificados para los clientes ====
Abrimos el XCA -> Pestaña Solicitudes de Certificado (Certificate signing requests )-> Nueva solicitud (New Request)
{{ :hardware:fortigate:x_certificate_and_key_management-2014-02-20_12.34.52.png?600 |}}
Seleccionamos nuestra plantilla de CA para generar el nuevo certificado
En la ventana que se abre -> Pestaña Subject -> Rellenamos los campos y pulsamos sobre el botón generar una nueva clave (generate a new key)
{{ :hardware:fortigate:x_certificate_and_key_management-2014-02-20_12.37.49.png?600 |}}
el commonname tiene que coincider con el del usuario pki que creamos en el fortinet
Seleccionamos el tamaño de la clave y pulsamos sobre create.
{{ :hardware:fortigate:vpn:xcacliente1.png?nolink&600 |{{ :hardware:fortigate:vpn:xcacliente1.png?nolink&600 |}}
Una vez creada la clave vamos a la pestaña **key usage** y seleccionamos del panel de la izquierda -> Digital signature
{{ :hardware:fortigate:x_certificate_and_key_management-2014-02-20_12.43.34.png?600 |}}
Pulsamos el botón de aceptar
=== Firma del certificado cliente ===
El siguiente paso sería firmar la petición de certificado que hemos generado.
Vamos a la pestaña **Solicitudes de Certificado (Certificate signing requests)** aparece la petición que acabamos de crear con el estado de la columna firma como No Manejado (Unhandled).
Pulsamos con el botón derecho del ratón y en el menu contextual que aparece seleccionamos Firma
{{ :hardware:fortigate:screenshot-2014-02-20_12.55.57.png?600 |}}
En la ventana que se abre en la parte de signing elegimos la opción **use this Certificate for signning** y seleccionamos el certificado raíz
{{ :hardware:fortigate:x_certificate_and_key_management-2014-02-20_13.08.28.png?600 |}}
Verificamos que en la pestaña **Extensions** la validez que queremos darle al certificado y pulsamos sobre aceptar
Ahora nos aparecerá el certificado firmado. Ya sólo falta exportar este certificado y el certificado raíz
XCA-> Pestaña Certificate-> elegimos el certificado y le damos a exportar ->PKCS#12
==== Importar Certificados al Fortigate ====
Depués debemos de exportar los certificados de la CA y del cliente hay que importarlos al Fortigate.
=== Importar Certificado Raiz ===
System ->Certificates ->Import->CA Certificates ->Seleccionamos el fichero CA Raiz que previamente hemos exportado de nuestra entidad Certificadora
{{ :hardware:fortigate:vpn:importcertca.png?nolink&600 |}}
=== Importar certificado cliente ===
Vamos al interfaz web del cortafuegos -> System ->Certificates ->Local Certificate -> Import -> Seleccionamos el certificado cliente del paso anterior
{{ :hardware:fortigate:vpn:importarcert.png?nolink&600 |}}
==== Forticlient ====
=== Importar certificados al Forticlient ===
Para usar el certificado de cliente que hemos generado en el equipo del usuario debemos de enviarselo por algún medio y el usario debe proceder a su instalación .
En equipos con Windows 10 basta con pulsar dos veces sobre el certificado para que se inicie el asistente de instalación
{{ :hardware:fortigate:vpn:w10importcert.png?nolink&600 |}}
=== Crear la conexión ===
Añadimos una nueva conexión con los siguientes parámetros
{{:undefined:forticlient.png|}}
La autenticación XAuth la he deshabilitado para simplificar, pero sería recomendable activarla tanto el fortigate como en el cliente
==== Crear conexión y usuarios en el Fortigate ===
Aparte de los pasos anteriores se supone que en el fortigate hemos creado las políticas y los usuarios necesarios. En caso contrario los pasos a seguir son:
- Crear los usuarios de validación PKI
- Crear la VPN
- Añadir políticas de acceso
=== Creamos los usuarios de validación ===
== Validación por certificados ===
Para la validación por certificados hay que crear usuarios PKI. Fortigate-> User & Device -> PKI
{{ :hardware:fortigate:vpn:pki1.png?nolink&600 |}}
Creamos un nuevo usuario PKI teniendo en cuenta que el Subject tiene que ser el mismo que el del certficado y en CA el certificado de nuestra CA . Si sólo tienes añadida una, se llamara CA_Cert1
=== Creamos la VPN ===
En mi caso voy a generar una vpn por ipsec. Fortigate->VPN -> Ipsec Tunnels -> Create New
{{ :hardware:fortigate:vpn:vpn1.png?nolink&600 |}}
En mi caso voy a generarla utilizando el boton **Custom**
{{ :hardware:fortigate:vpn:vpn2.png?nolink&600 |}}
{{ :hardware:fortigate:vpn:pki2.png?nolink&600 |}}
Cambiamos Remote Gateway por **Dial up user** , la interface que vamos a usar, el método de autentificación a **signature** y seleccionamos el certificado que previamente habíamos importado. En mi caso lo he llamado igual que la vpn
En el campo **Acces Type ** he seleccionado **Peer Certificate** y en el campo **Peer Certificate ** he seleccionado el usuario pki creado anteriormente
{{ :hardware:fortigate:vpn:pki3.png?nolink&600 |}}
El resto de parámetros los pondremos según nuestras necesidades, un ejemplo completo sería el siguiente
{{ :hardware:fortigate:vpn:pki4.png?nolink&600 |}}
{{ :hardware:fortigate:vpn:pki5.png?nolink&600 |}}
{{ :hardware:fortigate:vpn:pki6.png?nolink&600 |}}
{{ :hardware:fortigate:vpn:pki7.png?nolink&600 |}}
{{ :hardware:fortigate:vpn:pki8.png?nolink&600 |}}
Por supuesto hay que dar de alta en el Fortigate todos los rangos de las direcciones que vayamos a utilizar y las reglas de acceso que van a necesitar esas redes