Fuga de información de HTTPS Apache2

3

¡Hola, Seguridad de TI!

Tengo Apache2 vhost con HTTPS escuchando en el puerto 443, es decir. https: // securesecret.com.
Tengo otros vhosts con HTTP escuchando en el puerto 80, es decir. http: // one.com, http: // two.com.

Cuando visité el sitio web http: // securesecret.com:443 recibí este mensaje:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
Reason: You're speaking plain HTTP to an SSL-enabled server port.<br />
Instead use the HTTPS scheme to access this URL, please.<br />
<blockquote>Hint: <a href="https://securesecret.com/"><b>https://securesecret.com/</b></a></blockquote></p>
</body></html>

Hay información sobre el dominio. ¿Cómo puedo evitar mostrarlo?
¿Dónde está la configuración apropiada en apache?
He deshabilitado ServerToken, ServerSignature etc.

    
pregunta vizzdoom 21.11.2011 - 23:13
fuente

3 respuestas

11

Realmente no puede ocultar el nombre de dominio, porque si alguien se conecta al puerto 443 de su servidor y comienza a iniciar una conexión SSL, su servidor responderá enviando su certificado ... que contiene el nombre del servidor.

En realidad, el cliente puede enviar el nombre del cliente deseado como parte de una Indicación del nombre del servidor , que es bastante reciente extensión que no se admite en todas partes (Internet Explorer en Windows XP no lo enviará, requiere IE 8 y Vista o posterior). El servidor puede esperar teóricamente un SNI explícito antes de enviar su certificado; sin embargo, tanto el SNI como el certificado viajarán sin cifrar en este punto, por lo que el nombre del servidor no se puede considerar como realmente secreto. Y no se puede exigir de manera realista un SNI a los clientes en este momento (tal vez en cinco años, cuando la cosecha actual de WinXP se ha extinguido en su mayor parte ...).

Además, el nombre del servidor es parte de los datos que el DNS envía a quien lo solicita, de forma regular y sin ningún cifrado. Un nombre de servidor definitivamente no es un secreto.

    
respondido por el Thomas Pornin 21.11.2011 - 23:20
fuente
7

El mensaje que está viendo proviene de la "página de error 400" de apache predeterminada. Puede anular la página de error 400 a través de:

ErrorDocument 400 /error-docs/400.shtml

en la ubicación apropiada en su archivo de configuración. Reemplace el texto predeterminado con un mensaje genérico que no incluya el nombre de host.

    
respondido por el bstpierre 23.11.2011 - 19:34
fuente
2

Respuesta completa:

Si bien las otras dos respuestas son buenas, esta es la forma en que realmente puedes resolver el problema.

Para solucionar los problemas de doble referencia identificados por @bstpierre y @Thomas Pornin puede usar una dirección IP adicional y configuraciones de Apache separadas.

Puede iniciar una instancia de Apache separada en la dirección IP segura para hospedar el dominio de seguridad segura (tanto http como https) y los uno y dos dominios operarán en la otra instancia de Apache y las direcciones IP solo usando http.

Por supuesto, es posible que tenga dificultades para obtener la nueva dirección IP de su proveedor y para enrutar y configurar su servidor, pero necesita determinar el costo / beneficio para usted.

Los documentos de configuración de Apache tienen mucha información sobre los escenarios y las opciones.

Alternativa:

  • Puede elegir servir el contenido seguro de otro contenido alojándolo en una instancia de Apache diferente y en un puerto diferente al habitual. es decir, enlace .
respondido por el Andrew Russell 27.02.2013 - 23:36
fuente

Lea otras preguntas en las etiquetas