Eliminar la información que el servidor da sobre sí mismo


Esta actividad práctica corresponde a este tema.

A la hora de hacer que el servidor no de información sobre sí mismo a los clientes, debemos actuar sobre las siguientes directivas de apache2.conf, añadiéndolas si no existiesen en el mismo:
  • ServerTokens: Directiva cuyo valor recomendado es “Prod”, al ser la opción que menos información da, y se aplica a todas las webs del servidor. Identifica la información que Apache envía sobre sí mismo a los clientes en las peticiones. Los posibles valores y la información que muestran son:
    • ServerTokens Prod[uctOnly]: “Server: Apache
    • ServerTokens Major: “Server: Apache/2
    • ServerTokens Minor: “Server: Apache/2.0
    • ServerTokens Min[imal]: “Server: Apache/2.2.15
    • ServerTokens OS: “Server: Apache/2.2.15 (Unix)
    • ServerTokens Full (o sin especificar): Muestra lo mismo que OS e información de todos los módulos relevantes instalados. Ej.: “Server:Apache/2.2.15 (Unix) PHP/4.2.2 MiMod/1.2

Directiva ServerTokens

  • —ServerSignature: Se recomienda poner en “Off
    • On” añade una línea con el nombre de servidor, versión, el host virtual que envía la página y el email puesto en la configuración de Apache
    • Esto se añadiría a los documentos generados por el servidor (mensajes de error, salidas, …), pero no es conveniente debido a que la mejor política es la de menos información -> mejor
    • Puede ser útil si el servidor pasa por una cadena de proxys y se quiere saber el origen de cada documento que llega al cliente
Directiva ServerSignature

Para probar el funcionamiento de estas opciones, podemos hacer las siguientes operaciones en el orden indicado:
  • Instalar Paros Proxy en la máquina cliente XP para poder observar las peticiones.
  • Configurar el Paros Proxy para que el navegador lo use, haciendo que el navegador escogido para hacer las pruebas se conecte a través de un proxy alojado en el puerto 8080 de la máquina local (localhost).
  • Arrancar Paros y hacer una petición a una página cualquiera de la web de pruebas. Hecho esto conviene observar las cabeceras de respuesta del servidor seleccionando un archivo de los devueltos. Debería aparecer algo como esto:

HTTP/1.1 200 OK

Date: Mon, 22 Sep 2008 21:13:55 GMT

Server: Apache/2.2.8 (Ubuntu)

Last-Modified: Wed, 30 Apr 2008 07:54:02 GMT

ETag: "662e4-147d-44c1273c11a80"

Accept-Ranges: bytes

Content-Length: 5245

Content-Type: text/css


  • Vemos así que Apache está devolviendo demasiada información (SSOO, tipo de servidor y versión concreta). Para evitarlo basta con modificar el apache2.conf con la configuración recomendada.
  • Reiniciamos posteriormente Apache para que vuelva a leer la configuración de sus ficheros con sudo /etc/init.d/apache2 force-reload
  • El resultado de hacer este cambio debería ser el siguiente:

HTTP/1.1 200 OK

Date: Mon, 22 Sep 2008 21:20:41 GMT

Server: Apache

Last-Modified: Wed, 30 Apr 2008 07:54:02 GMT

ETag: "662e4-147d-44c1273c11a80"

Accept-Ranges: bytes

Content-Length: 5245

Content-Type: text/css


Y de esta forma no se podrá obtener tan fácilmente el tipo de SSOO y la versión de Apache que está instalada. No obstante, sí que es posible averiguar esta información con herramientas más sofisticadas como Nessus o nmap, asi que esto no es una protección fiable. Lo verdaderamente fiable es mantener el servidor y SSOO actualizados y una buena política de seguridad en general.
Last modified: Thursday, 19 August 2010, 4:51 PM