Resumen del Incidente
Durante el despliegue del servidor web, me enfrenté a un fallo crítico: el servidor rechazaba las conexiones. Este documento detalla mi proceso desde detecte el fallo y lo arreglé.
🚩 Incidente
Tras el despliegue inicial del rol de servidor web, he detectado que el servidor rechazaba las conexiones en el puerto 80, a pesar de que el servicio Nginx figuraba como activo y el firewall permitía el tráfico entrante.
🕵️ Análisis de Causa Raíz (RCA)
Investigué la configuración, he identificado que la aplicación del principio de “Reducción de la Superficie de Ataque” fue incompleta.
Al eliminar el sitio default de Nginx para mejorar la seguridad, el servicio se quedó sin ninguna directiva listen 80.
Nginx estaba funcionando, pero no tenía instrucciones para aceptar peticiones en ningún puerto específico de la capa de aplicación.
🛡️ Solución Aplicada
Para resolver esto, he diseñado e implementado un sitio endurecido desde cero:
-
He creado una plantilla de la configuración del servidor web (
roles/webserver/templates/hardened_site.conf.j2) para que se aplique en el servidor Nginx y escuche explícitamente en el puerto 80. -
He vinculado este sitio con mis políticas de seguridad globales (
security_hardening.conf) mediante la directivainclude.
server {
listen 80;
server_name localhost;
root /var/www/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
# Integración con mis cabeceras de seguridad globales
include /etc/nginx/conf.d/security_hardening.conf;
}- He automatizado la creación de enlaces simbólicos en
sites-enabled, siguiendo el estándar de administración de sistemas Linux para asegurar una configuración limpia, modular y auditable.
- name: "NGINX: Activar el sitio"
file:
src: /etc/nginx/sites-available/hardened_site
dest: /etc/nginx/sites-enabled/hardened_site
state: link
notify: restart nginx