Cuando un servidor Apache no está correctamente configurado, puede revelar información técnica sensible (versión del software y sistema operativo) a través de simples páginas de error. Este artículo analiza por qué esta exposición constituye un riesgo de seguridad, facilitando la fase de reconocimiento a posibles atacantes, y ofrece una guía práctica para eliminarla mediante las directivas ServerTokens y ServerSignature, una medida básica pero fundamental de hardening.

Reconocimiento de vulnerabilidades: cómo un simple error 404 puede comprometer tu servidor

Un principio fundamental en la seguridad de aplicaciones y servidores es la reducción de la superficie de exposición. En el contexto de un servidor web, esto implica minimizar la información que la propia infraestructura revela sobre sí misma a clientes no autorizados o potenciales atacantes. Un servidor Apache mal configurado en un entorno de producción puede, de forma predeterminada, filtrar detalles críticos sobre su composición interna.

Para ilustrar este riesgo, consideremos una solicitud HTTP deliberadamente errónea, como el intento de acceso a un recurso inexistente en el servidor. En una configuración por defecto, Apache genera una página de error automática. Al inspeccionar dicha respuesta, ya sea directamente en el navegador o mediante una herramienta de depuración como curl, podemos observar una cantidad de información sensible:

Not Found
The requested URL was not found on this server.
Apache/2.4.52 (Ubuntu) Server at proyectoa.com Port 443

Como se evidencia en la traza de respuesta, el servidor no se limita a indicar la naturaleza del error (404 Not Found). Por el contrario, divulga de manera proactiva su huella digital tecnológica:

  1. Software de servidor: Apache
  2. Versión exacta del software: 2.4.52
  3. Sistema Operativo y posible distribución: Ubuntu
  4. Información de la plataforma de alojamiento: Dominio (proyectoa.com) y puerto (443).

Desde una perspectiva de seguridad, esta conducta es equiparable a proporcionar a un adversario un «regalo» de inteligencia. Un atacante que realice un simple escaneo de reconocimiento puede obtener, sin ningún esfuerzo, el vector tecnológico completo del servidor. Con esta información, puede consultar bases de datos públicas de vulnerabilidades (como CVE – Common Vulnerabilities and Exposures) específicas para Apache 2.4.52 en un entorno Ubuntu. Esto le permite enfocar su ataque con precisión quirúrgica, buscando exploits conocidos que sean efectivos contra esa versión y configuración concretas, en lugar de operar a ciegas.

Por lo tanto, la eliminación de esta firma digital del servidor constituye una capa de defensa esencial. Se trata de una práctica de «seguridad por oscuridad» básica y legítima que, sin ser una protección infalible, dificulta significativamente la fase de reconocimiento del atacante y eleva el coste de sus operaciones.

Configurando la privacidad de tu servidor: entiendo ServerTokens y ServerSignature

Una vez comprendido el riesgo que supone exponer la versión y el sistema operativo de nuestro servidor, procedemos a aplicar las medidas correctivas necesarias. Apache proporciona dos directivas específicas en su archivo de configuración para controlar la información que divulga: ServerTokens ServerSignature.

La directiva ServerTokens determina el contenido de la cabecera HTTP Server que Apache envía en cada respuesta. Su valor puede ajustarse para mostrar más o menos información. Las opciones más relevantes son:

ValorCabecera resultanteNivel de información
FullServer: Apache/2.4.52 (Ubuntu)Máximo: versión completa y sistema operativo (valor por defecto)
OSServer: Apache/2.4.52 (Unix)Versión completa y plataforma genérica
MinorServer: Apache/2.4Solo versión mayor y menor
MajorServer: Apache/2Solo versión mayor
ProdServer: ApacheMínimo: solo el nombre del producto

Recomendación de seguridad: establecer ServerTokens Prod para limitar la información únicamente al nombre del servidor.

En cuanto a la directiva ServerSignature, controla la presencia de una línea de pie de página en las páginas de error generadas automáticamente por Apache (como los errores 404, 403 o 500), así como en cualquier documento generado por el servidor, como las listas de directorios.

ValorComportamiento
OnAñade una línea con el nombre del servidor y la versión al pie de las páginas generadas
OffSuprime completamente la línea de firma
EmailSimilar a On, pero añade un enlace «mailto:» al ServerAdmin

Recomendación de seguridad: establecer ServerSignature Off para eliminar cualquier información contextual en las páginas de error.

Cómo ocultar la versión de Apache en Linux

Para aplicar estas dos directivas en un servidor web Apache sobre Linux, en distribuciones Linux basadas en Debian/Ubuntu, el archivo principal de configuración de Apache se encuentra en:

/etc/apache2/apache2.conf

En distribuciones Red Hat/CentOS/Fedora, la ruta habitual es:

/etc/httpd/conf/httpd.conf

Accedemos al archivo con un editor de texto utilizando privilegios de superusuario:

sudo nano /etc/apache2/apache2.conf

Buscamos las líneas existentes de ServerTokens y ServerSignature. Si no existen, las añadimos al final del archivo. Si existen, modificamos sus valores según las recomendaciones de seguridad:

ServerTokens Prod

ServerSignature Off

Una vez añadidas estas dos líneas, en nano, para guardar los cambios pulsaremos en Control + O y para cerrar la edición Control + X.

Antes de aplicar los cambios en Apache, es recomendable verificar que no existen errores sintácticos en la configuración, podemos hacerlo con el siguiente comando:

sudo apachectl configtest

Para que los cambios surtan efecto, es necesario recargar o reiniciar el servicio:

sudo systemctl restart apache2

O alternativamente, si se prefiere una recarga sin interrumpir conexiones activas:

sudo systemctl reload apache2