Tras instalar Apache, tanto en las cabeceras de la página:
$ curl -I localhost
HTTP/1.1 200 OK
Date: Sat, 12 Mar 2011 11:55:12 GMT
Server: Apache/2.2.16 (Ubuntu)
Last-Modified: Sat, 02 Jan 2010 00:00:23 GMT
ETag: "aa34-b1-47c232cbc0633"
Accept-Ranges: bytes
Content-Length: 177
Vary: Accept-Encoding
Content-Type: text/html
como en las páginas de error:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
404 Not Found
Not Found
The requested URL /terminus was not found on this server.
Apache/2.2.16 (Ubuntu) Server at localhost Port 80
se muestra la versión de Apache, y de PHP si también lo hemos instalado. Ocultar este tipo de información se conoce como seguridad por oscuridad, por lo que no es realmente seguridad, pero puede ayudar a evitar ataques automatizados.
Modificaremos las directivas ServerTokens
, que por defecto es OS
, y
ServerSignature
, que por defecto es On
. En el fichero
/etc/apache2/cond.d/security
modificamos:
ServerTokens ProductOnly
ServerSignature Off
La directiva ServerTokens
acepta varias opciones:
ServerTokens Prod[uctOnly]
Server sends (e.g.): Server: Apache
ServerTokens Major
Server sends (e.g.): Server: Apache/2
ServerTokens Minor
Server sends (e.g.): Server: Apache/2.0
ServerTokens Min[imal]
Server sends (e.g.): Server: Apache/2.0.41
ServerTokens OS
Server sends (e.g.): Server: Apache/2.0.41 (Unix)
ServerTokens Full (or not specified)
Server sends (e.g.): Server: Apache/2.0.41 (Unix) PHP/4.2.2 MyMod/1.2
Esta directiva también controla la información que proporciona la
directiva ServerSignature
:
Syntax: ServerSignature On|Off|EMail
Para ocultar la cabecera que muestra si tenemos instalado PHP y su
versión editamos el fichero /etc/php5/apache2/php.ini
y mofidificamos
la variable:
expose_php = Off
Sin embargo, después de todo esto, las cabeceras siguen mostrando que es un Apache:
$ curl -I localhost
HTTP/1.1 200 OK
Date: Sat, 12 Mar 2011 12:20:39 GMT
Server: Apache
Last-Modified: Sat, 02 Jan 2010 00:00:23 GMT
ETag: "aa34-b1-47c232cbc0633"
Accept-Ranges: bytes
Content-Length: 177
Vary: Accept-Encoding
Content-Type: text/html
Una opción para evitar que aparezca es compilar Apache. En el
archivo includes/ap_release.h
, deberíamos cambiar:
#define AP_SERVER_BASEVENDOR "Apache Software Foundation"
#define AP_SERVER_BASEPROJECT "Apache HTTP Server"
#define AP_SERVER_BASEPRODUCT "Apache"
Actualizado el 14 de abril de 2012
Otras opciones para modificar la cabecera ServerTokens
o evitar que
aparezca, sin tener que compilar, son:
» utilizar el módulo mod_security
» utilizar Varnish