Tener un certificado firmado no es suficiente para garantizar una buena seguridad y privacidad de las conexiones entre cliente y servidor. Existen numerosas vulnerabilidades y tipos de ataques en ciertas versiones TLS, como Poodle que se aprovecha de una vulnerabilidad en SSLv3, o protocolos criptográficos como Diffie-Hellman, evolución de un protocolo de establecimiento de claves y vulnerable a ataques pasivos y activos de tipo Man-in-the-middle. Y también tenemos que tener muy en cuenta el riesgo de utilizar el cifrado de flujo RC4, conocido como RC4 Cipher.
Son muchos los riesgos de los que nos debemos preocupar, pero por suerte existen buenas herramientas que se encargan de analizar nuestro sitio web de manera rápida y gratuita. Por ejemplo podemos utilizar SSL Server Test de Qualys SSL Labs, y en pocos segundos tendremos un informe detallado sobre el nivel de seguridad y privacidad que ofrece nuestro sitio web.
La metodología para calcular los resultados se basa en una tabla de puntuación de 0 a 100, donde la presencial de tan sólo una de las vulnerabilidades citadas en el primer párrafo es más que suficiente para no alcanzar los 80 puntos necesarios para lograr el grado A. En relación a la puntuación obtenida se establece un grado de F a A:
- puntuación >= 80: A
- puntuación >= 65: B
- puntuación >= 50: C
- puntuación >= 35: D
- puntuación >= 20: E
- puntuación < 20: F
Puedes obtener más información sobre la metodología de puntuación consultando la guía de clasificación de servidores SSL.
En este artículo vamos a explicar cómo erradicar el problema de las tres vulnerabilidades que más preocupan a día de hoy, para ello sólo debemos seguir los siguientes pasos para deshabilitar SSLv3, el soporte de los parámetros de intercambio de claves Diffie-Hellman (DH) y deshabilitar el cifrado de flujo RC4.
Deshabilitar SSL v3
- Desde el servidor web abrimos el editor de registro, y navegamos por la siguiente ruta: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Client
- NOTA: Si no tenemos las claves SSL 3.0 y Client, debemos crearlas.
- Creamos un valor DWORD y lo llamaremos DisabledByDefault, con el valor 1.
- Ahora nos vamos a la ruta: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server.
- NOTA: Si no tenemos la clave Server, la creamos igual que hicimos con las dos anteriores.
- Creamos un valor DWORD y lo llamaremos Enabled, con el valor 0.
Si lo prefieres, puedes hacer tu propio fichero .reg para hacerlo de una manera mucho más rápida, cómoda y desatendida.
1 2 3 4 5 6 7 8 9 |
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0] [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Client] "DisabledByDefault"=dword:00000001 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server] "Enabled"=dword:00000000 |
Deshabilitar RC4 Ciphers
Siguiendo con las recomendaciones de Microsoft, el mejor método para erradicar la vulnerabilidad de RC4 es deshabilitarla. Como alternativa se recomienda utilizar TLS1.2 con AES-GCM.
1 2 3 4 5 6 7 8 9 10 11 12 |
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers] [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 128/128] "Enabled"=dword:00000000 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 40/128] "Enabled"=dword:00000000 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 56/128] "Enabled"=dword:00000000 |
Deshabilitar Diffie-Hellman
Aquí también utilizaremos claves de registro.
1 2 3 4 |
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\KeyExchangeAlgorithms\Diffie-Hellman] "Enabled"=dword:00000000 |
Tras aplicar todos los cambios que necesitemos, debemos reiniciar nuestro servidor web para que se apliquen los cambios. Una vez hecho, podrás repetir el test SSL Server Test pulsando sobre la opción «limpiar caché» en el test para comprobar si ya hemos logrado el grado A de seguridad y privacidad.
Si lo prefieres, puedes consolidar las tres instrucciones para deshabilitar las tres vulnerabilidades de una sola vez, y distribuirla a varios servidores web.