TroutTrout

OPC UA es seguro por diseño. La mayoría de los despliegues no lo son.

El protocolo incorpora firma, cifrado, identidad de aplicación por certificado y autenticación de usuario con nombre. Todo ello es opcional, y los valores por defecto vienen abiertos. Esta guía explica qué hace realmente el modelo de seguridad, qué ajuste cambia qué, y cómo proteger servidores que no se pueden reconfigurar.

Última actualización:

Leer la checklist

¿Qué es la seguridad de OPC UA y por qué suele estar desactivada?

La seguridad de OPC UA es un modelo de tres capas integrado en el protocolo: un transporte, un SecureChannel que firma y cifra cada mensaje, y una Sesión que lleva la identidad de usuario. Las tres capas son opcionales, y la mayoría de productos se entregan con SecurityPolicy None, MessageSecurityMode None y acceso anónimo activo para facilitar el primer arranque. Casi toda debilidad de OPC UA que aparece en campo es un fallo de configuración y no del protocolo, y eso mismo la hace corregible.

OPC UA es el protocolo que une un parque industrial: PLC, variadores, sensores, SCADA e historians que nunca se diseñaron para hablar entre sí. A diferencia de Modbus, se concibió con la seguridad en mente desde el principio, y el modelo es realmente bueno. El problema es que está en capas y es opcional. Un servidor puede anunciar cifrado fuerte y aun así aceptar una sesión anónima en claro por el mismo puerto, porque así se entregan la mayoría de los productos.

El problema

¿Por qué la mayoría de servidores OPC UA quedan sin proteger?

Cuatro valores por defecto explican la mayor parte de lo que encuentra una auditoría en planta. Ninguno es una vulnerabilidad de la especificación. Todos son el estado en que queda un servidor cuando terminó la puesta en marcha y nadie volvió.

SecurityMode None en producción

Un servidor dejado en SecurityPolicy None con MessageSecurityMode None acepta sesiones en claro de cualquiera que alcance el puerto TCP 4840. Puede recorrer el espacio de direcciones, leer valores de proceso en vivo y muy a menudo escribir consignas. La Fundación OPC destina None a descubrimiento y pruebas, no a transportar datos reales. Si audita una sola cosa este trimestre, audite esto. Con SecurityPolicy None tampoco hay clave con la que cifrar el token de identidad, así que un inicio de sesión UserName envía la contraseña por la red como texto claro UTF-8 (OPC UA Part 4, 7.40).

Acceso de usuario anónimo activo

La autenticación de aplicación y la de usuario son distintas. Un canal puede ser criptográficamente sólido, con certificados válidos en ambos extremos, y admitir igualmente una sesión anónima encima. Cifrar la tubería no dice nada de quién está al otro lado.

Certificados no confiables aceptados automáticamente

Aceptar certificados automáticamente resulta cómodo durante la puesta en marcha y con frecuencia no se desactiva nunca. El parámetro se llama AutoAcceptUntrustedCertificates en la pila de la Fundación OPC, a menudo etiquetado como trust-on-first-use en las interfaces de fabricante, aunque es más débil de lo que ese nombre sugiere: confía en cada certificado, cada vez, no solo en el primero que ve. Un servidor en ese estado no tiene autenticación de aplicación alguna, diga lo que diga el modo de seguridad.

Políticas obsoletas mantenidas por compatibilidad

Basic128Rsa15 y Basic256 se apoyan en SHA-1 y en un relleno RSA débil, y la Fundación OPC las ha sacado del conjunto recomendado. Suelen dejarse anunciadas para que un cliente antiguo siga funcionando, y los clientes antiguos siguen eligiéndolas.

Panorama de amenazas

¿Qué puede hacer un atacante con un servidor OPC UA abierto?

OPC UA es rico por diseño: un cliente puede descubrir todo el espacio de direcciones, suscribirse a valores en vivo y llamar métodos. Esa riqueza es justo lo que hace valioso para un atacante un extremo sin autenticar.

Reconocimiento del espacio de direcciones

El servicio browse está diseñado para autodescribirse. Un cliente sin autenticar puede enumerar cada nodo, su tipo de dato y a menudo el nombre legible del proceso que controla, produciendo un mapa de la planta sin enviar un solo paquete malicioso.

Escrituras no autorizadas sobre consignas

Donde el servidor expone nodos escribibles y no exige identidad de usuario, la misma sesión que lee un valor puede cambiarlo. Nada en el protocolo distingue a un ingeniero de cualquier otro que alcanzó el puerto.

Caída silenciosa a texto en claro

Algunos clientes retroceden a SecurityMode None cuando falla el handshake seguro, en vez de rechazar la conexión. Un atacante capaz de romper el handshake obtiene texto en claro, y el operador ve una conexión que funciona.

Interceptación en una red plana

Sobre opc.tcp con solo Sign, las cargas viajan legibles. Valores de proceso, nombres de tags y la forma del proceso son visibles para cualquier cosa en el mismo segmento. Las contraseñas son la excepción: la especificación obliga al servidor a cifrar por separado el token de identidad de usuario siempre que el canal no sea SignAndEncrypt, así que el fallo de contraseña en claro corresponde a SecurityPolicy None y no a Sign.

Modelo de seguridad

¿Cómo funciona el modelo de seguridad de OPC UA?

La seguridad de OPC UA no es un interruptor. La especificación describe tres capas que cooperan, y saber a cuál pertenece un ajuste dado es la mayor parte del trabajo.

  1. 01

    Transporte

    La conexión que mueve los bytes. Para el binding opc.tcp habitual es un socket TCP puro. Para los bindings opc.https y opc.wss es TLS.

  2. 02

    Comunicación: el SecureChannel

    Donde se establecen confidencialidad e integridad, con independencia del transporte. Sobre opc.tcp esto es UA-SecureConversation: negocia claves, firma mensajes y opcionalmente los cifra.

  3. 03

    Aplicación: la Sesión

    Se ejecuta sobre un SecureChannel y contiene la autenticación y autorización de usuario. Una sesión puede reasociarse a un canal nuevo si cae la conexión.

THE THREE LAYERSEACH ANSWERS A DIFFERENT QUESTION, AND OWNS DIFFERENT SETTINGSSESSIONWHO IS USING IT?SETTINGS THAT LIVE HEREUserName + passwordX.509 user certificateAnonymous (avoid)SECURECHANNELIS THE DATA PROTECTED?UA-SecureConversation over opc.tcpSETTINGS THAT LIVE HEREMessageSecurityModeSecurityPolicyApplication certificatesTRANSPORTHOW DO BYTES MOVE?SETTINGS THAT LIVE HEREopc.tcp (raw socket)opc.https / opc.wss (TLS)ALL THREE ARE OPTIONAL. A SERVER CAN RUN WITH NONE OF THEM ENGAGED.

¿Qué diferencia hay entre None, Sign y SignAndEncrypt?

Al abrir un SecureChannel el cliente elige uno de tres modos. Se corresponden directamente con la protección que recibe el tráfico.

Modo
None
Integridad
Ninguna. Nada detecta manipulación.
Confidencialidad
Ninguna. Texto en claro en la red.
Dónde corresponde
Solo descubrimiento y pruebas. Sin lugar en un extremo de producción.
Modo
Sign
Integridad
Cada mensaje firmado. La manipulación se detecta.
Confidencialidad
Ninguna. Carga legible en la red.
Dónde corresponde
Caso estrecho: cuando importa la integridad y la confidencialidad realmente no.
Modo
SignAndEncrypt
Integridad
Cada mensaje firmado.
Confidencialidad
Completa. Carga cifrada.
Dónde corresponde
El valor por defecto en producción. Todo lo que lleve consignas, valores de proceso o credenciales.

¿Qué SecurityPolicy de OPC UA debería usar?

Una SecurityPolicy es el conjunto nombrado de algoritmos que usa un SecureChannel una vez elegido Sign o SignAndEncrypt. Elegir política es elegir su fuerza criptográfica.

Política
Aes256_Sha256_RsaPss
Algoritmos
AES-256, SHA-256, firmas RSA-PSS
Estado
Recomendación actual. Prefiérala allí donde ambos extremos la soporten.
Política
Aes128_Sha256_RsaOaep
Algoritmos
AES-128, SHA-256, RSA-OAEP
Estado
Actual, más ligera. Aceptable cuando AES-128 cumple el requisito.
Política
Basic256Sha256
Algoritmos
AES-256, SHA-256, firmas RSA PKCS#1 v1.5
Estado
Muy desplegada y aún aceptable. Elección razonable cuando las políticas más recientes no están disponibles en ambos lados.
Política
Basic256
Algoritmos
AES-256, SHA-1, RSA-OAEP
Estado
Obsoleta según la Fundación OPC. El relleno es sólido, pero SHA-1 ya no es aceptable. Su presencia es un hallazgo a remediar.
Política
Basic128Rsa15
Algoritmos
AES-128, SHA-1, cifrado RSA PKCS#1 v1.5
Estado
Obsoleta según la Fundación OPC. Relleno débil y hash roto. Su presencia es un hallazgo a remediar.

Un paso de auditoría concreto

Todo servidor OPC UA anuncia los extremos que soporta mediante el servicio de descubrimiento. Enumérelos, confirme que el servidor ofrece una política fuerte con SignAndEncrypt y que las políticas obsoletas están desactivadas o no son las que los clientes eligen. Una lista de extremos es la respuesta honesta más rápida a «¿esto está protegido?».

Autenticación

¿Cuáles son los métodos de autenticación de OPC UA?

OPC UA autentica en dos niveles distintos, y confundirlos es una fuente frecuente de falsa confianza. Uno pregunta si el software del otro extremo es conocido. El otro pregunta quién lo está usando.

Autenticación de aplicación

Ocurre en el SecureChannel y responde a «¿esta aplicación cliente y esta aplicación servidor son quienes dicen ser?». Cada aplicación posee un certificado de instancia X.509, y ambos lados intercambian y validan certificados al abrir el canal. La confianza se gestiona con una lista de certificados de confianza: usted decide qué certificados, o qué CA emisora, acepta. Es lo que impide que una aplicación desconocida establezca un canal.

Autenticación de usuario

Ocurre en la Sesión y responde a «¿qué persona o servicio está al otro lado?». OPC UA admite varios tipos de token de identidad: Anonymous, que no tiene lugar en producción, UserName con contraseña, y certificados de usuario X.509. Un canal puede ser criptográficamente sólido a nivel de aplicación y admitir igualmente un usuario anónimo encima.

UA CLIENTGATE 1 · APPLICATIONIS THIS SOFTWARE KNOWN?X.509 instance certificatechecked against the trust listSECURECHANNEL OPENSGATE 2 · USERWHO IS USING IT?identity tokenUserName, X.509, or AnonymousSESSION OPENSADDRESSSPACETHE COMMON FAILUREGATE 1 PASSES: CERTIFICATES ARE VALID, THE CHANNEL IS ENCRYPTED, DASHBOARDS SAY SECURED.GATE 2 IS WAVED THROUGH: THE SESSION IS ANONYMOUS, SO NOTHING KNOWS WHO IS ON THE OTHER END.

Un extremo bien protegido hace ambas cosas: valida el certificado de la aplicación par contra una lista de confianza gestionada y exige una identidad de usuario con nombre. Emitir, distribuir, confiar y rotar esos certificados es el trabajo operativo que lo hace real, y es la parte en la que la mayoría de equipos invierte de menos.

En campo

¿Dónde falla la seguridad de OPC UA en campo?

La mayoría de los incidentes de OPC UA son de configuración y no fallos del protocolo. Estos cinco explican el grueso de lo que aparece en una evaluación.

SecurityMode None en producción

El problema dominante con diferencia, y el primero que hay que comprobar.

Aceptar automáticamente certificados no confiables

AutoAcceptUntrustedCertificates dejado activo de forma permanente, lo que anula por completo la autenticación de aplicación.

Acceso anónimo junto a un canal cifrado

El canal es sólido, la sesión está abierta de par en par, y los paneles muestran el extremo como protegido.

Políticas obsoletas todavía anunciadas

Mantenidas por retrocompatibilidad, y luego elegidas justo por los clientes antiguos que le preocupaban.

Caída silenciosa a texto en claro

Un cliente que retrocede a None cuando falla el handshake seguro, en lugar de rechazar la conexión sin más.

Parques aislados

¿Cómo gestionar certificados OPC UA sin un Global Discovery Server?

La autenticación de aplicación de OPC UA depende de certificados, y la respuesta de la especificación a escala es un Global Discovery Server (GDS, OPC UA Part 12). Muchos parques de OT nunca llegan a montarlo: es un servidor más que operar, parchear y respaldar dentro de la red de proceso, y un parque pequeño rara vez lo justifica. Las capas siguen funcionando, solo cambia la distribución.

Emitir desde una autoridad local

Una CA on-premise, o certificados de instancia autofirmados cuando el parque es lo bastante pequeño para enumerarlo. Lo que importa es que una persona haya decidido qué certificados son de confianza, no que una CA pública responda por ellos.

Poblar las listas de confianza a propósito

Cada aplicación mantiene su propia lista de confianza. Llenarla durante la puesta en marcha, y desactivar después AutoAcceptUntrustedCertificates, es lo que convierte los certificados de adorno en autenticación.

Planificar la rotación antes de la caducidad

Los certificados caducan, y en un parque aislado nada los renueva solo. Una caducidad que nadie siguió se convierte en una parada en domingo. Registre fechas de emisión y caducidad en el mismo runbook que guarda el resto del estado de la red.

O sacar el problema de los equipos

Cuando el trabajo de certificados equipo por equipo no es realista, terminar la sesión en un proxy que entiende el protocolo permite que un único componente sostenga la PKI en lugar de que cada equipo sostenga un trozo.

Endurecimiento

Checklist de endurecimiento de OPC UA: qué verificar

La seguridad de OPC UA se reduce a una lista corta y comprobable. Casi todo es verificación más que construcción. Todo ello da por hecho una cosa: que tiene permiso para cambiar el extremo. Cuando no lo tiene, la siguiente sección cubre la otra forma de cerrar las mismas brechas.

  1. 01

    Confirmar que ningún extremo de producción funciona en MessageSecurityMode None.

  2. 02

    Exigir SignAndEncrypt para todo lo que lleve datos de proceso, consignas o credenciales.

  3. 03

    Elegir una SecurityPolicy actual, preferiblemente Aes256_Sha256_RsaPss, y retirar Basic128Rsa15 y Basic256.

  4. 04

    Validar los certificados de instancia contra una lista de confianza gestionada y desactivar AutoAcceptUntrustedCertificates al terminar la puesta en marcha.

  5. 05

    Exigir identidad de usuario con nombre. Desactivar el acceso anónimo.

  6. 06

    Confirmar que los clientes se niegan a degradar en vez de caer a texto en claro.

  7. 07

    Recordar que sobre opc.tcp la protección es el SecureChannel, mientras que opc.https y opc.wss van sobre TLS. Compruebe el binding antes de razonar sobre qué puede ver un proxy o una captura.

Estos controles se corresponden con la identificación y autenticación de IEC 62443 (FR1) y el control de uso (FR2), con NIST SP 800-82r3 para sistemas de OT, y con las medidas de control de acceso que el artículo 21 de NIS2 exige a las entidades esenciales e importantes.

¿OPC UA usa TLS?

Sobre opc.tcp, lo que protege sus datos es el SecureChannel, no TLS. Una conexión que parece cifrada no usa necesariamente TLS, porque UA-SecureConversation hace su propia firma y su propio cifrado. TLS solo entra en juego con los bindings opc.https y opc.wss. Esto importa en cuanto razona sobre qué puede ver y qué no un cortafuegos, una captura de red o un proxy que termina TLS.

OPC.TCPUA CLIENTENCRYPTION HAPPENS HEREUA-SECURECONVERSATIONUA SERVERThe SecureChannel signs and encrypts. No TLS anywhere in this path.OPC.HTTPS / OPC.WSSUA CLIENTENCRYPTION HAPPENS HERETLSUA SERVERTLS carries the transport. The SecureChannel still runs on top of it.A TLS-TERMINATING PROXY SEES NOTHING USEFUL ON THE OPC.TCP PATH. CHECK THE BINDING BEFORE YOU TRUST A CAPTURE.
Cuando no puede reconfigurar el servidor

¿Cómo proteger un servidor OPC UA que no puede reconfigurar?

La checklist da por hecho que puede cambiar el extremo. A menudo no puede: el fabricante lo prohíbe, no existe ventana de mantenimiento, o el servidor es anterior a las partes de la especificación que quiere aplicar. La alternativa es poner la protección delante del equipo, en la red, para que el extremo inseguro nunca sea alcanzable directamente.

TWO WAYS TO CLOSE THE GAPPATH A · CONFIGURE THE ENDPOINT01Set MessageSecurityMode02Select a current SecurityPolicy03Issue + distribute certificates04Populate the trust list05Disable anonymous accessWHAT IT REQUIRESVendor permits the changeA change window on the assetCertificate work per deviceRotation tracked before expirySERVER SECURED, SERVER CHANGEDPATH B · GATE THE CHANNEL01Server joins a segmented enclave02Proxy terminates the session03Identity + policy applied there04Connection re-established to asset05Session logged at the chokepointWHAT IT REQUIRESNothing on the deviceNo firmware or config changeOne PKI, not one per deviceWorks where the vendor forbids changesSERVER SECURED, SERVER UNTOUCHEDPATH A IS THE RIGHT ANSWER WHEREVER IT IS AVAILABLE. PATH B EXISTS BECAUSE OFTEN IT IS NOT.

Envolverlo en un túnel transparente

Access Gate opera su propia PKI y emite certificados terminales al vuelo. El canal hacia el Gate es TLS 1.3 con intercambio de claves post-cuántico (ML-KEM-768), verificado contra esa PKI, delante de un servidor que no habla nada de eso, y sin trabajo de certificados equipo por equipo.

Denegación por defecto, por identidad y protocolo

Dar a un usuario acceso OPC UA a un activo no le da nada más. Cada protocolo en cada activo es un permiso explícito, que es justo la aplicación que la sesión anónima del servidor no puede ofrecer.

Mantener el servidor fuera de la red plana

El extremo queda dentro de un enclave segmentado y conserva su propia IP. Nada cambia en el equipo, y nada llega al puerto TCP 4840 sin pasar antes por la política.

Registrar quién se conectó a qué

El mismo proxy que filtra el canal registra la sesión: qué identidad, qué activo, qué protocolo. Esa es la evidencia de control de acceso que en último término piden IEC 62443, NIST SP 800-82r3, NIS2 y CMMC.

Siguiente paso

Controlar un servidor OPC UA sin tocarlo

Si su parque tiene servidores que no se pueden reconfigurar, o un trabajo de certificados poco realista por equipo, podemos repasar juntos qué aspecto tiene filtrar el canal en su red.

Configurar el acceso OPC UA

La guía paso a paso: llevar un servidor inseguro a un enclave y luego proteger el canal con TLS, seguridad de mensaje o un túnel filtrado.

Leer la guía

Verlo en su propio parque

Un repaso sobre su topología: qué extremos están expuestos, cómo se ve la aplicación de políticas y qué exige el despliegue.

Verlo en Acción
FAQ

Preguntas sobre seguridad en OPC UA

4840

El puerto TCP por defecto de OPC UA. Un extremo escuchando aquí en SecurityMode None es legible, y a menudo escribible, por cualquier cosa que pueda enrutar hasta él.

Solo en algunos bindings. Los bindings opc.https y opc.wss van sobre TLS. El binding opc.tcp habitual no: usa UA-SecureConversation, la firma y el cifrado propios del protocolo en la capa SecureChannel. Una conexión puede estar totalmente cifrada sin TLS de por medio, lo que importa al razonar sobre qué puede ver un proxy que termina TLS o una captura de red.

No. El modelo de seguridad es sólido, pero cada una de sus capas es opcional, y la mayoría de productos se entregan con SecurityPolicy None, MessageSecurityMode None y acceso anónimo activo para facilitar el primer arranque. Un servidor solo es seguro si alguien lo configuró así tras la puesta en marcha.

Sign aporta integridad: cada mensaje va firmado, así que la manipulación se detecta, pero la carga sigue siendo legible en la red. SignAndEncrypt añade confidencialidad, la carga también va cifrada. Para tráfico de OT en producción, SignAndEncrypt debería ser el valor por defecto; Sign solo tiene un hueco estrecho, cuando la confidencialidad realmente no importa.

Aes256_Sha256_RsaPss donde ambos extremos la soporten, y Basic256Sha256 como alternativa aceptable. Basic128Rsa15 y Basic256 están obsoletas: se apoyan en SHA-1 y en relleno RSA débil, y la Fundación OPC las ha sacado del conjunto recomendado. Si un servidor aún las anuncia, trátelo como un hallazgo y no como un ajuste a preservar.

Ponga la protección delante. Lleve el servidor a un enclave segmentado para que no sea alcanzable directamente, y termine la sesión en un proxy que entiende el protocolo y aplica identidad y política antes de restablecer la conexión con el activo. El equipo conserva su IP, su firmware y su configuración, y el cifrado, el control de acceso y el registro ocurren en el punto de paso en lugar de en el extremo.