21 ene. 2015

Fortificación SSL en servidores web Apache

Tener SSL activado en tu sitio web no es siempre sinónimo de seguridad. BEAST, CRIME y Heartbleed nos recuerdan la necesidad de fortificar estas configuraciones para que usar un protocolo cifrado realmente sea efectivo.
En el blog 'Root is the Limit', el cual os recomiendo visitar, se especifican unos sencillos pasos para asegurar SSL tanto en Apache como en IIS, que aquí hemos querido también recopilar.

Eliminar el uso de cifrados obsoletos

En las directivas de configuración del servidor permitiremos el uso de todos los cifrados excepto SSLv2 y SSLv3 con la siguiente directiva:
SSLProtocol All -SSLv2 -SSLv3

CRIME

El ataque CRIME gira en torno a la fuga de información cuando los datos se comprimen antes de ser cifrados. Puedes leer más sobre el ataque aquí.

La forma más sencilla de mitigar este ataque consiste en deshabilitar la compresión SSL:
SSLCompression off 

Cipher Suite

La configuración recomendada por Fundación Mozilla es la siguiente (ten en cuenta esta configuración no es compatible con los navegadores más antiguos, como Internet Explorer 8):
SSLCipherSuite AES256+EECDH:AES256+EDH:!aNULL:!eNULL 
Esto tiene la ventaja de permitir Perfect Forward Secrecy. La EFF detalla la importancia de PFS aquí.

HTTP Strict Transport Security

Esta configuración en el servidor instruye a los agentes de usuario (o navegadores) inyectándoles una cabecera para que sólo hagan conexiones HTTPS al servidor web. OWASP lo detalla aquí.

En primer lugar, tenemos que asegurarnos de que tenemos el módulo headers habilitado. Podemos editar los archivos de configuración del Apache o httpd y añadir:
LoadModule headers_module modules/mod_headers.so 
El último parámetro "modules/mod_headers.so" es la ruta real al archivo mod_headers.so en tu sistema y puede variar. Si lo hace, puedes encontrarlo con:
locate mod_headers.so
Después de esto, podemos volver al archivo conf SSL original que estábamos editando y añadimos:
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains"
El "max-age" es la cantidad de tiempo en segundos para que el agente de usuario continúe solicitando este recurso sólo en HTTPS.

Finalmente reiniciamos Apache y probamos: https://www.ssllabs.com/ssltest.

Fuente: HackPlayers

0 comentarios:

Publicar un comentario

Gracias por dejar un comentario en Segu-Info
Si vas a dejar una consulta, procura tener habilitado tu perfil en Blogger o deja una forma de contacto.

Gracias por comentar!