Ciberseguridad IoT: Cómo instalar dispositivos IoT seguros
Seguramente hayas leído sobre IoT y sobre Ciberseguridad pero… ¿Has visto o palpado la realidad de estas materias?
Son muy pocas las personas que trabajan en un proyecto de IoT en toda su extensión, desde el proyecto hasta la instalación y blindaje del mismo. Soy uno de los afortunados de dominar todas las tecnologías implicadas y que se encaja en lo que yo defino como un #QuantumHacker (si no has visto mi conferencia de “QuantumHacker: más allá de la Ciberseguridad), ¿A qué esperas?
En éste artículo hablaremos sobre las medidas que han de ponerse en práctica en una instalación de dispositivos IoT. ¡Vamos allá!
Índice
El edificio
Se trata de un inmueble de 5 plantas, lo que en Ingeniería llamamos «singular» (al final no hay una construcción estándar, todas tienen sus peculiaridades que las hacen únicas), de oficinas, situado en un pueblecito de mi provincia. Tiene centralizados el servicio de limpieza y vigilancia (con personal físico in situ); la electricidad se abona por superficie, ya que no hay contadores individuales. Sí hay techo y suelo técnico (esto significa que se pueden pasar conductores por arriba y por debajo, no hay que liar lo más grande… Menos mal). Es un centro multiuso, uno más entre los millones que se dedican a ello, existentes en toda la geografía española. Originariamente estaba concebido para una sola empresa pero cuando llegaron las vacas flacas todo cambió…
Lo han particionado en oficinas con acceso independiente, y cada inquilino contrata su conexión a Internet con el que quiera; la climatización era centralizada pero con el tiempo se fueron averiando fancoils y con la partición de salas en despachos individuales se anularon muchos, con lo que los inquilinos afectados optaron por instalar sus propios equipos de climatización…
Los problemas
Los dueños del edificio están comprometidos con los ODS (Objetivos de Desarrollo Sostenible), y hay algunas cuestiones que les queman:
- Al no tener contador eléctrico de cada oficina, la facturación del consumo se realiza por superficie alquilada. Es una burrada porque algún inquilino hay que tiene un aparato que consume la mitad de la factura, mientras los demás, no.
- Tienen una pérdida térmica increíble por las ventanas, que las dejan abiertas porque hace demasiado frío o calor por aquellos que aún continúan con la climatización centralizada, aparte del riesgo de robo en las plantas inferiores. Los vigilantes pueden acceder a todos los recintos (siempre que estén autorizados), y gran parte del tiempo se entretienen en estar cerrando ventanas (que además son oscilobatientes y pueden estar entreabiertas).
- Los que poseen climatizadores propios, tienen el problema del agua del split, que no puede ser tirada a la calle, por normativa (y han puesto algunas multas), con lo que recurren a garrafas de 8, 10, 15 e incluso 50 litros donde la almacenan… Pero se les olvida mirar cuando están llenas y termina llenándose el recipiente, derramándose el agua, con el consiguiente riesgo para las instalaciones, el mobiliario, el suelo…
Como complemento a la videovigilancia tienen detectores de presencia conectados a una central de alarma que dejó de funcionar en el siglo pasado, en su día era el no va más pero la caja como mucho sirve de pisapapeles (si la consigues descolgar del muro de hormigón, claro).
La propuesta
“Demasiados problemas simultáneos, seguro que se quedan con 5 más en el tintero”, le comento a la persona que me lleva, por primera vez, a ver el inmueble. Se le ha olvidado decirme unas cuantas cosas más:
- Uno de los dueños del edificio, tiene una planta entera la cual está alquilada a una empresa. Me cuentan que, en invierno, no saben por qué, se le cae media intranet, echando a todos los equipos del dominio; que hay días que pueden imprimir, otros que no, y no saben por qué.
- Tienen detectores de incendios repartidos por todo el edificio, pero desde el año de la Polca no funcionan. No detectan nada, pero es que además hay detectores de humo y están tan de adorno como los Moái, las estatuas de la Isla de Pascua.
- Existen unas puertas contraincendios, divisoras de secciones, por todo el edificio. Llevan un motor eléctrico «controlado por ordenador», sí, un Pentium 75 de cuando San Pedro perdió la zapatilla, que no funciona ni lo hará.
- El edificio, originariamente, se concibió sin persianas. Quizás por las localizaciones del norte de España sea lo normal, pero en el sur, si no se las pones, literalmente “fríes” el contenido de las estancias. Hace algunos años alguien cayó en la cuenta y colocó lamas motorizadas, pero claro, se le olvidó poner la línea de alimentación eléctrica (y si esa no está, la de control menos). Los de mantenimiento apañaron los motores para que se pudieran abrir a mano, pero al final, están colocadas en una posición fija y así llevan ya 15 años.
- Me comentan algo de videocámaras, que han instalado una serie de ellas pero que funcionaron al principio y después dejaron de funcionar. No son capaces de decirme cuándo o qué ocurrió.
Lo que no sé es cómo lo tienen lleno… Lo mismo los promotores son de esas personas que nacen con estrella y no estrellados, jaja.
Se les plantea sectorizar el edificio, identificando todos los problemas y dándoles una solución global. Se presenta el presupuesto, dejando muy claro que “cualquier modificación del mismo duplicará su importe”.
Ya podéis imaginar qué pasó: había más problemas, y no sólo se duplicó ni triplicó, sino que se cuadriplicó la solución (y el importe) de todo.
La ejecución.
Tenemos circuitos eléctricos, de red, de videocámaras, de todo tipo de sensores, repartidos por todo el edificio. Hay muchas formas de plantear el sistema, pero la experiencia manda porque la época de los errores ya ha pasado.
Como decimos los ingenieros, vayamos por partes, como las integrales.
En el pasado, he utilizado el bus RS-485 (2 hilos de datos, 2 hilos de alimentación), pero eso hoy día, gracias a las redes de comunicaciones, está superado. No se emplearía nada inalámbrico, excepto algún lugar insalvable físicamente, por lo que se cablea el edificio entero con cable de red de categoría 6: intercomunicando las plantas para tenerlo todo centralizado en un servidor, el cual almacenará toda la información que recojan todos los sensores que se van a instalar.
Hay que decir que provengo de una “tradición” en la que, si bien se analizan todos los dispositivos existentes en el mercado, los buses de comunicaciones, etc., prefiero no vincularme a ninguno en concreto, ya que he tenido la desagradable experiencia de confiar en un sistema y obligarme a tener, además, luminarias de la misma marca, por ejemplo (con precios que se salían de cualquier presupuesto), a menos claro está que deje libertad de programación, control y blindaje.
Redes de telecomunicacion
Existen unas 15 oficinas por planta. Se coloca un switch (distribuidor de red algo más inteligente que un concentrador) de 24 puertos de 10/100/1000 Mbits en cada planta, en ubicaciones no accesibles, con líneas independientes que se centralizan con otro switch junto al servidor. Los querían conectar por fibra pero me parecía que era como comprarse un Lamborghini para circular por las calles del Albaizýn (Granada)… Nada, el RJ45 de toda la vida va “sobrao”. Se coloca en el centro de cada planta, y prácticamente, salvo aquellas oficinas que están “remasterizadas” (había una sin ventana… ¿el cuarto oscuro para los que no pagan?), más alejadas del centro, a las demás se llegaba con holgura.
Red de sensores
Establecemos como unidad la “oficina”, compuesta por las siguientes características:
1 medidor de potencia
3 sensores de presencia
2 detectores de incendio y humos
2 actuadores de persianas motorizadas
2 split de climatización
- 2 microcontroladores para gobernarlos a todos (“y atarlos a las tinieblas…” Ale, deja de leer a Tolkien).
En otras palabras, se necesita medir analógicamente un valor, 5 mediciones de forma digitales e interactuar con 4 relés de potencia eléctrica.
Los medidores de potencia existentes en el mercado son, en su mayoría, analógicos, que miden por efecto Hall la corriente (los amperios, hablemos con propiedad) que circulan por el conductor. Existen 2 modelos principalmente, aunque mil fabricantes:
- El que no corta ningún cable eléctrico, sino que es una pinza que rodea al cable de fase y el propio movimiento de electrones, al conectarle una carga en un enchufe (cualquier dispositivo que funcione con electricidad), lo detecta y lo mide.
- El que sí corta el cable de fase, siendo totalmente invasivo, pero mucho más exacto que el anterior.
Al realizar una medición analógica, necesitábamos algún microcontrolador que fuese capaz de tratarla y enviarla. Nos decidimos por un clon del Arduino Uno, especialmente indicado por su precio, pero los hemos testeado en circunstancias completamente adversas y funciona exactamente igual que el original (es lo que tiene el Hardware libre, que cualquiera puede construir sus plataformas y funcionan iguales, pero a menor costo).
La plataforma de Arduino permite muchas funcionalidades, ampliables mediante unas placas denominadas «shields», y para nuestro modelo existe la posibilidad de conectar un puerto de red RJ45, pero este montaje puede suponer un riesgo para la Ciberseguridad de los dispositivos IoT (por ejemplo, al dotarle de cifrado de los datos, el microprocesador se calienta y al cabo de unas mediciones, deja de funcionar), con lo que se optó por conectarlo, a través del puerto serie, a un microordenador del estilo a la Raspberry Pi, la Orange Pi Zero.
¿Por qué esta configuración?
Es muy habitual estar al día de todo lo que se mueve con esta serie de dispositivos. La OrangePi Zero es un sistema parecido a la archiconocida Raspberry Pi, y este modelo tiene la peculiaridad del bajísimo consumo que tiene, tan sólo 0.6 amperios (A). Arduino, por su parte, consume otros 0.6 A, con lo que con un transformador de los que empleamos para cargar los móviles, perfectamente podemos suministrar la energía necesaria para que funcione el sistema, sin grandes consumos adicionales. Otras ventajas:
- La OrangePi, si se compra directamente a fábrica, sale por algo menos de 10 euros, mientras que en España ronda los 40 euros (+ IVA).
- Lleva Linux, con lo que podemos blindarla a placer, gracias a una versión personalizada de Debian.
- Al llevar este sistema operativo, podemos programarlo en lo que queramos: C, C#, Python…
- Si conectamos el Arduino con la OrangePi a través del puerto USB, nos quitamos de conexiones raras y, en caso de fallo, se puede sustituir fácilmente uno u otro.
- ¿Y por qué no utilizar una Raspberry Pi? Porque es un hardware demasiado potente, y ya hemos visto en algunas instalaciones que la gente se las lleva a su casa a hacer con ella reproductores de video. La Orange Pi ni siquiera lleva HDMI, con lo que las tentaciones son menores.
Ventanas
Antes he comentado que son oscilobatientes, es decir, puedes tener la ventana entreabierta o abierta, pero no las dos a la vez. Esto significa que han de colocarse sensores en ambas situaciones. Su nombre técnico es «conmutador magnético», y cada hoja de la ventana tendrá 2 unidades, uno para detectar que está entreabierta y el otro que detectará que está abierta.
Hay que cablear toda la distancia desde los sensores hasta donde se coloquen los microordenadores, nos pasamos semanas (hablo en plural porque si alguien piensa que una sola persona puede hacerlo, es casi imposible: o te ayudan, o mueres en el intento) “recorgaos” de los techos (no es broma cuando digo que ando «hablando con las lámparas», jaja).
Una vez que añadimos más estructura reforzada al edificio, que al ser hormigón armado ahora lleva cable de red Ethernet blindado y apantallado; tenemos todas las ventanas sensorizadas, los detectores de presencia, incendio, humos y de potencia eléctrica, conectamos el tándem Arduino-Orange Pi y vemos que está todo correcto.
Durante la ejecución del cableado, encontramos la solución al problema de la oficina que, sin saber por qué, se le desaparecía la mitad de la red: tenían los cables eléctricos mezclados con los de la red de datos, en la mitad física de la planta. Así, cuando en invierno conectaban las estufas, circulando alrededor de 10000W por cada conductor, la inducción eléctrica hacía una enorme interferencia en la transferencia de datos, sacando a todos los equipos de la red inmediatamente. Preguntamos por la persona que había tenido tan magna iluminación de disponer así los conductores y, cuando lo encontramos, nos miró como si fuéramos de otro planeta… No tenía ni idea. La excusa fue que no tenía canalizaciones suficientes, y como la de datos estaba libre…
Siempre he pensado que el lugar en el que uno vive es el más maravilloso del mundo, aunque pueda mejorarse o empeorarse, y donde vivo en la tierra tiene unas fantásticas temperaturas templadas con puntuales desequilibrios; también ocurre igual en una ciudad hermana en la que paso grandes temporadas, con ligeras variaciones más extremas, con lo que la electrónica se comporta peor si hace excesivo calor o frio intenso. Como ya me conoceréis por mi exclusivo “Temperaturizador”, adquirí para esta instalación un sensor muy peculiar, el GY-BME280:
Este sensor tiene la característica principal que devuelve digitalmente la temperatura, por medio de dos conectores, denominados SCL y SCA. Mide Temperatura, Presión y Humedad, con una exactitud de ±1 grado, ± 1Pascal y ± 3%, respectivamente. El rango de temperatura es entre -40 y +85 grados Centígrados, Humedad desde el 0 al 100%, y la presión entre 300 y 1100 hPa (hectoPascales). Suficiente para su precio (4 euros por unidad, en España sale a unos 10 euros cada uno).
Persianas
Las lamas motorizadas de las mismas funcionan a 220V, y se les colocó unos pulsadores individualizado para controlar manualmente su apertura y cierre, de forma que, si un vigilante quería cerrar el edificio entero a su voluntad, con hacer clic en un determinado botón de una aplicación, lo conseguía. El sistema actuaba durante el tiempo necesario para que las lamas se cerrasen o abriesen.
Para evitar sobretensiones, se diseñó el sistema con doble protección, es decir, 4 relés por persiana, en vez de los 2 que normalmente se emplearían.
No es oro todo lo que reluce
Si bien los propietarios del edificio tienen problemas, la resolución tecnológica tampoco está exenta de ellos:
- Por un lado, las Orange Pi Zero no traen conectores de fábrica, como ocurre con la Raspberry Pi, con lo que hay que soldárselos. Son 2 hileras de 13 pines cada uno, operación que se lleva, si eres experto con el soldador, con mucha paciencia y nuestra amiga la presbicia nos lo permite, con cada microordenador se te van, mínimo, 15 minutos. Una gracia extrema.
- Los sensores de temperatura tampoco llevan sus pines soldados, con lo que hay que hacer lo propio.
- Las pequeñas placas de interconexión (no van a estar flotando en el interior del techo, libremente cual margarita en el campo) cuentan con un pequeño circuito impreso donde se sueldan puentes y protecciones electrónicas, también hay que soldarlas. Para este macroproyecto se han diseñado y pedido a un gran fabricante de placas, la única pega es ese entretenimiento con el soldador (nada que con buena música no sea superable).
- Los Arduinos implicados hay que grabar el programa en la EEPROM (memoria física) que traen, y sólo se puede hacer de uno en uno, en el lugar de su ubicación definitiva. Ojito con las nuevas necesidades, que pueden resultar ser un infierno.
- Para las Orange Pi Zero, se ha de instalar Linux en una tarjeta microSD y luego, con cada una de ellas, personalizar la conexión para que podamos entender qué hace quien en cada momento.
Todo esto es trabajo que se lleva muchísimo tiempo, y por mucho que quieras contabilizarlo, se va, se va…
La Climatización
Jamás había visto tantos splits de tantas marcas. En una planta, en concreto, todos eran de marcas y modelos distintos. Tuvo que haber una oferta o algo porque lo más normal es que se pregunte al vecino cómo le va… Eso sí, todos con la garrafa de plástico.
A base de darle vueltas, encontré la solución: Ya que tenemos controladores analógico-digitales en el techo, podemos poner 2 tipos de sensores:
- Indicador de nivel de agua. Éste está muy chulo pero es una pijada considerable, no es práctico, el personal se confía y se sigue desbordando la botella.
- Sensor de inundación. Éste es el que se instaló. Es un pequeño conmutador que, al llegar el nivel de agua a su altura, cierra un contacto e indica que ya está allí el líquido elemento.
La Programación
Son muchos los que piensan que, por el mero hecho de conectar los sensores, ya está el trabajo hecho, cuando en realidad falta toda la parte de programación de cómo se quiere que funcione el sistema, en especial cuando hay multitud de variables de funcionamiento.
- Control del consumo eléctrico: Los sensores de efecto Hall hay que calibrarlos. Esto no es moco de pavo, porque la potencia (recordemos que es Voltaje por intensidad) varía en función de la resistividad del conductor, que también depende de la sección. Se decidió – por una experiencia ya sufrida en mis carnes, la cual tardará muchos años en cicatrizar – que sólo los Arduinos se encargarían de ello, teniéndolos que flashear directamente en su ubicación definitiva (lo he mencionado antes). Se incluyen en ellos el resto de sensores digitales: los detectores de presencia, de incendio, de humos (CO2), y los sensores de inundación.
- Actuadores de persianas y de splits/fancoils (al final también le metimos mano a los aparatos viejos que todavía funcionaban, total…), mediante salidas digitales de las Orange Pi Zero.
No contentos con el jaleo, se hizo necesario instalar sensores de rotura de ventanas, porque todas las plantas del inmueble disponen de un lugar –transitable en caso de emergencia– por el cual las personas, en caso de incendio, pueden dirigirse a la escalera de evacuación; pero claro, también es accesible en sentido inverso y los amigos de lo ajeno pueden emplear para llegar a cualquier despacho del edificio. Así que:
- Control de rotura de ventanas, a los Arduino Uno (otra vez volver a flashear… Y a subir el coste del proyecto, gratis no iba a ser).
- Medición de temperatura, presión y Humedad, a las Orange Pi Zero.
- Medición de temperatura de la CPU, interno de las Orange Pi Zero
La información recopilada por los Arduino, en un bucle infinito, será leída a través de sus puertas analógicas y digitales y puesta en conocimiento a través del puerto USB que dispone, recibiéndolo la Orange Pi y paquetizándolo posteriormente para ser enviado al servidor principal.
Videocámaras
Curioso problema el que nos encontramos, finalmente arreglado también. Hay que tener en cuenta que suelen existir habitantes en el propio edificio que, quizás porque el aislamiento que recubre los conductores debe tener propiedades alimenticias o no se sabe muy bien la razón, pero el género de los roedores miomorfos de la familia Muridae, es decir, las ratas, se los habían comido.
Cuando se lo comunicamos a la propiedad, y ya que estábamos, nos solicitaron cambiar toda la instalación por cámaras de mayor calidad, mejores conductores (que los aislamos mediante tubos de PVC inífugos), con conectores RJ-45 y su respectivo balum de conversión, sobre cable de categoría 6, permitiendo grabar a 4K –aunque sea una locura si deseas reproducir en el móvil alguna grabación–.
Ciberseguridad IoT
Todo esto está muy bien pero… Hemos venido a hablar de Ciberseguridad, ¿verdad? Pues vamos a ello.
Los dispositivos IoT, como los Arduino Uno, no tienen capacidad para aguantar un cifrado con consistencia en el tiempo. Sí, lo hacen durante unos ciclos, hasta que se quema el microprocesador: están concebidos con otro fin y es una tontería forzarlos.
Las Orange Pi pueden cifrar sin problemas, aparte de realizar muchas más cosas.
Lo que todo el mundo ha hecho hasta ahora, ha sido colocar los dispositivos IoT conectados a Internet, completamente accesibles desde fuera. Yo, en todos los montajes que he realizado, he actuado con el mismo proceder:
- Detrás del router de conexión a Internet, se le ha colocado un cortafuegos físico (tipo SonicWall o similar) o, en su defecto, otro router que cambie la conexión de toda la red. Esto incordia bastante, pero no es definitivo.
- El servidor, aparte de almacenar toda la información procedente de los sensores, le proporciona al tándem Arduino/Orange Pi la fecha del día, la cual, empleando una técnica de cifrado (no sé si sabréis que me encanta la criptografía. He sido profesor de un módulo del SEPE y creo que ahí perdí mi alma…) y de pares de claves pública y privada, permiten almacenar la información de forma que sólo es accesible por un dispositivo que es capaz de descifrarla.
- Las OrangePi, por la ventaja de ser Linux, se pueden configurar para que el servidor de ssh que llevan en su interior sólo se pueda conectar a quien tenga un archivo de clave cifrada determinado. Eso da un blindaje que supera, con mucho, cualquier otro sistema. El máximo es disponer de IPTABLES pero la Orange Pi no trae…
Una vez hecho esto, y puesto el sistema en funcionamiento, se hace necesario contratar un servicio de mantenimiento. Es cierto que durante 20 de los 30 años que llevo realizando aplicaciones sin él, no ha habido mayores problemas (la mayoría de las apps eran de escritorio), pero cuando combinas demasiados sistemas no sólo es necesario, sino OBLIGATORIO. Pensar lo contrario es un suicidio, y más cuando la instalación se gobierna de forma sensible.