BACnet, fundamentos de un protocolo para la gestión de edificios

A menudo nos centramos en materia de Ciberseguridad haciendo referencia a aquellos equipos y sistemas que intervienen en los procesos productivos o entornos de control y automatización. Sin embargo, las fábricas no sólo son PLCs, HMIs, Workstations, sensores u actuadores. Dependiendo de la actividad y el tamaño, cuentan con otros elementos que también contribuyen a que se garantice la disponibilidad de la que tanto hemos hablado. Me refiero a sistemas de refrigeración, extinción de fuegos, climatización, montacargas, etc. los cuales pueden ser gestionados por medio del protocolo BACnet.

Habitualmente los vemos referenciados en los denominados “Edificios Inteligentes”, sin embargo, su uso ni es exclusivo de ellos ni es algo relativamente nuevo. La gestión de edificios viene dada por las siglas BMS, Building Management Sistem debiéndose distinguir, entre edificios de viviendas o edificios industriales. En general, los sistemas BMS integran un conjunto de subsistemas encargados de los sistemas de control de iluminación, antincendios, alarmas, elevadores, ventilación, temperatura, etc. Si bien muchos de ellos son comunes a ambos entornos no podemos decir que son similares ya que las aplicaciones y alcance son distintos.

Ahora bien, al igual que PLCs, HMIs, y demás dispositivos, estos sistemas han de comunicarse entre sí para su propio funcionamiento y gestión. En este sentido, uno de los protocolos empleados es BACnet, Buiding Automation Control Network. Desarrollado en 1987, ha sido un ANSI e ISO estándar desde 1995 y 2003, respectivamente. Aunque su mantenimiento es continuo, el propósito de BACnet es proporcionar interoperabilidad entre sistemas y dispositivos en aplicaciones de control y automatización de edificios, mediante un protocolo de comunicaciones estándar.

Al igual que muchos otros, cada dispositivo BACNet es una combinación de hardware y software, encontrándolo como norma general en forma de controlador, pasarela o interfaz de usuario. Cada uno de ellos dispone de un identificador o número de instancia único que lo identifica y diferencia de los existentes en la red aparte de otros con información relativa a las entradas y salidas que  monitoriza y controla.

Dentro de BACnet podemos encontrar 3 conceptos claramente diferenciados, Objetos, Propiedades y Servicios.

Toda la información contenida dentro de un dispositivo BACnet es ordenada como objetos, el cual le convierte en un protocolo orientado justamente a esto mismo, a objetos. Cada Objeto” representa un componente del propio dispositivo o un conjunto de información que puede ser solicitada por otro a través de medios como Ethernet, IP, RS-485, etc.

El protocolo define un total de 54 tipos de objetos para los usos más comunes cubriendo así la mayoría de las necesidades. Sin embargo, da la posibilidad de crear otros nuevos para no interferir sobre aquellos usos más concretos o aplicaciones propietarias.

La imagen muestra la arquitectura e interoperabilidad entre los distintos elementos que definen el funcionamiento del protocolo para la gestión y automatización de edificios BACnet.

Arquitectura e inteoperabilidad en BACnet

 

Cada objeto tiene un identificador de 32 bits el cual contiene un código para el tipo de objeto y el número de instancia de dicho objeto.

Con independencia del propósito o función, cada “Objeto” posee un conjunto de “Propiedades”. Cada una de ellas contendrá dos partes, un identificador y un valor. El identificador son números que la definen de forma única en el ámbito del tipo de objeto; y el valor, la magnitud del mismo. Luego, dicha información podrá ser tanto de lectura como de y escritura.

Si unificamos ambos conceptos, podemos decir que cada “Objeto” incluyen “Propiedades” que determinan sus capacidades, operación e información asociada.

Como hemos dicho anteriormente los dispositivos interactúan entre sí para su operación. Cuando un equipo se comunica con otro para llevar a cabo una determinada acción, lo hace a través de los denominados “Servicios”. Los servicios son agrupados en 5 categorías según su funcionalidad:

  1. Object access (lectura, escritura, creación, borrado)
  2. Device management (descubrimiento, sincronización horaria, inicialización, copia de respaldo y restauración)
  3. Alarm and event (alarmas y cambios de estado)
  4. File transfer (Tendencia de datos y cambio de programa)
  5. Virtual terminal (interfaz hombre-máquina por medio de menús o similar)

Cada dispositivo envía las peticiones empleando mensajes convenientemente estructurados tanto en la pregunta como en la respuesta. Los mensajes son codificados en un stream numérico definiendo las funciones que deben llevarse a cabo.

Para que dichos mensajes puedan enviarse y recibirse, se establecen varios medios de transporte, los cuales se citan a continuación:

  1. BACnet/IP
  2. BACnet ISO 802-3 (Ethernet)
  3. BACnet MS/TP (Master-Slave/Token Passing)
  4. BACnet over ARCNET
  5. BACnet Point-to-Point (EIA-232 and Telephone)
  6. BACnet over LonTalk Foreign Frames
  7. BACnet over ZigBee

Cada uno de ellos son una combinación de capas Físicas y Enlace de Datos. Sin embargo, el mensaje BACnet es independiente del medio empleado pudiendo existir a su vez pasarelas referenciadas como “Routers” que puedan combinar cada uno de los medios. No obstante, serán los dos primeros los que reclaman más nuestra atención ya que proporcionan integración con redes tradicionales.

BACnet/IP proporciona conectividad a nivel de capa 3 pudiendo ser los equipos accesibles desde distintas redes IP. Cuando este medio es empleado con múltiples subredes, es necesario el uso de una funcionalidad especial denominada BBMD, Broadcast (Management Devices), equipo empleado para administrar los mensajes broadcast entre subredes. Éste recoge dichos mensajes y los redistribuye a otro BBMD ubicado en otra red mediante mensajes unicast.

Mientras que, BACnet ISO 802.3, similar al anterior, pero limitando las comunicaciones a nivel de capa 2.

Ahora bien, teniendo en cuenta los conceptos acerca de dispositivos, objetos propiedades, servicios y la forma en la que transmitir los mensajes, BACnet proporciona capacidades funcionales las cuales son denominadas como “Interoperability Areas”.  Existen un total de 5:

  1. Data Sharing, intercambio de información entre dispositivos. Lo mensajes pueden ser priorizados en función de su propiedad, además de ser de lectura o lectura/escritura.
  2. Trending, visualización de los valores recogidos y graficados para determinar tendencias.
  3. Scheduling, programación de tareas a ejecutar en momentos o intervalos concretos.
  4. Alarm & Event Management, intercambio de información relativo a alarmas o eventos.
  5. Device & Network Management, permite el descubrimiento de dispositivos, objetos dentro de ellos, establecimiento y reconexión en caso de caída de comunicación, sincronización horaria y reinicio.

Estas áreas están definidas dentro de BACnet como BIBB, “BACnet Interoperability Blocks”.

Puesto que BACnet es un estándar, los distintos fabricantes de equipos deben garantizar que sus productos soportan ciertos requisitos para poder operar unos con otros. Para ello, deben cumplir con lo definido en lo que se denomina “Protocol and Implementation and Conformance Statement”, PICS; una ficha técnica con distinta información y entre ella, los distintos BIBB soportados para que puedan ser comparados y garantizar su funcionamiento.

Es importarte resaltar que los mensajes pueden ser dotados de una “Prioridad” dependiendo el tipo de mensaje y la información que transporta. Se definen un total de 16, siendo las dos primeras relativas a cuestiones de “Safety”, “Manual Life-Safety” y “Automatic Life-Safety”.

Hasta aquí la presentación de los conceptos básicos de BACnet. Un protocolo con unas características específicas para entornos concretos. Como decía, es importante remarcar que su uso puede no estar necesariamente asociado a edificios de viviendas sino también a entornos industriales. Éstos también disponen de sistemas de refrigeración, sensores de humos, montacargas, etc. dependiendo, claro está, del tamaño y la actividad. Podrán almacenar productos químicos que deban ser almacenados bajo unas condiciones de temperatura determinada; entornos donde la calidad del aire deba ser única debiendo accionarse los sistemas de ventilación bajo unas circunstancias concretas; controlar la iluminación de un pabellón en distintas franjas horarias, entre otras muchas. ¿Alguien se imagina los efectos que pudiera tener si algo o alguien, pudiese alterar a las dos de la madrugada la iluminación de parte o toda una nave de producción y los operarios no pudiesen trabajar? Y peor aún, cómo o porqué se genera esa situación si no se puede acotar la causa que lo origina. No estamos hablando de un hecho con unas consecuencias graves, pero sí con impacto sobre la actividad de la propia empresa.

Un saludo a todos, nos vemos en la siguiente y no te olvides que puedes seguirnos también en @enredandoconred .

Defensa en Profundidad, breve repaso…

Desde hace varios años hemos ido viendo como en los entornos IT se ha venido aplicando el concepto de “Defensa en Profundad” cómo modelo para garantizar unos niveles de seguridad aceptables en nuestros sistemas e infraestructuras. El mismo, consiste en implementar distintos controles y barreras con el fin de frenar la actividad de un usuario o software malicioso. De esta manera, la explotación de una vulnerabilidad, o debilidad, no compromete a toda la organización.

El primer paso es disponer de un inventario exhaustivo y actualizado de los equipos, tecnologías y aplicativos. No podemos pretender proteger nuestros activos si no sabemos cuántos y de qué tipo tenemos. Luego definiremos la importancia y criticidad que tienen para nuestra empresa y llevaremos a cabo una evaluación riesgos que nos permita establecer un plan de diseño para asegurarlos. Finalmente, en función de esto último, consideraremos las mejores medidas tanto humanas como técnicas para alcanzarlo.

Así pues este modelo de “Defensa en Profundidad” quedaría resumido gráficamente de la siguiente manera:

Defensa en profundidad

En primer lugar nos encontramos con los Procedimientos y Políticas de seguridad propias de la organización. Éstas se apoyan en los Estándares ya establecidos, pero además hay que sumarles los Roles que cada responsable acaparará dentro de la empresa.

La seguridad física la definimos como la barrera que impide a un usuario acceder in situ al sistema en cuestión, y que requiere algún tipo de identificación. Sin embargo, no es la única medida. Por ejemplo las cámaras de video vigilancia o personal de seguridad son otras de ellas.

La seguridad perimetral es la encargada de proteger la primera línea en cuanto a las comunicaciones se refiere, siendo los cortafuegos el equipamiento por excelencia. La diversificación de los ataques los han hecho evolucionar incorporando cada vez más características. Considerar IPs y puertos de origen y destino, son insuficientes para atajar las amenazas actuales. Hoy en día tenemos que hablar de los NGFW (Next Generation Firewall) que disponen de funcionalidades como filtrado a nivel de aplicación, Deep Packet Inspection, motores antivirus, IDS/IPS, Sanboxes, VPN, entre otras. NIDS (Network Intrusion Detection System) es otro de los dispositivos que nos podemos encontrar y que pueden estar instalados como equipos dedicados.

Una vez en la red interna nos encontramos con distintas medidas. Una de ellas es la de separar el tráfico mediante VLANs, de tal manera que quede acotado a un único segmento lógico. Luego a nivel de capa 3, las ACLs pueden ser un gran aliado de tal manera que sean los propios equipos de red los que permitan o denieguen cierto tipo de comunicaciones antes de llegar a los firewalls. La seguridad en puerto y un NAC (Network Access Control) son otras de las medidas a tener en cuenta.

Ya en los equipos finales son varias las medidas. La primera la situamos en el control de acceso. La implementación de un Directorio Activo nos facilita mucho las tareas, aunque dependiendo el entorno a veces la autenticación local es la máxima solución con la que podremos aspirar. A él hay que sumar el bastionado del sistema mediante la implementación de parches, limitar el uso de aplicaciones y reducir servicios a los estrictamente necesarios. Algunas de estas soluciones incorporan la capacidad de limitar el uso de dispositivos USB y evitar así que cualquier usuario pueda conectar el suyo propio con el riesgo que esto entraña. A diferencia de los NIDS, aquí dispondremos de los HIDS, esto es funcionalidades IDS/IPS a nivel de host para detectar cualquier intento de intrusión. Finalmente, las soluciones antivirus, que visto lo visto hay quienes demuestran y aseguran que pueden llegar a ser poco efectivos. Ver esta entrevista a Joxen Koret.

A nivel de aplicación deberemos centrarnos en la programación segura de las aplicaciones y evitar así errores en el código que permitan a un exploit aprovechar vulnerabilidades y llevar a cabo distintos tipos de ataques. El uso de protocolos para el cifrado de las comunicaciones es  otra buena medida para proteger la transmisión de datos por la red. También es significativo la configuración de las mismas, debemos evitar las configuraciones por defecto, y que se ejecuten sólo con aquellos permisos y recursos necesarios para su operativa.

Finalmente encontramos al dato en sí mismo. Aquí garantizar su integridad, confidencialidad y autenticación es primordial. Como barrera podremos encontrarnos con soluciones de Data Loss Prevention con el fin de que los datos puedan ser extraídos de los sistemas que los albergan y perder el control sobre los mismos. Por supuesto hemos de tener en cuenta el uso de algoritmos robustos. De nada nos sirve cifrar la información si luego empleamos métodos que son fáciles o relativamente fácil de romper.

De esta manera hemos hecho un rápido repaso al concepto de “Defensa en Profundidad”, eso sí, en entornos IT. Sin embargo, ¿es aplicable a un entorno OT? ¿Un entorno industrial tiene las mismas necesidades de protección?

Esta y otras respuestas las dejamos para sucesivas entradas. ¡Nos vemos en la próxima!