{{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