¿Es segura una reescritura forzada de http a https? ¿Qué añade SSLRequireSSL?

6

He leído consejos contradictorios sobre cómo forzar conexiones https de la siguiente manera:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

A mi parecer, esto no permitiría que nadie pase una solicitud http. ¿Hay algún inconveniente con este enfoque?

¿Qué seguridad añade?

SSLRequireSSL

a la parte <directory /> añadir? Sé que forzará a Apache a rechazar solicitudes que no sean https, pero ¿alguna vez lo lograrán?

O en otras palabras: ¿cuál es la mejor manera de implementar un sitio https-only, si no esta?

No tenemos un certificado EV, ni tenemos una gran base de usuarios. Lo que tenemos es una serie de sitios de encuestas donde queremos que http sea imposible.

    
pregunta markus-tharkun 19.10.2012 - 00:48
fuente

3 respuestas

7
  

¿Cuál es la mejor manera de implementar un sitio https-only, si no esta?

Use un servidor virtual separado para el HTTP, no vinculado a ninguno de los recursos del sitio HTTPS "real".

Para garantizar que los navegadores modernos se nieguen a usar HTTP simple para su sitio en el futuro, use el Encabezado de Seguridad de Transporte Estricto >.

por ejemplo.

<VirtualHost *:80>
    ServerName www.example.com
    Redirect permanent / https://www.example.com/
</VirtualHost>

<VirtualHost *:443>
    ServerName www.example.com
    SSLEngine on
    Header set Strict-Transport-Security "max-age=8640000;includeSubdomains"
    ...site settings...
</VirtualHost>
  

¿Qué agrega SSLRequireSSL?

Puede ser útil proteger recursos particulares si estás en un host virtual con SSLEngine optional , o en una configuración incluida compartida por un host virtual HTTP y HTTPS.

    
respondido por el bobince 19.10.2012 - 13:41
fuente
4

Como decía en esta respuesta en Webmasters.SE, la única solución general para este problema es proporcione a sus usuarios la dirección https:// solamente y asegúrese de que esperan que la usen solo. En última instancia, es responsabilidad del usuario verificar que esté utilizando SSL / TLS, como esperan.

Una forma de intentar imponer esto automáticamente es alentar a los usuarios a utilizar un navegador que admita Seguridad de transporte estricta de HTTP (de nuevo, hasta que todos los navegadores lo admitan, esto requiere que el usuario lo sepa).

Otras formas de actualizaciones forzadas por el servidor (incluido el cierre del puerto HTTP simple) serán vulnerables a los ataques MITM. Dicho esto:

  • Las redirecciones forzadas de http:// a https:// protegerán al usuario contra ataques pasivos. También puede ayudar a que el usuario se dé cuenta del problema (es decir, si se conectan desde una red en la que pueden confiar, se acostumbrarán a él y es posible que resulte extraño no ver https:// en otras redes). Por esas razones, vale la pena hacerlo de todos modos; Al menos estás mitigando el riesgo.
  • Sería ideal incluir más sitios en la lista HSTS precargada , por lo que como para no ser vulnerable, incluso en la primera conexión. Sin embargo, al usar HSTS, una conexión en una red de confianza una vez con la configuración de ese navegador debería ser suficiente para que los navegadores sigan usando HTTPS para ese sitio.

Una vez hecho esto, aún debe indicar a los usuarios que no ignoren las advertencias de los certificados.

(Siempre es mejor combinar todo esto con cookies seguras, si se usan cookies).

    
respondido por el Bruno 19.10.2012 - 17:02
fuente
3

La redirección de http no es tan segura como simplemente negar el acceso a través de http.

Las personas que usan la dirección HTTP seguirán siendo vulnerables a un MITM activo. Puedo interceptar la redirección a HTTPS y modificarla. Podría mantenerlos en HTTP o podría redirigir a mi propio sitio HTTPS (para que coincida con el "candado" que se muestra cuando no estoy interceptando). Puedo usar un nombre de dominio que se parezca mucho al suyo, o alguna alternativa plausible.

Es cierto que mi ataque sería más fácil de detectar para los usuarios si usas un certificado EV. Pero si valió la pena pagar por un certificado de EV, es probable que tenga altos requisitos de seguridad y una gran base de usuarios, por lo que aún debería estar deshabilitando el acceso HTTP para poder ofrecer una defensa profunda.     

respondido por el sourcejedi 19.10.2012 - 11:32
fuente

Lea otras preguntas en las etiquetas