Ocultando la cabecera Server del servidor Apache
Enero 4, 2009
La instalación de Apache, por defecto muestra en una cabecera llamada "Server" la versión y módulos utilizados por el servidor. Esta cabecera se puede eliminar o en su defecto minimizar la información que nos muestra. En esta pequeña guía aprenderemos a minimizar tal información con unos simples y pequeños pasos.
Versión ubuntu
Nota: La guía sirve igualmente en otras distribuciones o sistemas operativos. Los pasos a seguir son obviamente diferentes, tales como descarga y compilación del Apache.
Primero descargamos la versión más actual del servidor Apache, la cual puede ser consultada en esta página: http://httpd.apache.org/download.cgi
wget http://mirror.atlanticmetro.net/apache/httpd/httpd-2.2.11.tar.gz
Luego de esto, extraemos el contenido del archivo y nos movemos hacía el directorio creado.
tar xf httpd-2.2.11.tar
cd httpd-2.2.11/
Posicionados en la carpeta del servidor y buscamos recursivamente en los archivos en busca de la cadena "form_header_field"
modules/http/http_filters.c:static int form_header_field(header_struct *h,
modules/http/http_filters.c: form_header_field(&h, "Date", proxy_date);
modules/http/http_filters.c: form_header_field(&h, "Server", server);
modules/http/http_filters.c: form_header_field(&h, "Date", date);
modules/http/http_filters.c: form_header_field(&h, "Server", ap_get_server_banner());
modules/http/http_filters.c: form_header_field, (void *) &h, r->headers_in, NULL);
modules/http/http_filters.c: apr_table_do((int (*)(void *, const char *, const char *)) form_header_field,
findstr /s "form_header_field" .\*
Así que el archivo que debemos editar para ocultar la cabecera "Server" es "http_filters.c" que está ubicado en la carpeta ./modules/httpd.
En este momento podemos hacer dos cosas, la primera es ocultar totalmente la cabecera "Server" y la segunda falsificarla.
Abrimos el archivo con cualquier editor
Y localizamos las líneas del form_header_field, en esta versión de Apache(2.2.11), se encuentra la primera desde la línea 914. Editamos esta línea:
Ocultar la cabecera
//Línea 912-915
server = apr_table_get(r->headers_out, "Server");
if (server) {
form_header_field(&h, "Server", server);
}
por
/*server = apr_table_get(r->headers_out, "Server");
if (server) {
form_header_field(&h, "Server", server);
}*/
Y
//Línea 921 form_header_field(&h, "Server", ap_get_server_banner()); por /*form_header_field(&h, "Server", ap_get_server_banner());*/
Lo que estamos haciendo es comentar tales líneas para que cuando el código llegue ahí no se ejecute nada.
Y para falsificarla
//Línea 912-915
server = apr_table_get(r->headers_out, "Server");
if (server) {
form_header_field(&h, "Server", server);
}
por
server = "Microsoft-IIS/7.0";
if (server) {
form_header_field(&h, "Server", server);
}
Y
//Línea 921 form_header_field(&h, "Server", ap_get_server_banner()); por form_header_field(&h, "Server", "Microsoft-IIS/7.0");
Una alternativa a esta opción es aplicar el patch respectivo
Patch No server: Download
Patch Server Microsoft: Download
patch modules/http/http_filters.c noserver.patch ó patch modules/http/http_filters.c servermicrosoft.patch
En este caso, aplique el patch para falsificar la cabecera como un servidor IIS de microsoft.
Ahora seguimos los sencillos pasos de compilar e instalar el servidor.
Primero descargamos el paquete de build-essential para compilar el apache y las dependencias
sudo apt-get build-dep apache2
Y luego a compilar e instalar
./configure --prefix=/usr/local/webserver --enable-mods-shared=all make sudo make install
Luego iniciamos la aplicación en la carpeta que hemos instalado el Apache, por seguridad lo instale en /usr/local/webserver, porque en caso de haber una vulnerabilidad en alguna aplicación PHP, siempre casi son las mismas rutas (/usr/local/apache,/usr/local/apache2).
sudo /usr/local/webserver/bin/apachectl start
Y hacemos una petición a la página principal para observar si ha funcionado el patch.
nc localhost 80 GET / HTTP/1.1 Host: localhost Connection: Close HTTP/1.1 200 OK Date: Sun, 04 Jan 2009 20:57:07 GMT Server: Microsoft-IIS/7.0 Last-Modified: Sat, 20 Nov 2004 20:16:24 GMT ETag: "1bc708-2c-3e9564c23b600" Accept-Ranges: bytes Content-Length: 44 Connection: close Content-Type: text/html It works!
Y como vemos ha funcionado a la perfección.
Tip para minimizar la información y volver mas seguro el servidor
Al igual que el anterior método, podemos minimizar la información sin tener que cambiar el código fuente del Apache, pero sólo si tenemos acceso al archivo de configuración httpd.conf
Primero añadimos una cuenta dedicada al servidor
sudo adduser --system webserver
sudo gedit /usr/local/webserver/conf/httpd.conf
Localizamos las líneas que contienen el siguiente código (Sólo válido para sistemas unix)
User daemon Group daemon
allí cambiamos por el usuario que acabamos de añadir
User webserver Group nogroup
Y agregamos las siguientes líneas
ServerSignature off ServerTokens prod
Archivado en: Seguridad |




wooooow...que cosa tan rara esa!!! , y despues la loca...que rico que tu pagina siga creciendo cada dia :).