La exposición de puertos de gestión a Internet es una de las vulnerabilidades más críticas detectadas en auditorías de penetración en Colombia. Durante 2025, el 73% de las PYMES escaneadas en Medellín y Bogotá tenían al menos un puerto de administración (Winbox, SSH, RDP, HTTP) expuesto directamente a WAN sin restricción de origen.
Esta guía implementa los controles especificados en NIST SP 800-41 Rev. 1 (Guidelines on Firewalls and Firewall Policy) y CIS Control 8 (Audit Log Management) para reducir la superficie de ataque perimetral en entornos empresariales colombianos.
NIST SP 800-41 Rev. 1 - Sección 4.2.1
"Los firewalls deben configurarse con una política de denegación por defecto (default deny). Solo el tráfico explícitamente autorizado debe ser permitido, y todas las reglas deben documentar el propósito de negocio."
1. Metodología de Análisis: Superficie de Ataque WAN
Antes de implementar reglas de firewall, es obligatorio realizar un inventario de puertos expuestos. Según CIS Control 7 (Continuous Vulnerability Management), las organizaciones deben escanear continuamente su perímetro.
1.1 Escaneo desde Externo con Nmap
Nunca escanee su IP pública desde dentro de la red (Hairpin NAT/Loopback genera falsos resultados). Use una VPS externa o conexión 4G aislada:
# Escaneo completo de puertos TCP con detección de servicio sudo nmap -sS -sV -p- -T4 --min-rate 1000 \ --max-retries 2 $TARGET_IP -oN scan_results.txt # Escaneo de puertos UDP comunes (DNS, SNMP, NTP) sudo nmap -sU --top-ports 100 $TARGET_IP # Detección de vulnerabilidades con NSE scripts sudo nmap -sV --script vuln $TARGET_IP
1.2 Consulta en Shodan y Censys
Los motores de búsqueda de dispositivos expuestos indexan banners de servicios. Verifique si su organización aparece:
# MikroTik con Winbox expuesto en Colombia port:8291 country:CO os:"MikroTik RouterOS" # Windows RDP expuesto en Antioquia port:3389 region:"Antioquia" has_screenshot:true # Servidores web en Medellín con puertos sospechosos city:"Medellin" port:8080,8443,8888,9999" # Búsqueda por organización específica org:"Tu Empresa" net:190.XXX.XXX.0/24
CIS Control 13 - Data Protection
Si su IP pública aparece en Shodan con capturas de pantalla de RDP o banners de versión, ya ha sido indexada. Cambie puertos después del hardening y solicite eliminación en Shodan via opt-out.
2. Puertos Críticos a Cerrar en Perúmetro WAN
Según el análisis de incidentes en Colombia durante 2024-2026, estos son los puertos más atacados:
| Puerto | Servicio | Riesgo | Acción Requerida |
|---|---|---|---|
| 8291 | MikroTik Winbox | CRÍTICO | Cerrar a WAN, usar VPN o Port Knocking |
| 3389 | Windows RDP | CRÍTICO | Restringir por IP source, usar RD Gateway |
| 22 | SSH | CRÍTICO | Key-based auth, fail2ban, IP whitelist |
| 445 | SMB | CRÍTICO | Nunca exponer a Internet |
| 80/443 | HTTP/HTTPS | MEDIO | WAF reverse proxy, hardening web server |
| 3306 | MySQL/MariaDB | CRÍTICO | Bind a localhost, usar túnel SSH |
| 21 | FTP | MEDIO | Migrar a SFTP, nunca FTP anónimo |
| 23 | Telnet | CRÍTICO | Deshabilitar completamente |
3. Hardening MikroTik RouterOS 7.x - Input Chain
La cadena input controla el tráfico destinado al propio router. Según NIST SP 800-41, solo los servicios necesarios para operación deben ser accesibles.
3.1 Política de Firewall Stateful Completa
# ============================================================ # HARDENING INPUT CHAIN - NIST SP 800-41 COMPLIANT # Autor: Ing. Pedro Velásquez - CiberTechSolucion # Fecha: Marzo 2026 # ============================================================ # 1. Definir lista de IPs de administración (WhiteList) /ip firewall address-list add list=ADMIN_WHITELIST address=192.168.1.0/24 comment="Red LAN Oficina Principal" add list=ADMIN_WHITELIST address=10.10.0.0/24 comment="Red VPN WireGuard" add list=ADMIN_WHITELIST address=190.158.XXX.XXX comment="IP Estática Ing. Pedro" # 2. Lista de IPs bloqueadas (BlackList dinámica) /ip firewall address-list add list=BLACKLIST_WAN address=0.0.0.0 comment="Placeholder - se pobla dinámicamente" # 3. Reglas de filtrado Input Chain /ip firewall filter # 3.1 Aceptar tráfico establecido y relacionado (Stateful) add chain=input connection-state=established,related \ action=accept comment="[NIST] Accept Established/Related - Stateful Inspection" # 3.2 Dropear paquetes inválidos inmediatamente add chain=input connection-state=invalid \ action=drop log=yes log-prefix="[INVALID_DROP]" \ comment="[NIST] Drop Invalid - RFC 793 Compliance" # 3.3 Bloquear IPs en blacklist add chain=input src-address-list=BLACKLIST_WAN \ action=drop log=yes log-prefix="[BLACKLIST]" \ comment="Drop Blacklisted IPs" # 3.4 Permitir ICMP limitado (Monitoreo) add chain=input protocol=icmp icmp-options=8:0 \ limit=5,10:packet action=accept \ comment="[NIST] Rate-limited ICMP Echo Request" # 3.5 Acceso Winbox SOLO desde WhiteList add chain=input dst-port=8291 protocol=tcp \ src-address-list=ADMIN_WHITELIST action=accept \ comment="[CRITICAL] Winbox - Admin Only" # 3.6 Acceso SSH SOLO desde WhiteList add chain=input dst-port=22 protocol=tcp \ src-address-list=ADMIN_WHITELIST action=accept \ comment="[CRITICAL] SSH - Admin Only" # 3.7 API REST (si se usa) - Puerto 443/8080 add chain=input dst-port=443 protocol=tcp \ src-address-list=ADMIN_WHITELIST action=accept \ comment="REST API - Admin Only" # 3.8 REGISTRO de intentos de acceso denegados add chain=input dst-port=8291,22,80,443,3389 protocol=tcp \ action=add-src-to-address-list address-list=SCANNERS \ address-list-timeout=1d log=yes log-prefix="[SCAN_DETECT]" \ comment="[CIS] Log unauthorized access attempts" # 3.9 Drop final - Default Deny Policy add chain=input in-interface-list=WAN action=drop \ log=yes log-prefix="[DEFAULT_DENY]" \ comment="[NIST] Default Deny - Explicit Drop WAN Input"
CIS Control 8 - Audit Log Management
Las reglas con log=yes generan entradas en el log del router. Configure envío de logs a servidor Syslog centralizado (Wazuh, Graylog) para correlación de eventos.
4. Port Knocking: Acceso de Emergencia
El Port Knocking es una técnica de (tocar la puerta) que permite abrir puertos dinámicamente tras una secuencia de conexiones predefinida. No es un reemplazo de autenticación, sino una capa adicional de ofuscación.
Advertencia de Seguridad
Port Knocking NO reemplaza autenticación fuerte. Es "security through obscurity" y debe usarse SOLO como capa adicional. Siempre combine con: (1) Contraseñas robustas, (2) Certificados/Keys, (3) VPN cuando sea posible.
4.1 Implementación de Secuencia Triple
# ============================================================ # PORT KNOCKING - Secuencia: 7000 → 8000 → 9000 # Al completar secuencia, IP se agrega a ADMIN_WHITELIST por 1 hora # ============================================================ /ip firewall filter # KNOCK 1: Puerto 7000 → Agregar a lista temporal KNOCK_1 add chain=input dst-port=7000 protocol=tcp \ action=add-src-to-address-list \ address-list=KNOCK_1 address-list-timeout=15s \ comment="[KNOCK] Step 1: 7000" # KNOCK 2: Puerto 8000 (solo si está en KNOCK_1) → Avanzar a KNOCK_2 add chain=input dst-port=8000 protocol=tcp \ src-address-list=KNOCK_1 \ action=add-src-to-address-list \ address-list=KNOCK_2 address-list-timeout=15s \ comment="[KNOCK] Step 2: 8000" # KNOCK 3: Puerto 9000 (solo si está en KNOCK_2) → ¡ÉXITO! add chain=input dst-port=9000 protocol=tcp \ src-address-list=KNOCK_2 \ action=add-src-to-address-list \ address-list=ADMIN_WHITELIST address-list-timeout=1h \ log=yes log-prefix="[KNOCK_SUCCESS]" \ comment="[KNOCK] Success - Add to Admin Whitelist" # IMPORTANTE: Estas reglas deben ir ANTES del Drop final
4.2 Cliente Port Knocking (Linux/macOS/Windows)
# Linux/macOS con knockd instalado knock $ROUTER_IP 7000 8000 9000 # Sin knockd - usando nc (netcat) nc -z $ROUTER_IP 7000 && \ nc -z $ROUTER_IP 8000 && \ nc -z $ROUTER_IP 9000 # Windows PowerShell Test-NetConnection -ComputerName $ROUTER_IP -Port 7000 Test-NetConnection -ComputerName $ROUTER_IP -Port 8000 Test-NetConnection -ComputerName $ROUTER_IP -Port 9000 # Después de knocking, conectarse a Winbox/SSH winbox $ROUTER_IP || ssh -p 22 admin@$ROUTER_IP
5. Hardening Windows Server: RDP Seguro
El protocolo RDP (Remote Desktop Protocol) es uno de los más atacados en Colombia. Según datos de CiberTechSolucion, el 67% de intentos de intrusión en 2025 iniciaron por RDP expuesto.
5.1 Restricción por IP Source con PowerShell
# ============================================================ # HARDENING RDP - Windows Server 2022/2025 # Ejecutar como Administrador # ============================================================ # 1. Crear regla de firewall que permite RDP solo desde IPs autorizadas New-NetFirewallRule -DisplayName "RDP - Solo IPs Autorizadas" ` -Direction Inbound ` -LocalPort 3389 ` -Protocol TCP ` -Action Allow ` -RemoteAddress "192.168.1.0/24","10.10.0.0/24","190.158.XXX.XXX" ` -Profile Any ` -Enabled True ` -Description "[NIST] RDP restricted to authorized IPs only" # 2. Deshabilitar regla RDP por defecto (permite todo) Disable-NetFirewallRule -DisplayGroup "Escritorio remoto" Disable-NetFirewallRule -DisplayGroup "Remote Desktop" # 3. Habilitar Network Level Authentication (NLA) Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' ` -Name "UserAuthentication" -Value 1 # 4. Configurar nivel de encriptación a FIPS 140 Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' ` -Name "MinEncryptionLevel" -Value 4 # 5. Verificar configuración Get-NetFirewallRule -DisplayName "RDP*" | Format-Table DisplayName, Enabled, Direction # 6. Verificar IPs remotas permitidas Get-NetFirewallRule -DisplayName "RDP - Solo IPs Autorizadas" | Get-NetFirewallAddressFilter
5.2 Hardening Adicional con Política de Grupo
# Configuración vía gpedit.msc o secpol.msc # Ruta: Computer Configuration > Administrative Templates > Windows Components > Remote Desktop Services > Remote Desktop Session Host > Security 1. Require user authentication for remote connections by using Network Level Authentication → Enabled 2. Set client connection encryption level → Enabled → High Level (FIPS Compliant) 3. Require secure RPC communication → Enabled 4. Do not allow local administrators to customize permissions → Enabled 5. Set time limit for active Remote Desktop Services sessions → Enabled → 8 hours 6. Set time limit for disconnected sessions → Enabled → 1 hour # Ruta: Computer Configuration > Windows Settings > Security Settings > Local Policies > User Rights Assignment Allow log on through Remote Desktop Services → Remove "Users" → Add only specific Admin group
6. Detección y Respuesta: Logging Centralizado
Según CIS Control 8, los logs de firewall deben enviarse a un servidor centralizado para correlación y análisis. MikroTik soporta envío a Syslog vía UDP/TCP.
6.1 Configurar Syslog en MikroTik
# Configurar destino Syslog (Wazuh, Graylog, Splunk) /system logging action set remote remote=192.168.1.100 remote-port=514 \ target=remote syslog-facility=local0 \ syslog-severity=info syslog-time-format=bsd # Configurar topics a enviar /system logging add action=remote topics=firewall prefix="[MT_FW]" add action=remote topics=critical prefix="[MT_CRIT]" add action=remote topics=error prefix="[MT_ERR]" # Verificar envío de logs /log print where topics~"firewall"
7. Checklist de Verificación Post-Hardening
Escaneo de validación externa
Ejecutar nmap desde VPS externa para confirmar que solo puertos autorizados están abiertos.
Verificación en Shodan/Censys
Confirmar que la IP pública ya no aparece indexada con puertos sensibles.
Prueba de acceso administrativo
Verificar que Winbox/SSH/RDP solo accesibles desde IPs autorizadas o VPN.
Logging centralizado operativo
Confirmar recepción de logs en servidor Syslog/SIEM.
Documentación de reglas
Cada regla de firewall tiene comentario explicando propósito de negocio.
Backup de configuración
Exportar configuración: /export file=hardening_backup
¿Tu infraestructura pasaría una prueba de penetración?
Nuestro equipo realiza pentesting de perímetro según metodología OWASP y NIST SP 800-115. Identificamos puertos expuestos, vulnerabilidades de configuración y entregamos reporte ejecutivo con plan de remediación.