Este proyecto implementa una infraestructura de servidor web altamente segura y contenerizada. El despliegue integra las mejores prácticas de Hardening y Gestión de Imágenes validadas por la certificación oficial de IBM: Docker Essentials.
A diferencia de un despliegue estándar, este contenedor incluye configuraciones de seguridad de nivel empresarial basadas en estándares de la industria:
- Infraestructura como Código (IaC): Automatización de la configuración del servidor mediante el uso de comandos
seddentro del Dockerfile para habilitar módulos críticos (mod_ssl,mod_rewrite,mod_status) en tiempo de construcción. - Hardening (Seguridad Activa): Implementación de la cabecera
X-Content-Type-Options: nosniffpara mitigar ataques de MIME sniffing. - Cifrado de Extremo a Extremo: Configuración completa de SSL/TLS (HTTPS) en el puerto 443 con certificados gestionados internamente.
- Políticas de Acceso Restringido: Protección del directorio
/privadomediante autenticación básica.Los archivos de credenciales.htpasswdse encuentran aislados del DocumentRoot. - Monitorización de Rendimiento: Activación de
mod_statuspara auditar el estado del servidor y la carga de trabajo en tiempo real.
Certificado autofirmado generado con OpenSSL para asegurar el tráfico en el puerto 443.
El sistema es completamente auditable. Durante la fase de pruebas, se validó la capacidad de respuesta del servidor capturando intentos de intrusión mediante el análisis de logs:
Evidencia de Auditoría (Log de Docker):
[auth_basic:error] [client 172.17.0.1] AH01618: user hacker not found: /privado
Detección de intentos de intrusión mediante el análisis de logs en tiempo real.
Panel de control de estado del servidor activado mediante mod_status.
Para garantizar la reproducibilidad del entorno, ejecute los siguientes comandos:
-
Construir la imagen optimizada:
docker build -t mi-apache-sports . -
Lanzar el contenedor seguro: Se utilizan puertos no privilegiados (8082 para HTTP y 8443 para HTTPS) para demostrar la flexibilidad del mapeo de red de Docker y evitar conflictos con servicios del host.
docker run -d -p 8082:80 -p 8443:443 --name sports-container mi-apache-sports