1. Inventario y clasificación detallada de activos OT
- Descubrimiento activo
- Use herramientas como Nmap con scripts NSE de Modbus y DNP3 para identificar puertos y versiones:
nmap -sS -p 502,20000 --script modbus-discover 10.0.0.0/24
- Emplee agentes ligeros (por ejemplo, Telegraf con plugins industriales) para recolectar métricas de CPU, memoria y firmware de PLC.
- Use herramientas como Nmap con scripts NSE de Modbus y DNP3 para identificar puertos y versiones:
- Etiquetado y criticidad
- Clasifique cada dispositivo con un tag único (Asset ID) y niveles de criticidad (Alta/Media/Baja) basados en:
- Impacto en la seguridad (p. ej., válvulas de emergencia).
- Dependencias en procesos críticos.
- Mantenga este inventario en un CMDB (Configuration Management Database) con reconciliación automática.
- Clasifique cada dispositivo con un tag único (Asset ID) y niveles de criticidad (Alta/Media/Baja) basados en:
2. Arquitectura de red: segmentación y microsegmentación
- Modelo Purdue extendido (IEC 62443)
- Nivel 0–1 (Field & Control): sensores, actuadores y PLC.
- Nivel 2 (Cell/Workstation): HMIs y servidores SCADA.
- Nivel 3 (Plant DMZ): historiadores de datos, gateways MES.
- Nivel 4 (Enterprise): ERP, BI, correo corporativo.
- DMZ OT y microsegmentación
- Configure firewalls de frontera (p. ej., Cisco Firepower o Fortinet SCADA NGFW) que sólo permitan tráfico específico entre zonas
set firewall name OT-to-DMZ rule 10 action accept set firewall name OT-to-DMZ rule 10 protocol tcp
set firewall name OT-to-DMZ rule 10 destination port 502 # Modbus TCP set firewall name OT-to-DMZ rule 10 source address 10.0.1.0/24
set firewall name OT-to-DMZ rule 10 destination address 10.0.2.10
- Dentro de cada zona, use VLANs y ACLs en switches industriales (p. ej., Hirschmann) para aislar segmentos de control.
- Configure firewalls de frontera (p. ej., Cisco Firepower o Fortinet SCADA NGFW) que sólo permitan tráfico específico entre zonas
- Zero Trust para OT
- Implemente microsegmentación con soluciones como Illumio o Guardicore, creando políticas basadas en identidad de proceso y aplicación, no sólo en IP.
3. Firewalls industriales y DPI SCADA
- Protocolos específicos
- Active módulos de Deep Packet Inspection (DPI) para saber si un paquete Modbus/IP contiene comandos atípicos (
WriteSingleCoil
,MaskWriteRegister
no habituales). - Para DNP3, habilite inspección de objetos de control y watch-dog timers.
- Active módulos de Deep Packet Inspection (DPI) para saber si un paquete Modbus/IP contiene comandos atípicos (
- Listas blancas de comandos
- Defina, por PLC y tag, los comandos permitidos y rechace todo lo demás. Esto bloquea intentos de Function Code 0x10 (Multiple Registers Write) fuera de horario de producción.
- Ejemplo de política de firewall CIP Security
- En EtherNet/IP con CIP Security, configure políticas para exigir X.509 certificates en cada conexión de controlador:
# Activar CIP Security en Rockwell Logix 5000 Security Configuration -> Add Certificate -> Require Mutual Authentication
- En EtherNet/IP con CIP Security, configure políticas para exigir X.509 certificates en cada conexión de controlador:
4. IDS/IPS especializado para tráfico OT
- Network Traffic Analysis (NTA)
- Herramientas como Nozomi Guardian o Claroty CTD perfilan el “baseline” de su red y detectan:
- Cambios en las tasas de petición entre PLC y HMI.
- Tráfico no programado a direcciones broadcast.
- Herramientas como Nozomi Guardian o Claroty CTD perfilan el “baseline” de su red y detectan:
- Snort con reglas SCADA
- Instale snort en modo inline y cargue reglas comunitarias ICS:
snort -c /etc/snort/snort.conf --daq-dir /usr/lib/snort_dynamicengine/daq --daq afpacket include $RULE_PATH/modbus.rules
- Ejemplo de regla para detectar escaneos Modbus:
alert tcp any any -> any 502 (msg:"SCADA Modbus Scan"; flow:established; content:"|00 00|"; depth:2; detection_filter:track by_dest, count 20, seconds 10; sid:1000001; rev:1;)
- Instale snort en modo inline y cargue reglas comunitarias ICS:
5. Gestión de identidades y acceso (IAM) en OT
- Control de acceso basado en roles (RBAC)
- Defina roles (Ingeniero, Operador, Auditor) y asigne permisos a nivel de tag, no de planta entera.
- Almacene usuarios en un Active Directory con autenticación LDAP y políticas de contraseña fuerte.
- Saltos seguros (Jump Servers)
- Centralice todos los accesos de ingeniería a través de un servidor bastión (p. ej., CyberArk o BeyondTrust) donde se auditen y graben las sesiones.
- Multifactor y certificados
- Use tokens físicos (YubiKey) o apps TOTP para conexiones sensibles a consolas de PLC y SCADA.
6. Parcheo, hardening y virtual patching
- Inventario de CVEs
- Automatice scans con OpenVAS o Tenable Nessus para mapear vulnerabilidades conocidas en firmware de PLC.
- Ventanas de mantenimiento
- Planifique parches durante ventanas de baja producción, usando scripts de actualización automatizados (p. ej., Ansible con módulos WinRM para HMIs Windows).
- Virtual patching
- Cuando un PLC no se pueda actualizar, inserte reglas de firewall que bloqueen puertos o comandos vulnerables como compensación.
7. Monitorización centralizada y respuesta a incidentes
- SIEM compatible OT
- Conecte logs de firewalls, IDS y servidores SCADA a un SIEM (p. ej., Splunk con App for Industrial Security).
- Playbooks y runbooks
- Establezca flujos claros: detección → clasificación → contención → erradicación → recuperación.
- Use herramientas como TheHive o Cortex XSOAR para orquestar respuestas automatizadas.
- Pruebas de penetración OT
- Realice pentests periódicos con equipos especializados (p. ej., RedTeam ICS) para validar la eficacia de controles y entrenar al personal.
8. Cierre y mejora continua
La seguridad OT no concluye con un despliegue inicial: requiere un ciclo PDCA (Plan-Do-Check-Act) donde cada anomalía perfecciona su defensa. Con este nivel técnico de control —desde DPI en Modbus hasta X.509 en CIP— su SCADA y sus PLC estarán blindados ante las amenazas más sofisticadas y preparados para la fábrica del futuro.