Automatización de bajo coste

Fecha de publicación 22/03/2018
Autor
INCIBE (INCIBE)
Automatización

El consumo de energía y la seguridad son las preocupaciones más importantes para los diseñadores de sistemas integrados, pero el coste y la funcionalidad de los equipos también han de tenerse en cuenta. Por eso, las soluciones tecnológicas de bajo coste basadas en hardware libre se están haciendo cada vez más importantes en el IoT y la industria 4.0.

Además de las limitaciones energéticas, muchas aplicaciones también tienen requisitos de almacenamiento y comunicaciones seguras. El registro de datos, la carga de ficheros desde recursos externos (memorias, USB, etc.) o el envío de información a través de algún medio de comunicación requieren de cifrado para proteger la integridad. Es por ello que cada vez aparecen más microcontroladores con capacidades de cifrado hardware, reduciendo la sobrecarga del software, incrementando la seguridad y rebajando el consumo. Como ejemplo, el cifrado AES mediante hardware es unas 10 veces más rápido que el software, con las ventajas que eso conlleva.

Estos microcontroladores son incluidos en los denominados ordenadores de placa única (Single Board Computer - SBC), donde Arduino y Raspberry Pi son los máximos exponentes.

Diferentes modelos de SBC

-Diferentes modelos de SBC-

Raspberry y Arduino en la industria

Muchos sistemas de tipo SBC se están incorporando a la industria para diferentes tareas, principalmente para formación, por la versatilidad y el ahorro de coste que ofrecen. Su hardware no está especialmente pensado para funcionar en las duras condiciones de un entorno industrial, pero si existen soluciones basadas en SBC que sí son capaces de soportar el ruido eléctrico, las vibraciones o las condiciones de humedad y se pueden encontrar cualquier tipo de proceso industrial.

Arduino y Raspberry son, por su simpleza, facilidad de uso e internacionalización del producto, los principales soportes utilizados para crear estos dispositivos orientados a la industria.

Los usos de estos dispositivos aumentan en número a la par que aumentan las placas de expansión para ellos. Cada vez existen más sensores, y con más precisión; nuevos conectores de comunicaciones, soporte para más protocolos industriales, nuevos periféricos. Y todo ello sumado a la gran comunidad que se encuentra desarrollando nuevas funciones gracias al uso de software libre y la facilidad para compartir proyectos.

Protocolos nativos para sistemas de bajo coste

El propio hardware de estos dispositivos no permite la comunicación en muchos protocolos habituales en los sistemas de control, pero a través de hardware extra o de cierto software es posible añadir estas capacidades.

La Raspberry es la placa más versátil, puesto que al poder llevar un sistema operativo comercial (Linux) tiene más posibilidades de incluir librerías y módulos software para incorporar nuevos protocolos. Así, Raspberry es capaz de utilizar casi cualquier protocolo basado en Ethernet dependiendo del software instalado. Entre los protocolos disponibles destacan:

  • DNP3
  • POWERLINK
  • EtherCAT
  • Modbus / Modbus TCP
  • ProfiNET
  • OPC UA
  • Ethernet/IP

Funcionamiento de Raspberry en sistemas de control

-Ejemplo de funcionamiento de Raspberry en sistemas de control-

Las placas Arduino tienen más problemas, ya que sus capacidades de programación son limitadas. No obstante, también se han incorporado un gran listado de protocolos, destacando:

  • OPC
  • Modbus
  • EtherCAT
  • I2C
  • SPI
  • S7
  • CAN bus

En este caso, la gran mayoría requiere de hardware adicional, y muchos de ellos están pensado para ser utilizados por comunicaciones serie, RS232 o RS-485.

De todo el listado de protocolos mostrado, excluyendo a OPC UA, ninguno de los protocolos aporta seguridad. Se trata de protocolos antiguos, muy simples la mayoría de ellos y destinados a facilitar la comunicación y optimizar las transmisiones que no tuvieron a la seguridad en mente a la hora de su desarrollo.

Bastionado de Raspberry

Ya que no es posible mejorar los protocolos que utilizan estos dispositivos para ser utilizados en entornos industriales, al menos hemos de asegurar que el propio dispositivo sí ofrece seguridad en el acceso al sistema operativo. En este caso nos centraremos en Raspberry, puesto que Arduino no cuenta con acceso al sistema.

Raspberry, utilizado de manera habitual con sistemas Linux, ofrece dos versiones en su propia web. De ellos, el más recomendando para utilizar con las librerías y software destinado a sistemas industriales es la distribución Raspbian. Las recomendaciones de seguridad para este sistema son:

  1. Cambiar la contraseña por defecto del sistema. De esta forma se deshabilita el acceso automático al sistema operativo, que podría ser aprovechado para visualizar información desde una pantalla conectada a la Raspberry y realizar acciones en el escritorio de Raspbian.
  2. Deshabilitar hardware no necesario. Para poder utilizar las entradas y salidas de las que dispone el hardware, hemos de habilitar los puertos como SPI o GPIO, pero si se va a utilizar como un HMI o solo va a utilizar comunicaciones Ethernet hay que deshabilitar todos estos otros puertos.
  3. Eliminar software accesorio. Como Raspbian es una versión de Linux, dispone de muchos servicios que no tienen por qué ser útiles en la nueva función del hardware. Estos servicios incluyen FTP, MySQL, aplicaciones ofimáticas, etc., que deben desinstalarse o deshabilitarse.
  4. Cambiar los puertos por defecto de los servicios de gestión del dispositivo. Los programas SCADA integrados suelen comunicarse mediante SSH, por lo que es conveniente cambiar la contraseña del servicio e incluso cambiar el puerto por defecto del servicio.
  5. Instalar y configurar iptables. La ventaja de ser un sistema Linux es que permite habilitar el cortafuegos que va integrado en el sistema operativo. De esta forma se puede proteger la información que entra y sale del dispositivo.
  6. Activar el log. De esta forma será posible comprobar los accesos satisfactorios y los fallidos. Si es posible, enviar los mensajes generados fuera del dispositivo a un sistema centralizado, evitando que el hardware se quede sin espacio de disco.
  7. Mantener el sistema actualizado. No será una tarea sencilla cuando se integre en una red industrial, pero automatizar las actualizaciones mediante el uso del servicio cron o cron-apt permitirá que el sistema se mantenga libre de errores.

Ejemplo: CoDeSys para Raspberry Pi

CoDeSys es uno de los SCADA más importantes a nivel mundial, y ha desarrollado un paquete para poder utilizar los dispositivos Raspberry PI como si se tratasen de PLC.

Para realizar las pruebas de esta solución hemos implementado la que se muestra en la imagen siguiente en un entorno controlado. En este caso, la Raspberry hace las veces de HMI, encargándose de recoger los datos provenientes del Esclavo ModBus y ofreciéndoselos al operador mediante una página web; pero también podríamos haber utilizado directamente la Raspberry como un PLC y capturar las señales de sensores y actuadores utilizando sus puertos de comunicaciones GPIO, SPI, etc.

Montaje de Raspberry para configuración con CoDeSys

-Montaje de Raspberry para configuración con CoDeSys-

En esta ocasión, no nos interesaba la seguridad de los protocolos industriales que permite utilizar, de los cuales ya se han comentado en numerosas ocasiones sus debilidades, sino la seguridad que requiere la Raspberry y la comunicación con la estación de ingeniería para disponer de una programación.

Estos paquetes se gestionan desde el sistema de desarrollo (CODESYS Development System) ubicado en la estación de ingeniería. Desde aquí es posible realizar la instalación del paquete en un dispositivo Raspberry PI accesible por red, la carga e instalación, así como posibles actualizaciones; las acciones anteriores se realizarán a través de SSHv2. Para esta comunicación es necesario configurar la dirección IP de destino y las credenciales de acceso al SSH, y utilizará dos sesiones para instalar el paquete.

Configuración de IP SSH

-Configuración de IP y credenciales para la comunicación mediante SSH-

Wireshark

Muestra de tráfico SSH durante la instalación del paquete en la Raspberry

-Muestra de tráfico SSH durante la instalación del paquete en la Raspberry-

Ahora ya solo queda crear el proyecto y la programación correspondiente y cargarlo en la Raspberry. El desarrollo del proyecto se hace en local, seleccionando los protocolos a utilizar, añadiendo variables e incluso con la opción de desplegar un HMI. Este proyecto se carga de nuevo mediante comunicación UDP.

Carga de proyecto nuevo en la Raspberry

-Carga de proyecto nuevo en la Raspberry-

Durante la fase de test, la Raspberry y el centro de desarrollo se comunican mediante paquetes UDP. Esta comunicación ha de realizarse en un entorno controlado puesto que no existe seguridad en la misma.

El HMI es publicado en la Raspberry, a través del puerto 8080. Por defecto, el programa no obliga a incluir control de accesos ni cifrado de las comunicaciones (HTTPS), por lo que hay que valorar adecuadamente qué posibilidades se van a ofrecer desde este recurso.

El control de acceso debe implementarse durante la programación, la configuración de la comunicación se hace a través de ficheros de configuración dentro de la propia Raspberry.

Cuadro de Login

-Cuadro de Login para insertar a visualizaciones en CoDeSys-

Cambios en la configuración del servidor para añadir seguridad al HMI

-Cambios en la configuración del servidor para añadir seguridad al HMI-

Como resumen, la siguiente tabla recoge las medidas a aplicar para elevar el nivel de seguridad y asegurarse que una Raspberry Pi utilizada como PLC dispone de la protección suficiente y garantizar que la programación existente es la enviada desde la estación de ingeniería.

Medidas de seguridad

-Medidas de seguridad-