Este proyecto despliega un servidor web Apache HTTPS seguro utilizando Docker y Docker Compose. Incluye automatización completa mediante scripts en Bash para la generación de certificados TLS/SSL autofirmados, resolución local de DNS y un firewall dinámico basado en iptables diseñado para proteger los contenedores.
Es un entorno ideal para pruebas de concepto (PoC), laboratorios de ciberseguridad y desarrollo web seguro.
- Servidor Web Apache 2.4: Configurado con Virtual Hosts y redirección automática de HTTP a HTTPS.
- PHP 8.2-FPM: Backend separado en su propio contenedor para un mejor rendimiento y aislamiento.
- Certificados TLS Automatizados: Generación automática de llaves RSA de 2048 bits con soporte para Subject Alternative Name (SAN).
- Gestión de DNS Local: Script para modificar temporalmente
/etc/hostsy resolver dominios personalizados de forma local. - Firewall Dinámico (iptables): Script automatizado que detecta la interfaz de red activa y aplica reglas de limitación de tasa (Anti-DDoS básico), loopback, ICMP, SSH, puerto 80 (HTTP) y puerto 443 (HTTPS) para bloqueos y gestión de conexiones concurrentes para la cadena
DOCKER-USER.
Para ejecutar este proyecto, tu máquina anfitriona debe cumplir con lo siguiente:
- Sistema Operativo: Distribución basada en Linux (Ubuntu, Debian, Kali Linux, etc.).
- Herramientas:
dockery el plugindocker compose(v2). - Permisos: Privilegios de administrador (
sudo) para ejecutar los scripts de red y firewall. - Puertos libres: Los puertos
80(HTTP) y443(HTTPS) de tu máquina física no deben estar ocupados por otros servicios.
Sigue este orden estricto para levantar el entorno de forma segura.
Este script creará los certificados autofirmados .crt y .pem en la carpeta certs/.
bash scripts/1ro-certs-TLS.sh
Temporalmente en el archivo /etc/hosts.
sudo bash scripts/2do-setup-dns.sh
Se carga antes las reglas de iptables antes de levantar los servicios web. El script detectará la interfaz de red automáticamente.
sudo bash scripts/3ro-iptables-docker-start-stop.sh start
Con estos scripts ejecutandose se procede a construir y levantar los contenedores en segundo plano.
docker compose up -d --build
Abre tu navegador web y comprueba las dos paginas web:
git clone [https://github.com/JulioVaLe546/docker-apache-https-server.git](https://github.com/JulioVaLe546/docker-apache-https-server.git)
cd docker-apache-https-server