por Hema
El ecosistema de Internet de las cosas (IoT) conecta miles de millones de dispositivos en todo el mundo, desde sistemas de automatización a maquinaria industrial. Ya sea que trabajes con una red de IoT a pequeña escala en a controlled environment or implementing a large-scale, enterprise-grade IoT ecosystem, security no se puede pasar por alto. Incluso en las implementaciones de red cerradas donde el acceso es limitado, el riesgo todavía existen ataques internos, acceso no autorizado a dispositivos y brechas de datos. Seguridad débil prácticas en cualquier escala del despliegue pueden exponer datos sensibles, la integridad de los dispositivos de compromiso y poner en peligro todo el sistema. En esta guía exploraremos las prácticas de seguridad de IoT, centrándonos en cómo para la aplicaciónmedidas de seguridad utilizando MQTT(Message Queuing Telemetry Transport) con ejemplos de Paho (cliente) y CrystalMQ (servidor).
El primer paso para asegurar un ecosistema de IoT es entender los diversos vulnerabilidades, incluidas:
Para mitigar estos riesgos, es fundamental implementar protocolos de seguridad tanto cliente como servidor, así como asegurar el cifrado de datos y el alojamiento seguro
MQTTes un protocolo ligero diseñado para una comunicación eficiente entre dispositivos IoT y un servidor central. Si bien es ideal para dispositivos limitados, su simplicidad también puede llevar a desafíos de seguridad tales como:
Para superar estos problemas, el MQTT requiere capas adicionales de seguridad comoSSL/TLS para encriptación, autenticación de dispositivos y listas de control de acceso (ACLs) para autorización.
Usando elPython MQTT clientecomo ejemplo, veamos cómo podemos establecer una conexión segura con el servidor. Aquí están las configuraciones clave de seguridad:
La primera capa de seguridad es la autenticación básica. Paho proporciona métodos simples para configurar esto configuración.
importa paho.mqtt.client as mqt
cliente = mqtt.Client()
# Establecer nombre de usuario y contraseña para la autenticación
cliente.username_pw_set(username="client_user", password="client_password")
# Conectar al corredor
cliente.connect("broker.example.com", 1883, 60)
cliente.loop_start()
Para proteger los datos en tránsito, se debe habilitar TLS/SSL. Paho soporta SSL con un simple configuración:
importa paho.mqtt.client as mqt
cliente = mqtt.Client()
# Path to the CA certificate
cliente.tls_set(ca_certs="/path/to/ca.crt")
# Enable TLS/SSL
cliente.username_pw_set("client_user", "client_password")
cliente.connect("broker.example.com", 8883, 60)
cliente.loop_start()
Asegúrese de verificar el certificado del corredor para evitar ataques MITM. El Paho cliente admite varias opciones de certificado para garantizar la integridad de los datos.
Paho ofrece opciones para validación de certificados por defecto, y se puede configurar utilizandotls_set()ytls_insecure_set(). Aquí hay un ejemplo donde el cliente valida el certificado del corredor contra la Autoridad de Certificados (CA) y asegura que el La conexión es segura.
importa paho.mqtt.client as mqt
# Crear una nueva instancia cliente MQTT
cliente = mqtt.Client()
# Establecer nombre de usuario y contraseña para la autenticación básica
cliente.username_pw_set(username="client_user", password="client_password")
# Path to CA certificate for validating the broker's certificate
ca_cert_path = "/path/to/ca.crt"
# Camino al propio certificado del cliente y llave privada (opcional, para TLS mutuo)
cliente_cert_path = "/path/to/client.crt"
cliente_key_path = "/path/to/client.key"
# Enable TLS/SSL encryption with certificate validation
cliente.tls_set(ca_certs=ca_cert_path,
certfile=client_cert_path,
keyfile=client_key_path,
tls_version=mqtt.ssl.PROTOCOL_TLSv1_2)
# Asegurar que el certificado sea validado (configurado a False para hacer cumplir la validación)
cliente.tls_insecure_set(False)
# Conectar al corredor en el puerto seguro (generalmente 8883 para MQTT sobre SSL)
broker_url = "broker.example.com"
broker_port = 8883
cliente.connect(broker_url, broker_port)
# Iniciar el bucle cliente para procesar eventos de red
cliente.loop_start()
El corredor MQTT está en el corazón de la comunicación IoT. Garantizar el corredor garantiza que sólo Los dispositivos autenticados pueden conectarse y comunicarse. NuestroMQTT Broker(CrystalMQ) ofrece múltiples capas de seguridad para proteger la infraestructura IoT.
CrystalMQ admite SSL/TLS, lo que le permite cifrar la comunicación entre el corredor y los dispositivos IoT.
Viene con un certificado CA auto-firmado, ubicado en el Carpeta CrystalMQ/Certificate. Puede utilizar el certificado auto-firmado predeterminado o reemplazarlo con su propio certificado personalizado.
Referir elEncriptación TLS/SSLen nuestra sección ayuda a la documentación para administrar TLS/SSL en nuestro broker.
CrystalMQ proporciona un sistema de autenticación de usuario fácil de configurar.
Le permite crear claves de autenticación y fichas (nombre de usuario y contraseña) a través del panel MQTT Broker bajo la pestaña Seguridad. Esto hace que sea fácil gestionar la autenticación del cliente directamente desde el panel de control.
Las teclas creadas se establecerán / configurarán en el cliente Paho en username_pw_set() función.
Más detalles sobre el establecimiento de seguridad se pueden encontrar en nuestrabróker ayuda documentación.
Autorización asegura que una vez que un cliente es autenticado, sólo es permitido realizar acciones específicas, como publicar o suscribir temas particulares.Listas de control de acceso (LCA)son una manera común de gestionar estos permisos en un sistema MQTT.
En CrystalMQ, los administradores pueden configurar ACLs ya sea para individuos nombres de usuario o ID de cliente conectado. Esto se puede hacer a través del MQTT Broker dashboard navegando al menú de Seguridad.
Por ejemplo, un cliente sólo puede ser restringido a publicar un tema específico mientras se le niega acceso a otros.
La seguridad de los datos es crucial para los sistemas de IoT, especialmente porque a menudo manejar información sensible que requiere protección mientras se transmite (en transit) y cuando se almacena (en reposo). Un ecosistema de IoT seguro garantiza que los datos estén encriptados durante transmisión y almacenamiento seguro, evitando el acceso no autorizado y minimizando el riesgo de datos Violaciones.
Data in transit refers to the data being transferred from IoT devices to a server or from server to cliente. El mayor riesgo durante esta fase es la interceptación de los atacantes, también conocido como Ataques del hombre en el medio (MITM). Para prevenir tales ataques, protocolos de cifrado tales comoTLS/SSLson esenciales.
Los datos en reposo se refieren a los datos almacenados en servidores o bases de datos. Storing los datos de forma segura son fundamentales para prevenir el acceso no autorizado, especialmente en casos de incumplimientos de datos o acceso físico a servidores.
La seguridad del entorno de acogida desempeña un papel vital en el protección general de un ecosistema de IoT. Ya sea el despliegue de CrystalMQ on-premise or using a infraestructura basada en la nube, garantizar que el entorno de acogida sea seguro es fundamental para mantener la integridad y disponibilidad del sistema.
Para empresas que prefieren mantener su infraestructura de IoT en marcha, la seguridad de acogida implica el físico y la red seguridad del centro de datos local o de la sala de servidores.
Las implementaciones basadas en la nube ofrecen escalabilidad y flexibilidad, pero la nube el entorno debe configurarse de forma segura para evitar exponer el sistema IoT a amenazas.
Ambos entornos on-premise y cloud cumplen con la seguridad de IoT normas tales como:
Así es como puedes construir un ecosistema IoT robusto y seguro. Empezando conSeguridad MQTTprotocolos tanto en el lado cliente como en el servidor, junto con el manejo seguro de datos y prácticas de alojamiento, usted puede mitigar muchos de los riesgos comunes de seguridad en entornos IoT.
Con CrystalMQ Broker como el servidor MQTT, puede implementar prácticas de seguridad IoT de última generación para proteger datos y dispositivos, asegurando una infraestructura de IoT más segura y segura.