
Proyecto CY376 Blue Team — DMZ de pfSense, Suricata IDS/IPS y endurecimiento automatizado de hosts contra CVE-2014-6271
CY376: Monitoreo de redes, seguridad y auditoría — Proyecto de fin de semestre Blue Team | Universidad de Minas y Tecnología, Tarkwa
Autor: Kennedy Kumi Holomah Número de índice: FCM.41.018.148.23 ID de estudiante: 9013004623
Este proyecto construye, asegura y monitorea una zona desmilitarizada (DMZ) que aloja un servidor web Ubuntu/Apache de cara al público detrás de un firewall pfSense, íntegramente dentro de un laboratorio aislado de VMware Workstation. Se desarrolló como ejercicio de Blue Team para CY376 (Monitoreo de redes, seguridad y auditoría) en la Universidad de Minas y Tecnología, Tarkwa, y demuestra un ciclo de vida defensivo completo en lugar de un control aislado: un límite de red segmentado, detección en línea en ese límite, un intento real de explotación contra una CVE específica, remediación automatizada y revalidación de que la corrección realmente cerró la brecha.
El proyecto empareja deliberadamente cada capa defensiva con evidencia en lugar de solo una captura de configuración: se muestra la detección de Suricata interceptando un intento real de explotación de Shellshock en tiempo real, se muestra el mismo payload fallando por completo después de aplicar el endurecimiento, y los problemas de infraestructura no evidentes encontrados en el camino (los ajustes de descarga de hardware que bloquean silenciosamente la captura de paquetes, el alcance predeterminado de HOME_NET que rompe silenciosamente las firmas direccionales, el bloqueo de permisos del propio script de endurecimiento que rompe el servidor que debía proteger) se documentan como hallazgos por derecho propio, no se editan.
HOME_NETscripts/dmz_web_hardening.sh) parchea Bash, desactiva el manejador CGI del que depende Shellshock, restringe SSH a la LAN, habilita un firewall de host (UFW) y fail2ban, y bloquea los permisos de la raíz web.Informe completo, capturas de evidencia y análisis: docs/CY376_DMZ_Report_Kennedy_Kumi_Holomah.pdf.
| Host | Rol | Interfaz / VMnet | Dirección IP |
|---|---|---|---|
| pfSense | Firewall / enrutador | WAN (em0) | 192.168.248.138 (DHCP, NAT) |
| pfSense | Firewall / enrutador | LAN (em2) | 192.168.20.1/24 |
| pfSense | Firewall / enrutador | DMZ (em1) | 192.168.10.1/24 |
| Kali Linux | Host atacante | VMnet4 (LAN) | 192.168.20.102 |
| Cliente LAN | Host LAN general | VMnet4 (LAN) | 192.168.20.100 |
| Servidor web DMZ | Objetivo / activo protegido | VMnet3 (DMZ) | 192.168.10.10 |
| Administrador Wazuh | Plataforma SIEM / registros | VMnet4 (LAN) | 192.168.20.103 |
Todo el tráfico entre segmentos pasa exclusivamente a través de pfSense; ninguna ruta evita el firewall.
.
├── README.md
├── .gitignore
├── scripts/
│ └── dmz_web_hardening.sh # Host hardening script for the DMZ web server
├── docs/
│ └── CY376_DMZ_Report_Kennedy_Kumi_Holomah.pdf # Full project report
└── evidence/
└── figure01_lab_topology.png ... figure11_wazuh_dashboard.png
# The 11 captioned screenshots from the report, numbered to match
# the figure numbers used throughout docs/CY376_DMZ_Report_*.pdf
scripts/dmz_web_hardening.sh está dirigido al host Ubuntu/Apache de la DMZ. Está diseñado para poder re-ejecutarse con seguridad: cada archivo de configuración que toca se respalda primero (sufijo .bak-YYYYmmdd-HHMMSS), y todas las acciones se registran en un archivo con marca de tiempo bajo /var/log.
# On the DMZ web server
sudo bash scripts/dmz_web_hardening.sh
Antes de ejecutarlo, revise la sección CONFIG al inicio del script (subred LAN, puertos HTTP/HTTPS) para ajustarla a su propia topología.
Qué hace:
mod_cgi/mod_cgid (eliminando por completo la superficie de ataque de Shellshock) y bloquea la propiedad/permisos de la raíz web.Al final se imprime un resumen de finalización, y los detalles completos de cada paso están en el informe.
| Prueba | Antes del endurecimiento | Después del endurecimiento |
|---|---|---|
| Intento de explotación de Shellshock | Payload aceptado; alerta de Suricata disparada (SID 2022028) | HTTP 404 — manejador CGI eliminado |
| SSH desde la LAN (Kali) | Disponible, sin restricciones | Disponible, restringido a 192.168.20.0/24 |
| Acceso a la raíz web | Servía contenido predeterminado | Brevemente 403 durante el endurecimiento, luego restaurado |
| Regla de drop personalizada de Suricata | N/A | Bloqueo activo confirmado al coincidir |
Consulte la Sección 6 (Análisis y recomendaciones) del informe para la discusión completa.