En Fortigate/FortiOS, si se crea un nuevo balanceo HTTPS desde la consola web de administración no tendremos la opción de modificar (ni siquiera observar) los parámetros establecidos para los algoritmos de cifrado, los protocolos permitidos de negociación y más configuraciones que afectan directamente a la seguridad del servicio que estamos ofreciendo por SSL a través del balanceador.
La configuración por defecto será, probablemente insuficiente para nuestros requerimientos y cumplir las medidas de seguridad que hoy en día se requieren para cualquier sitio web. Para poder ajustar al detalle toda esta configuración hay que gestionar la configuración a través de CLI por ssh.
Securización SSL en balanceo de carga
En el siguiente ejemplo vamos a configurar parámetros SSL para un balanceo llamado https-lb1:
FortiOS # config firewall vip FortiOS (vip) # edit https-lb1 FortiOS (https-lb1) #
Una vez en la sección del balanceo, podemos ejecutar un show
para ver la configuración actual:
FortiOS (https-lb1) # show set id 0 set uuid f3176d88-36b7-51d6-2d3d-afc66cb5xa62 set comment "Virtual Server HTTPS foo.com" set type server-load-balance set extip 10.120.0.10 set extintf "if1" [...] set ssl-mode half set ssl-certificate "ssl_foo_cert" set ssl-dh-bits 2048 set ssl-algorithm high set ssl-pfs allow set ssl-min-version tls-1.0 set ssl-max-version tls-1.1 set ssl-send-empty-frags enable set ssl-client-renegotiation allow set ssl-client-session-state-type both set ssl-client-session-state-timeout 30 set ssl-client-session-state-max 1000 set ssl-http-location-conversion disable [...]
Como podéis observar, aquí si que visualizamos unos cuantos parámetros de configuración específica de SSL. Si echáis un ojo a la documentación podréis ver con detalle lo que hace cada uno. Para lo que nos interesa a nosotros algunos a destacar serían:
FortiOS (https-lb1) # set ssl-dh-bits 2048 FortiOS (https-lb1) # end
Enter the number of bits of the prime number used in the Diffie-Hellman exchange for RSA encryption of the SSL connection. Larger prime numbers are associated with greater cryptographic strength.
Configurando el valor a 2048 bits conseguimos un cifrado más robusto durante el intercambio DH para RSA. Este es uno de los puntos importante que saltan durante un chequeo en ssllabs.com.
FortiOS (https-lb1) # set ssl-algorithm ? high Use AES or 3DES. medium Use AES, 3DES, or RC4. low Use AES, 3DES, RC4, or DES. custom Use custom cipher suite algorithms. FortiOS (https-lb1) # set ssl-algorithm high FortiOS (https-lb1) # end
A la hora de especificar los algoritmos de cifrado podemos hacer uso de unos valores predeterminados o especificar manualmente los algoritmos que queremos ofrecer. Ante la dura «high» es la mejor opción.
FortiOS (https-lb1) # set ssl-min-version tls-1.0 FortiOS (https-lb1) # set ssl-max-version tls-1.1 FortiOS (https-lb1) # end
Versión máxima y mínima de protocolo SSL que permitimos. Con esta configuración evitamos publicar bajo SSLv3.
Con estos cuatro parámetros veréis que se consigue una muy buena puntuación en ssllabs.com, lo que implica tener un servicio SSL seguro. Para afinar más la configuración revisad el enlace a la documentación que he puesto más arriba.
Securización SSL en consola web de administración
Para securizar la consola web de administración HTTPS basta con habilitar a nivel global strong-crypto
config system global set strong-crypto enable end
Con esta configuración únicamente se permitirán los cifrados AES, 3DES y digest SHA1.