Autenticación y Autorización, protegiendo proyectos. Parte II.

Siguiendo con la entrada «Autenticación y Autorización, protegiendo proyectos. Parte I» Vamos crear un usuario en nuestro proyecto creado en TIA Portal V16. En este caso será el “eng02” que, a diferencia de “eng01” que tenía los máximos permisos, vamos a incluirlo en el grupo “NET Diagnose”.

Como podemos comprobar los permisos son muy distintos con respecto a “Engineering Administrator”, es decir, reducidos.

Tras guardarlo procederemos de nuevo a abrirlo, y dado que ya lo tenemos protegido veremos que se nos requiere un usuario y una contraseña. Esto es, deberemos introducir las credenciales de “eng01” o “eng02” según sea el caso.

Si introducimos las credenciales de “eng02” veremos que la cosa cambia. Aquí, los menús estará sombreados por los limites que tiene nuestro usuario.

Una de las opciones podría ser la creación de un usuario con máximos privilegios para luego cerrar el proyecto y volverlo a abrir con las credenciales que hemos creado y así saltarnos la protección. En este caso, no podemos apareciendo la siguiente ventana.

Si por ejemplo quisiéramos modificar un Bloque de Programa, ocurriría lo mismo. Podríamos verlo pero no incluir instrucciones, bloques, funciones o cualquier otra modificación como cambiar nombres a variables etc.

Este ejemplo demuestra los dos extremos, hacer todo como administrador o sólo visualizar el contenido de un programa y otras funciones del PLC mediante el control de acceso a los proyectos que contiene toda esta información. No sólo de un PLC sino de un HMI asociado, u otro elemento que incluyamos.

Esto es especialmente importante para aquellos escenarios en los que una ingeniería lleva a cabo un desarrollo y debe facilitar una copia de respaldo su cliente pero quiere permitir ver el contenido pero no facilitar su edición y así evitar modificaciones accidentales.

Otro caso podríamos tenerlo si se nos compromete el servidor de ficheros donde almacenamos las copias de respaldo o se pierde un dispositivo USB con el hacemos una copia y nos lo llevamos a una Workstation y alguien podría abrirlo y ver el contenido.

También no debemos olvidarnos de que en todo ello en un desarrollo, puesta en marcha o mantenimiento de una instalación compuesta por múltiples sistemas o componentes puede haber distintas empresas, integradores o ingenierías. Éstos puedan trabajar en la misma maquinaria, célula, estación o instalación y que se puede dar la situación que sean competencia entre sí, y no sería complejo hacer una copia del contenido de las carpetas donde se almacenan los proyectos, robarlos ya hacernos con la propiedad intelectual de la empresa contraria.

Hasta aquí la entrada de hoy, nos vemos en la siguiente!

Un saludo

Autenticación y Autorización, conceptos básicos

Como hemos hablado en muchas ocasiones no existe una medida con la que podamos garantizar la seguridad de nuestras instalaciones máquinas o plantas. Sino que será la puesta en marcha de un conjunto de ellas que, de forma coordinada, establecerán distintas líneas de defensa.

La estrategia de Defensa en Profundidad establece diferentes niveles tanto a nivel organizativo como técnico, siendo uno de ellos el control de accesos. Estos pueden llevarse bien tanto a nivel de red a través de una Separación y Segmentación mediante el filtrado de direcciones IPs y puertos, o llevando a cabo DPI (Deep Packet Inspection) sobre protocolos industriales tanto propietarios (S7, FINS, etc.) como estándares (OPC UA, Ethernet/IP, IEC-104, etc.).

No obstante, a nivel de dispositivo, o sistema, también deben llevarse a cabo controles de acceso para restringir qué o quién puede conectarse a ello y hacer tal o cual cosa. Más aún cuando los equipos ya presentan, y cada vez haya más interfaces y protocolos, para poder conectase a servicios o funcionalidades. Esto es, servicio web (HTTP; HTTPS), consola (Telnet, SSH), envío de copia de respaldo y programas por FTP, protocolos como OPC UA, etc.

Desde el punto de vista de la seguridad restringir, controlar, impedir o limitar que éstos se reduzcan a los mínimos imprescindibles, es básico. Con ello podremos reducir las posibilidades de que algo o alguien puedan hacer cambios tanto de manera intencionada como no intencionada que puedan alterar la normal operación o realizar cambios con unas u otras consecuencias. También recolectar información sobre los dispositivos finales bloqueando los comandos correspondientes.

A diferencia de los entornos IT, el uso de control de acceso físico está, y estará muy extendido. Esto es el uso de llaves o mecanismos que requieran cambiar de un modo a otro que permitan la realización de cambios de forma remota o también local. Esto es algo que podemos encontrar en CPUs de PLCs de Schneider Electric, Siemens o Allen Bradley. Sin embargo, no son los únicos, controladores de robots también pueden tenerlo como es el caso de los ABB con los selectores de Automático, Manual o Manual 100%.

Saliendo de los controladores, también los HMIs, PCs industriales con uno u otro uso, pueden incorporarlo. Como puede ser el caso de llaves que tras introducirlas en un lector permiten la realización de tareas en función del perfil en ellas incluidas. Ejemplo de ello puede ser Euschner o Pilz entre otros.

Pero también, y como ya estamos acostumbrados, podemos realizarlos de manera lógica. Esto es, introduciendo un usuario/contraseña, PIN, etc. Sin embargo esto no es suficiente, ya que debe determinarse que puede hacerse sobre el equipo. Es decir que una vez validado, que las capacidades no sean ilimitadas.

Por tanto, aquí entran en juego dos conceptos, aunque obvios para Tecnologías de Información, no lo es tanto cuando los aplicamos a las de Operación. Estos son, Autenticación y Autorización.

Entendemos por “Autenticación” el proceso por el que se comprueba una identidad a través de alguna credencial como puede ser una contraseña; un usuario y contraseña; un código numérico; certificado digital; etc.

Mientras que “Autorización” hacemos referencia a los permisos o privilegios que dispondrá una persona, software, o activo en general una vez que el proceso de autenticación se ha realizado con éxito. Estos niveles deben estar relacionados y  en consonancia con el rol que tenga una persona dentro de la organización para determinar lo que puede o no hacer. Por ejemplo, no es lo mismo las capacidades que pueda tener un Jefe de un equipo de Mantenimiento a un técnico especialista que se debe circunscribir a los equipos que son de su ámbito.

Esto extrapolado a la Ciberseguridad Industrial podrían ejemplarizarse, en el caso de la “Autenticación” en quién o qué puede conectarse a un equipo; quién puede tener acceso a un proyecto de un PLC; quién puede iniciar sesión en una Workstation; etc. Y en el caso de la “Autorización” si se puede escribir una variable o simplemente leerla; si puede visualizarse el estructura del programa de un PLC y no modificarse; o si desde un HMI puede resetearse una alarma y re armar la estación tras un fallo.

En las siguientes imágenes podemos ver el acceso. a la interfaz web de un PLC SIEMENS S7-1200 donde en el primero de los casos nos validamos correctamente, es decir nos autenticamos. En ella además podemos ver cómo incluso podríamos llevar a cabo una parada de la CPU, arranque o encender los leds.

Mientras que si definimos un usuario con menos privilegios podríamos no permitir la parada de la CPU, el arranque o encender los leds. Las posibles opciones quedan determinados en las opciones de la derecha.

Esta comprobación de una identidad puede hacerse bien de forma local o remota. Es decir, si las credenciales son comprobadas en el mismo equipo, aplicación, sistema o componente o si por el contrario se acude a un sistema externo como un servidor como Active Directory, LDAP, RADIUS o una solución comercial de un fabricante.

Por mi experiencia y, como norma general, estas comprobaciones en entornos industriales se realizan de manera local siendo las menos de manera centralizada, dependiendo de qué estemos hablando. Si es un PC de operador o de visualización que posee un sistema operativo de propósito general; si hablamos de un mini PC que administra una estación; un PLC; un HMI; etc. Etc.

Aunque hablemos de sistemas operativos de propósito general como Microsoft Windows o GNU/Linux hemos de tener en cuenta uno de los aspectos diferenciadores y es su ciclo de vida, mayor que los y entornos IT. Esto puede condicionar la forma en la que las nuevas funcionalidades o mejoras que presenten los mecanismos de Autenticación y Autorización dentro de las diferentes versiones de sistemas operativos o firmware. Por ejemplo, si tenemos un puesto de operador con Windows 7 y lo queremos integrar en un dominio con un controlador Windows Server 2019; o bien disponemos de un equipo con una versión GNU/Linux Debian y empleemos SAMBA.

Como vemos resulta necesario establecer los Controles de Acceso necesario, no sólo a nivel de red sino sobre los equipos finales a través de alguna de sus funcionalidades. Adicionalmente no vale sólo con establecer el control sino determinar qué cosas pueden realizarse. De nada no sirve establecer un usuario y contraseña si luego ese usuario tiene permisos administrativos cuando no debería tenerlos.

En próximas entradas pondremos algunos ejemplos sobre cómo podemos poner en práctica estas cuestiones sobre distintos ámbitos en tecnología OT.

¡Nos vemos en la siguiente!

KICS for Nodes, Parte V

Poniendo un ejemplo práctico, en el equipo donde hemos realizado el inventario tenemos un ejecutable de “Anydesk”, aparte de SIEMENS TIA Portal v13, Schneider Electric. Este software es común emplearlo para posibles asistencias remotas tal y como sucede con otros como Teamviewer.

En este caso, hemos denegado explícitamente su ejecución por lo que una vez aplicada la política en modo “Active”, podremos ver cómo no podremos utilizarla.

Si en ese entonces queremos utilizar «Anydesk» el comportamiento en el equipo final sería el siguiente. No se ejecuta sino que además nos indica un mensaje.

Y se generaría un registro en la consola de KSC.

En cambio, si lo hubiéramos en configurado el modo de operación en “Statistics Only” sí que podríamos pero hubiéramos generado un log al respecto.

Pero en el supuesto que alguien quisiera instalar nuevo software como por ejemplo Mitsubishi GX Works3, KICS for Nodes tampoco permitiría hacerlo, generándose el siguiente mensaje y registro en la consola de KSC, Kaspersky Security Center.

No obstante, sobre aquellos logs generados la herramienta nos da la posibilidad de poderlo incorporar a la “Whitelist”, exportando el contenido del mismo en un fichero de texto, .txt.

Esto es especialmente útil si lo que queremos es crear desde cero una política, es decir, sin crear el inventario del que hablábamos en «KICS for Nodes IV».

En ese caso podremos identificar dónde se almacena la aplicación y denegarlo expresamente. Sin embargo, esto puede no ser efectivo. En este caso «AnyDesk» está ubicado en el escritorio pero si copio en otra carpeta como «Mis Documentos» podría ejecutarlo ya que la ruta es diferente.

Para ello deberemos ir a la configuración de reglas y seleccionar importar un fichero a partir de los logs.

Y seleccionar el fichero que previamente hemos exportados desde KSC, Kaspersky Security Center.

Sin embargo el criterio ahora no es tanto la ruta sino la información contenida en el certificado con el que se ha firmado el software.

Por lo que independientemente  de dónde esté el ejecutable de «Anydesk» éste no se podrá ejecutar.

Así pues, esta es la forma en la que trabaja una solución de protección de PCs industriales basado en estrategia de Whitelisting. El concepto es sencillo, listo lo que tengo en PC y luego permito aquello que considero necesario. Además algunas soluciones permiten complementar esta funcionalidad con otras. como antivirus, Firewall, etc. En el caso de KICS for Nodes podéis encontrar la descripción aqui. Esto dependerá del producto elegido.

Cabe mencionar que cuanto más granularidad o a más bajo nivel queramos llegar, más labor de gestión deberemos llevar a cabo. Hay que buscar un equilibrio…

Espero que os haya sido de utilidad, nos vemos en la siguiente!

Un saludo!