E' possibile tramite la modifica e la compilazione dei sorgenti oppure tramite una direttiva nascondere la versione di Apache rendendo difficoltose le operazioni di scouting delle informazioni.
Innanzitutto occorre avere a disposizione i sorgenti (sono disponibili sul sito ufficiale) e modificare poche variabili nel file src/include/httpd.h
contenuto nella directory generale di apache.
Si può impostare la versione di Apache visualizzata cambiando il valore della seguente variabile:
#define SERVER_BASEREVISION "1.3.27"
Esempio: #define SERVER_BASEREVISION "1.0"
Questa operazione richiede l'opzione --force
quando si lancia la compilazione di mod_ssl per evitare il check della versione di Apache.
Inoltre a livello di configurazione in httpd.conf si possono modificare i contenuti degli header di Apache con la direttiva: ServerTokens . Esempio:
ServerTokens Prod
Le opzioni dispobili sono le seguenti:
- Prod
: Mostra il valore della variabile SERVER_BASEPRODUCT settata con il valore Apache.
Contenuto Header Server: Apache
- Min
: Mostra il software vendor e la versione di Apache.
Contenuto Header Server: Apache/1.3.0
- OS
: Oltre alle informazioni riguardnti alla versione aggiunge informazioni sul sistema operativo.
Contenuto Header Server: Apache/1.3.0 (Unix)
- Full
(Impostazione di default): Vengono inviate tutte le informazioni possibili riguardanti alla versione, hai moduli installati e del sistema operativo.
Contenuto Header Server: Apache/1.3.0 (Unix) PHP/3.0 MyMod/1.2
La soluzione più idonea è l'uso di entrambe poichè la seconda possibilità nasconde la versione solo all'interno dei vari header inviati dal server e non ad esempio nelle pagine di errore create on-the-fly.
Infatti basta una semplice get irregolare o qualsiasi cosa che generi un errore per verificare la versione di un Apache server che usa la direttiva ServerTokens.
[root@dido include]# telnet 0 80
Trying 0.0.0.0...
Connected to 0.
Escape character is '^]'.
get /
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>501 Method Not Implemented</TITLE>
</HEAD><BODY>
<H1>Method Not Implemented</H1>
get to /index.htm not supported.<P>
Invalid method in request get /<P>
<HR>
<ADDRESS>Apache/1.3.27 Server at localhost.localdomain Port 80</ADDRESS>
</BODY></HTML>
Connection closed by foreign host.
Breve rassegna della security history, problematiche attuali. Security e siti dinamici.