Traducción:
Go IoT Development Platform es una solución de Internet de las cosas (IoT) gratuita, eficiente y escalable desarrollada utilizando el lenguaje de programación Go. La plataforma admite protocolos de transmisión de datos como MQTT, HTTP, WebSocket, COAP y TCP/IP, y proporciona herramientas de configuración ligeras para funciones de alarma y servicios de estadísticas de datos basados en JavaScript.
Sitio web oficial: http://iot-dev-egi.pages.dev/
Dirección del repositorio: https://github.com/iot-ecology/go-iot-platform
Buscamos ingenieros de desarrollo de React; su participación es bienvenida.
EMQX puede recibir informes de datos de segundo nivel desde muchos dispositivos en cualquier momento, pero es posible que esto no se ajuste al proceso comercial normal. Por ejemplo, en circunstancias normales, un dispositivo puede informar datos una vez cada 5 minutos. Para identificar si el dispositivo de informe es legítimo, necesitamos un método para detectar si el dispositivo podría ser un dispositivo malicioso, informando deliberadamente datos con frecuencia para afectar la estabilidad de EMQX.
Detalles del dispositivo físico: Hay dos campos clave en los detalles del dispositivo físico (DeviceInfo): Intervalo de inserción (segundos) y Error de tiempo de inserción (segundos). Con estos dos campos, podemos determinar si el comportamiento de informes del dispositivo es anormal y continuar con el procesamiento lógico posterior.
Para calcular si la tasa de informes del dispositivo está dentro del intervalo de inserción y error, y si está fuera del error, primero debemos definir algunas variables y condiciones:
Se considera que la velocidad del dispositivo está dentro del intervalo de inserción y se produce un error si el intervalo de inserción real ( T_{\text{actual}} ) cumple con la siguiente condición:
[ T - E \leq T_{\text{actual}} \leq T E ]
Se considera que la velocidad del dispositivo está fuera del error si el intervalo de inserción real ( T_{\text{actual}} ) no cumple con la condición anterior, es decir:
[ T_{\text{actual}} T E ]
Asumir:
[ T_{\text{actual}} = (10:01:05 - 10:00:00) = 65 \text{ segundos} ]
[ 60 - 5 \leq 65 \leq 60 5 ]
[ 55 \leq 65 \leq 65 ]
Dado que ( 55 \leq 65 \leq 65 ) es cierto, la velocidad del dispositivo está dentro del intervalo de inserción y error.
Dado que ( 65 ) no es menor que ( 60 5 ), la velocidad del dispositivo no está fuera del error.
Con este método, puede calcular con precisión el intervalo de inserción real del dispositivo y analizar más a fondo si cumple con el intervalo de inserción establecido y las reglas de error.
Mediante el método de cálculo mencionado anteriormente, podemos determinar si los datos informados se ajustan al intervalo de inserción y al rango de error esperados. Generalmente, los datos que se ajustan a este rango se consideran normales y deben procesarse, mientras que los datos que están fuera de este rango pueden considerarse anormales y deben descartarse. En la plataforma de desarrollo Go IoT, para dichos datos anormales, tomaremos las siguientes medidas:
Descarte de datos: descarta directamente los datos que excedan el intervalo de inserción y el rango de error. Al consumir mensajes en la cola de mensajes, ACK (Reconocer) directamente estos datos sin almacenamiento persistente.
Mantenimiento mediante herramientas de administración de servidores EMQX
Utilizando la función de lista negra de EMQX, podemos restringir clientes de informes maliciosos o anormales. Aquí hay un análisis detallado de las ventajas y desventajas de deshabilitar objetos y sus casos de uso:
Objeto deshabilitado | Ventajas | Desventajas | Casos de uso |
---|---|---|---|
ID de cliente | - Alta precisión, puede restringir directamente a clientes específicos. - Fácil de implementar, normalmente el ID del cliente es único, fácil de administrar y rastrear. |
- Si el cliente cambia la ID, debe agregarse nuevamente a la lista negra. - Se requiere un mecanismo para identificar y registrar la ID del cliente. |
- Adecuado para escenarios que requieren un control preciso de dispositivos o clientes individuales. - Cuando es fácil identificar y registrar el ID del cliente MQTT del dispositivo que informa. |
Nombre de usuario | - Puede administrar un grupo de dispositivos usando el mismo nombre de usuario. - Simplifica la administración de un grupo de dispositivos. |
- No apto para escenarios que requieren un control preciso de dispositivos individuales. - Si los dispositivos comparten un nombre de usuario, los dispositivos legítimos pueden restringirse incorrectamente. |
- Adecuado para escenarios donde los dispositivos usan la misma contraseña de cuenta en lotes o de acuerdo con reglas. - Cuando la administración de dispositivos está más centralizada y no se requiere un control detallado de dispositivos individuales. |
Dirección IP | - Puede restringir rápidamente todas las solicitudes de una dirección IP específica. - Simple y efectivo para dispositivos con direcciones IP fijas. |
- No es efectivo para IP dinámica o dispositivos móviles. - Puede restringir por error otros dispositivos legítimos bajo la misma IP. |
- Adecuado para escenarios donde los dispositivos tienen direcciones IP fijas. - Cuando necesita restringir rápidamente el tráfico de una IP específica y no hay otros dispositivos legítimos bajo esa IP. |
Los tres anteriores deben priorizar primero la ID del cliente.
EMQX proporciona una interfaz API que permite a los administradores eliminar clientes MQTT específicos del servidor. Cabe señalar que si el cliente MQTT ha implementado un mecanismo de reconexión, es posible que simplemente eliminarlo no elimine completamente el cliente.
Referencia: Documentación EMQX - Exclusión de clientes
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3