Laboratorio 08 – Seguridad en Redes
Contexto empresarial
La empresa Networking SecOps ha implementado su infraestructura de red con servicios DNS, DHCP y NAT (Laboratorio 07). Ahora el equipo de seguridad ha identificado la necesidad de proteger la red contra amenazas internas y externas.
El CISO (Chief Information Security Officer) ha solicitado implementar las siguientes medidas:
- Firewall para controlar el tráfico entrante y saliente.
- ACLs para restringir acceso a servicios administrativos.
- DMZ para aislar servidores públicos.
- Cifrado TLS para proteger comunicaciones web.
- SSH para acceso seguro a dispositivos.
Problema inicial
- No hay control de tráfico entre redes (todo el tráfico es permitido).
- Los servicios administrativos (SSH) están expuestos a toda la red.
- No hay segmentación para servidores públicos.
- Las comunicaciones internas no están cifradas.
- No hay políticas de seguridad definidas.
Objetivos del laboratorio
- Comprender los principios de la tríada CIA (Confidencialidad, Integridad, Disponibilidad).
- Implementar un firewall con
iptablespara filtrar tráfico. - Configurar ACLs en el router para restringir accesos.
- Diseñar una DMZ para aislar servidores públicos.
- Configurar SSH para acceso seguro.
- Implementar TLS para cifrar comunicaciones web.
Herramientas necesarias
- Linux con privilegios de superusuario.
- Comandos:
ip,ping,iptables,nft(opcional). opensslpara generar certificados TLS.sshpara acceso remoto seguro.
Topología
La topología extiende la del laboratorio 07 agregando una DMZ y medidas de seguridad.
Direccionamiento:
| Dispositivo | Interfaz | Dirección IP | Zona |
|---|---|---|---|
| Firewall | eth0 (WAN) | 192.168.100.1/24 | Externa |
| Firewall | eth1 (DMZ) | 10.0.99.1/24 | DMZ |
| Firewall | eth2 (LAN) | 10.0.0.254/24 | Interna |
| R1 (Sede) | eth0 (LAN) | 10.0.0.1/24 | Interna |
| R1 (Sede) | eth1 (R1-R2) | 192.168.1.1/30 | Interna |
| R2 (Sucursal A) | eth0 (LAN) | 10.0.1.1/24 | Interna |
| R3 (Sucursal B) | eth0 (LAN) | 10.0.2.1/24 | Interna |
| Servidor Web | - | 10.0.99.10/24 | DMZ |
| Servidor DNS | - | 10.0.99.5/24 | DMZ |
| Cliente Interno | - | 10.0.0.10/24 | Interna |
| Servidor Interno | - | 10.0.0.20/24 | Interna |
Construcción de la red
Paso 1: Verificar infraestructura existente
Asegurémonos de que el laboratorio 07 está funcionando:
# Verificar namespaces
sudo ip netns list
# Verificar servicios DNS y DHCP
sudo ip netns exec clienteDHCP ping -c 2 8.8.8.8
Paso 2: Crear namespaces para firewall y DMZ
# Firewall
sudo ip netns add firewall
# Servidores DMZ
sudo ip netns add servidorWeb
sudo ip netns add servidorDNS_PUB
# Servidor Interno
sudo ip netns add servidorInterno
Paso 3: Conectar firewall a las zonas
# WAN (Internet)
sudo ip link add veth-fw-wan type veth peer name veth-wan-fw
sudo ip link set veth-fw-wan netns firewall
sudo ip netns exec firewall ip addr add 192.168.100.1/24 dev veth-fw-wan
sudo ip netns exec firewall ip link set veth-fw-wan up
sudo ip addr add 192.168.100.2/24 dev veth-wan-fw
sudo ip link set veth-wan-fw up
# DMZ
sudo ip link add veth-fw-dmz type veth peer name veth-dmz-fw
sudo ip link set veth-fw-dmz netns firewall
sudo ip netns exec firewall ip addr add 10.0.99.1/24 dev veth-fw-dmz
sudo ip netns exec firewall ip link set veth-fw-dmz up
sudo ip link set veth-dmz-fw netns servidorWeb
sudo ip netns exec servidorWeb ip addr add 10.0.99.10/24 dev veth-dmz-fw
sudo ip netns exec servidorWeb ip link set veth-dmz-fw up
sudo ip netns exec servidorWeb ip route add default via 10.0.99.1
# Servidor DNS en DMZ
sudo ip link add veth-fw-dns type veth peer name veth-dns-fw
sudo ip link set veth-fw-dns netns firewall
sudo ip netns exec firewall ip addr add 10.0.99.5/24 dev veth-fw-dns
sudo ip netns exec firewall ip link set veth-fw-dns up
sudo ip link set veth-dns-fw netns servidorDNS_PUB
sudo ip netns exec servidorDNS_PUB ip addr add 10.0.99.5/24 dev veth-dns-fw
sudo ip netns exec servidorDNS_PUB ip link set veth-dns-fw up
sudo ip netns exec servidorDNS_PUB ip route add default via 10.0.99.1
# LAN Interna
sudo ip link add veth-fw-lan type veth peer name veth-lan-fw
sudo ip link set veth-fw-lan netns firewall
sudo ip netns exec firewall ip addr add 10.0.0.254/24 dev veth-fw-lan
sudo ip netns exec firewall ip link set veth-fw-lan up
sudo ip link set veth-lan-fw netns R1
sudo ip netns exec R1 ip addr add 10.0.0.1/24 dev veth-lan-fw
sudo ip netns exec R1 ip link set veth-lan-fw up
Paso 4: Configurar cliente y servidor interno
# Cliente Interno (usando clienteSede del laboratorio anterior)
sudo ip netns exec clienteSede ip addr add 10.0.0.10/24 dev veth-cli 2>/dev/null || true
sudo ip netns exec clienteSede ip link set veth-cli up 2>/dev/null || true
sudo ip netns exec clienteSede ip route add default via 10.0.0.1 2>/dev/null || true
# Servidor Interno
sudo ip link add veth-srv type veth peer name veth-r1srv
sudo ip link set veth-srv netns servidorInterno
sudo ip link set veth-r1srv netns R1
sudo ip netns exec servidorInterno ip addr add 10.0.0.20/24 dev veth-srv
sudo ip netns exec servidorInterno ip link set veth-srv up
sudo ip netns exec servidorInterno ip route add default via 10.0.0.1
Paso 5: Configurar rutas en el firewall
# Habilitar forwarding
sudo ip netns exec firewall sysctl -w net.ipv4.ip_forward=1
# Ruta hacia la red interna
sudo ip netns exec firewall ip route add 10.0.0.0/24 via 10.0.0.1
sudo ip netns exec firewall ip route add 10.0.1.0/24 via 10.0.0.1
sudo ip netns exec firewall ip route add 10.0.2.0/24 via 10.0.0.1
Paso 6: Configurar reglas de firewall (iptables)
Política por defecto: Denegar todo
# Establecer políticas por defecto
sudo ip netns exec firewall iptables -P INPUT DROP
sudo ip netns exec firewall iptables -P FORWARD DROP
sudo ip netns exec firewall iptables -P OUTPUT ACCEPT
# Permitir tráfico de loopback
sudo ip netns exec firewall iptables -A INPUT -i lo -j ACCEPT
# Permitir conexiones establecidas y relacionadas
sudo ip netns exec firewall iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo ip netns exec firewall iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
Reglas desde Internet hacia DMZ (servidores públicos):
# Servidor Web (puerto 80 y 443)
sudo ip netns exec firewall iptables -A FORWARD -i veth-fw-wan -o veth-fw-dmz -p tcp -d 10.0.99.10 --dport 80 -j ACCEPT
sudo ip netns exec firewall iptables -A FORWARD -i veth-fw-wan -o veth-fw-dmz -p tcp -d 10.0.99.10 --dport 443 -j ACCEPT
# Servidor DNS (puerto 53 UDP)
sudo ip netns exec firewall iptables -A FORWARD -i veth-fw-wan -o veth-fw-dns -p udp -d 10.0.99.5 --dport 53 -j ACCEPT
Reglas desde Internet hacia LAN Interna (denegado):
# Denegar explícitamente acceso a la LAN interna desde Internet
sudo ip netns exec firewall iptables -A FORWARD -i veth-fw-wan -o veth-fw-lan -j DROP
Reglas desde LAN Interna hacia Internet (permitido):
# NAT para salida a Internet
sudo ip netns exec firewall iptables -t nat -A POSTROUTING -o veth-fw-wan -j MASQUERADE
sudo ip netns exec firewall iptables -A FORWARD -i veth-fw-lan -o veth-fw-wan -j ACCEPT
Reglas desde LAN Interna hacia DMZ (administración):
# Permitir SSH desde la LAN a los servidores DMZ
sudo ip netns exec firewall iptables -A FORWARD -i veth-fw-lan -o veth-fw-dmz -p tcp -s 10.0.0.0/24 -d 10.0.99.10 --dport 22 -j ACCEPT
sudo ip netns exec firewall iptables -A FORWARD -i veth-fw-lan -o veth-fw-dns -p tcp -s 10.0.0.0/24 -d 10.0.99.5 --dport 22 -j ACCEPT
Reglas desde DMZ hacia LAN Interna (denegado excepto lo necesario):
# Denegar todo tráfico desde DMZ a LAN (principio de mínimo privilegio)
sudo ip netns exec firewall iptables -A FORWARD -i veth-fw-dmz -o veth-fw-lan -j DROP
sudo ip netns exec firewall iptables -A FORWARD -i veth-fw-dns -o veth-fw-lan -j DROP
Paso 7: Verificar reglas de firewall
# Ver todas las reglas
sudo ip netns exec firewall iptables -L -v
# Ver tabla NAT
sudo ip netns exec firewall iptables -t nat -L -v
Paso 8: Probar conectividad
# Desde cliente interno a Internet (debe funcionar)
sudo ip netns exec clienteSede ping -c 4 8.8.8.8
# Desde cliente interno a DMZ (debe funcionar)
sudo ip netns exec clienteSede ping -c 4 10.0.99.10
# Desde Internet al servidor Web (simulado desde el host)
sudo ip netns exec firewall ping -c 4 10.0.99.10
Paso 9: Configurar SSH para acceso seguro
# Instalar OpenSSH en el servidor DMZ
sudo ip netns exec servidorWeb apt-get update
sudo ip netns exec servidorWeb apt-get install -y openssh-server
# Iniciar SSH
sudo ip netns exec servidorWeb systemctl start ssh
# Conectar desde cliente interno
sudo ip netns exec clienteSede ssh 10.0.99.10
Paso 10: Configurar TLS para servidor web
# Generar certificado autofirmado
sudo ip netns exec servidorWeb openssl req -x509 -newkey rsa:2048 -keyout /etc/ssl/private/key.pem -out /etc/ssl/certs/cert.pem -days 365 -nodes -subj "/CN=servidorWeb"
# Configurar Nginx o Apache con TLS (dependiendo de lo instalado)
# Para este laboratorio, documentamos el proceso
Ejercicios prácticos
Ejercicio 1: Agregar regla para SSH
sudo ip netns exec firewall iptables -A FORWARD -i veth-fw-lan -o veth-fw-dmz -p tcp -s 10.0.0.0/24 -d 10.0.99.10 --dport 22 -j ACCEPT
Ejercicio 2: Bloquear ICMP (ping)
sudo ip netns exec firewall iptables -A FORWARD -p icmp -j DROP
Ejercicio 3: Verificar la tabla de conexiones
sudo ip netns exec firewall conntrack -L
Errores comunes y soluciones
| Error | Causa | Solución |
|---|---|---|
| No se puede acceder a Internet | NAT no configurado. | Verificar reglas de iptables y ip_forward=1. |
| Cliente no puede acceder a DMZ | Regla de forward bloquea. | Verificar reglas de iptables. |
| SSH no funciona | Puerto bloqueado. | Agregar regla para puerto 22. |
| Certificado TLS inválido | Certificado autofirmado. | Aceptar manualmente en el navegador. |
Conceptos clave del Tema 8 aplicados
| Concepto | Aplicación en el laboratorio |
|---|---|
| Tríada CIA | Confidencialidad, Integridad, Disponibilidad |
| Firewall | Filtrado de tráfico con iptables |
| DMZ | Segmentación de servidores públicos |
| ACLs | Control de acceso basado en reglas |
| SSH | Acceso remoto seguro |
| TLS | Cifrado de comunicaciones web |
Conclusiones técnicas
En este laboratorio hemos:
- Implementado un firewall con
iptablespara controlar el tráfico. - Configurado una DMZ para aislar servidores públicos.
- Establecido ACLs para restringir el acceso a servicios administrativos.
- Configurado SSH para acceso remoto seguro.
- Implementado TLS para cifrar comunicaciones web.
- Aplicado los principios de la tríada CIA en la práctica.
La seguridad en redes es un proceso continuo que combina múltiples capas de defensa. El firewall controla el tráfico, la DMZ aísla servidores expuestos, SSH protege el acceso administrativo y TLS cifra las comunicaciones. Ninguna medida es suficiente por sí sola; la combinación de todas ellas proporciona una postura de seguridad robusta.
Preparación para el siguiente laboratorio
Hemos dejado la red con firewall, DMZ, SSH y TLS funcionando. En el Laboratorio 09 exploraremos VPN y Tunelización, implementando GRE, IPsec, OpenVPN y WireGuard para conectar de forma segura las oficinas y empleados remotos.
¡Laboratorio 08 completado! Has implementado seguridad en redes. Continúa con el Laboratorio 09.