HTTPS Apache2 Information Leakage

3

Ciao sicurezza IT!

Ho Apache2 vhost con HTTPS in ascolto sulla porta 443, cioè. https: // securesecret.com.
Ho un altro vhosts con ascolto HTTP sulla porta 80, cioè. http: // one.com, http: // two.com.

Quando ho visitato il sito http: // securesecret.com:443 ho ricevuto questo messaggio:

<!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>

Ci sono informazioni sul dominio. Come posso impedire di mostrarlo?
Dov'è la configurazione appropriata in apache?
Ho disabilitato ServerToken, ServerSignature ecc.

    
posta vizzdoom 21.11.2011 - 23:13
fonte

3 risposte

11

Non puoi nascondere il nome del dominio, perché se qualcuno si connette alla porta 443 del tuo server e inizia ad avviare una connessione SSL, il tuo server risponderà inviando il suo certificato ... che contiene il nome del server.

In realtà, il client può inviare il nome del client desiderato come parte di un Indicazione del nome del server , che è piuttosto recente estensione che non è supportata ovunque (Internet Explorer su Windows XP non lo invierà, richiede IE 8 e Vista o successiva). Il server può in teoria attendere un SNI esplicito prima di inviare il suo certificato; tuttavia, sia l'SNI che il certificato viaggeranno a questo punto in modo non crittografato, quindi il nome del server non può essere considerato veramente segreto. E non è possibile mandare realisticamente un SNI dai client in questo momento (forse tra cinque anni, quando il raccolto attuale di WinXP si è quasi estinto ...).

Inoltre, il nome del server è parte dei dati che il DNS invia a chiunque richieda, su base regolare e senza alcuna crittografia. Un nome server non è sicuramente un segreto.

    
risposta data 21.11.2011 - 23:20
fonte
7

Il messaggio che stai vedendo proviene dall'apache predefinito "400 error page". Puoi ignorare la pagina di errore 400 tramite:

ErrorDocument 400 /error-docs/400.shtml

nella posizione appropriata nel file di configurazione. Sostituisci il testo predefinito con un messaggio generico che non include il nome host.

    
risposta data 23.11.2011 - 19:34
fonte
2

Risposta completa:

Mentre le altre due risposte sono buone, questo è il modo in cui puoi effettivamente risolvere il problema.

Per aggirare i problemi del doppio homing identificato da @bstpierre e @Thomas Pornin puoi utilizzare un indirizzo IP extra e separare le configurazioni di Apache.

È possibile avviare un'istanza Apache separata sull'indirizzo IP sicuro per ospitare il dominio securesecret (sia http che https) e i domini uno e due funzioneranno sull'altra istanza di Apache e sugli indirizzi IP usando solo http.

Ovviamente, potresti avere difficoltà ad ottenere il nuovo indirizzo IP dal tuo provider e il routing e la configurazione del server, ma devi determinare il rapporto costi / benefici per te.

I documenti di configurazione di Apache hanno molte informazioni sugli scenari e sulle opzioni.

Alternativa:

  • Puoi scegliere di servire il contenuto di securesecret dagli altri contenuti ospitando su un'istanza Apache diversa e una porta diversa dal solito. Ad esempio link .
risposta data 27.02.2013 - 23:36
fonte

Leggi altre domande sui tag