Guía Práctica: Hardening de Servidores Nginx
Una guía paso a paso con configuraciones esenciales para fortificar tu servidor web Nginx contra ataques comunes.
1. Ocultar la Versión de Nginx
Por defecto, Nginx revela su número de versión en las cabeceras de respuesta HTTP. Esto puede dar
información valiosa a un atacante sobre posibles vulnerabilidades. Para deshabilitarlo, edita tu
fichero nginx.conf y descomenta o añade la siguiente línea dentro del bloque http:
server_tokens off;
Esto eliminará el número de versión de las páginas de error y de las cabeceras de respuesta.
2. Prevenir Ataques de Clickjacking
El clickjacking es una técnica maliciosa para engañar a un usuario y hacerle click en algo diferente a lo
que percibe. Podemos mitigarlo añadiendo la cabecera X-Frame-Options, que indica al
navegador si debe permitir que la página se cargue en un <frame>,
<iframe>, <embed> u <object>.
Añade la siguiente línea en el bloque http o server de tu configuración:
add_header X-Frame-Options "SAMEORIGIN";
Esto permite que la página solo sea embebida en iframes del mismo origen. Usa "DENY" para bloquearlo completamente.
3. Habilitar la Protección XSS
Los navegadores modernos tienen filtros para ataques de Cross-Site Scripting (XSS). Nos aseguraremos de que estén activados. Añade esta cabecera:
add_header X-XSS-Protection "1; mode=block";
4. Configurar Buffers para Mitigar DoS
Limitar el tamaño de los buffers puede ayudar a mitigar ataques de denegación de servicio (DoS) que
intentan agotar la memoria del servidor. Ajusta estos valores en tu bloque http según las
necesidades de tu aplicación:
client_body_buffer_size 1K;
client_header_buffer_size 1k;
client_max_body_size 1k;
large_client_header_buffers 2 1k;
Estos valores son restrictivos. Si tu aplicación necesita subir ficheros grandes, deberás ajustar client_max_body_size.
5. Deshabilitar Métodos HTTP Inseguros
La mayoría de las aplicaciones solo necesitan los métodos GET, POST, y
HEAD. Limitar los métodos permitidos reduce la superficie de ataque. Añade esta condición
dentro de tu bloque server:
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
return 405;
}
Esto devolverá un error 405 (Method Not Allowed) para cualquier otro método como DELETE,
TRACE, etc.
Conclusión: El hardening es un proceso continuo, no una configuración única. Estas medidas son un excelente punto de partida para construir una defensa robusta. En Aegis Tech, integramos estas prácticas y muchas más en nuestras auditorías de seguridad.
Solicitar una Auditoría