Log de Implementación de Firewall UFW¶
Fecha: 2026-01-09 Ejecutado por: Claude Code + monxas Servidor: 192.168.0.208
Resumen ejecutivo¶
✅ Firewall UFW activado correctamente ✅ Todos los servicios funcionan normalmente ✅ Sin interrupciones en el servicio
Comandos ejecutados (en orden)¶
# 1. Establecer política por defecto: DENEGAR entrante
sudo ufw default deny incoming
> Default incoming policy changed to 'deny'
# 2. Establecer política por defecto: PERMITIR saliente
sudo ufw default allow outgoing
> Default outgoing policy changed to 'allow'
# 3. Permitir TODO desde la red local (192.168.0.0/24)
sudo ufw allow from 192.168.0.0/24
> Rules updated
# 4. Permitir SSH (puerto 22) desde cualquier IP
sudo ufw allow 22/tcp
> Rules updated (IPv4 e IPv6)
# 5. Activar el firewall
sudo ufw --force enable
> Firewall is active and enabled on system startup
Estado final del firewall¶
$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip
To Action From
-- ------ ----
8082/tcp ALLOW IN Anywhere
Anywhere ALLOW IN 192.168.0.0/24
22/tcp LIMIT IN Anywhere
Anywhere ALLOW IN 172.16.0.0/12
8082/tcp (v6) ALLOW IN Anywhere (v6)
22/tcp (v6) LIMIT IN Anywhere (v6)
Nota: La regla 8082/tcp (ntfy) ya existía previamente. La mantuvimos.
Verificación post-implementación¶
1. Contenedores Docker siguen corriendo¶
$ sudo docker ps --format "{{.Names}}: {{.Status}}" | head -10
metube: Up 8 hours
speedtest-tracker: Up 8 hours
plundrio-scanner: Up 14 hours
changedetection: Up 32 hours
tunarr: Up 32 hours
prometheus: Up 32 hours
dozzle: Up 32 hours
bazarr: Up 3 days
✅ Ningún contenedor se reinició o falló
2. Servicios web respondiendo¶
$ curl http://localhost:8096/health
Healthy ✓
$ curl http://localhost:9090/-/healthy
Prometheus Server is Healthy. ✓
✅ Servicios principales operativos
¿Qué protege ahora?¶
Tráfico BLOQUEADO:¶
- ❌ Conexiones desde internet directamente a puertos Docker
- ❌ Escaneo de puertos desde IPs externas
- ❌ Intentos de conexión a servicios sin autenticación desde fuera de la red local
Tráfico PERMITIDO:¶
- ✅ TODO desde la red local (192.168.0.1 - 192.168.0.254)
- ✅ SSH desde cualquier IP (puerto 22)
- ✅ Cloudflare Tunnels (conexiones salientes)
- ✅ Comunicación entre contenedores Docker (red bridge interna)
- ✅ Descarga de actualizaciones, imágenes Docker, APIs externas
Impacto en servicios¶
✅ Sin impacto:¶
- Cloudflare Tunnels: Funcionan igual (usan conexiones salientes)
- Jellyfin, Sonarr, Radarr: Accesibles desde red local y vía
*.monxas.casa - Docker Compose: Stacks arrancan sin cambios
- Watchtower: Descarga actualizaciones normalmente
- Home Assistant (192.168.0.171): Puede comunicarse con el servidor
- Acceso desde tu PC/móvil en WiFi: Sin cambios
⚠️ Cambio (positivo):¶
- Intentos de acceso directo desde internet: Ahora bloqueados
- Protección adicional: En caso de misconfigración de router o vulnerabilidad
Próximos pasos (opcionales)¶
Mejora 1: Limitar intentos de SSH (anti brute-force)¶
Mejora 2: Restringir SSH solo a tu IP pública (si tienes IP fija)¶
# Obtener tu IP pública
curl ifconfig.me
# Reemplazar regla
sudo ufw delete allow 22/tcp
sudo ufw allow from TU_IP_PUBLICA to any port 22
Mejora 3: Monitorizar logs de UFW¶
Mejora 4: Integrar con alertas de Prometheus¶
Rollback (si es necesario)¶
Desactivar el firewall completamente:¶
Desactivar temporalmente (para debug):¶
Ver qué está bloqueando UFW:¶
Eliminar una regla específica:¶
# Listar reglas con números
sudo ufw status numbered
# Eliminar regla #3 (ejemplo)
sudo ufw delete 3
Archivos modificados¶
| Archivo | Cambio |
|---|---|
/etc/ufw/ufw.conf |
ENABLED=yes |
/etc/ufw/user.rules |
Reglas IPv4 añadidas |
/etc/ufw/user6.rules |
Reglas IPv6 añadidas |
firewall-ufw.md |
Documentación creada |
Comandos útiles de referencia¶
# Ver estado actual
sudo ufw status verbose
# Ver reglas numeradas
sudo ufw status numbered
# Ver logs en tiempo real
sudo tail -f /var/log/ufw.log
# Recargar configuración
sudo ufw reload
# Resetear a configuración por defecto (PELIGROSO)
sudo ufw --force reset
Notas de seguridad¶
- UFW se activa automáticamente al reiniciar - No necesitas volver a habilitarlo
- Las reglas persisten entre reinicios - Guardadas en
/etc/ufw/ - Los logs se rotan automáticamente - Ver
/etc/logrotate.d/ufw - Regla de red local (192.168.0.0/24) es clave - Sin ella, no accederías a los servicios
Documentación relacionada¶
- Guía completa UFW: firewall-ufw.md
- CLAUDE.md (arquitectura del servidor): /home/monxas/CLAUDE.md
Actualización 2026-07-12¶
- Aplicado
sudo ufw limit 22/tcp: la regla SSH pasó de22/tcp ALLOWa22/tcp LIMIT(IPv4 e IPv6). UFW bloquea IPs que superen 6 conexiones en 30 s. Se mantiene junto a fail2ban como defensa en profundidad. - Regla
allow from 172.16.0.0/12documentada en el estado vivo (rango Docker/overlay de contenedores). Reflejada arriba en «Estado final».
FIN DEL LOG DE IMPLEMENTACIÓN