Prácticas recomendadas de seguridad para agentes de dispositivos
- Privilegio mínimo
-
Al proceso del agente se debe otorgar solo los permisos mínimos necesarios para realizar sus tareas.
Mecanismos básicos
-
El agente debe ejecutarse como un usuario no raíz.
-
El agente se debe ejecutar como un usuario dedicado, en su propio grupo.
-
Al usuario/grupo se le deben otorgar permisos de solo lectura sobre los recursos necesarios para recopilar y transmitir métricas.
-
Ejemplo: solo lectura en /proc /sys para el agente de muestra.
-
Para obtener un ejemplo de cómo configurar un proceso para que se ejecute con permisos reducidos, consulte las instrucciones de configuración que se incluyen con el agente de muestra de Python
.
Hay una serie de mecanismos Linux conocidos que pueden ayudarle a restringir o aislar aún más el proceso de su agente:
Mecanismos avanzados
-
- Resiliencia operativa
-
Un proceso de agente debe ser resiliente a errores y excepciones operativas inesperados y no debe bloquearse ni salir de forma permanente. El código debe manejar con soltura excepciones y, como precaución, debe configurarse para reiniciarse automáticamente en caso de terminación inesperada (por ejemplo, debido a reinicios del sistema o excepciones no detectadas).
- Dependencias mínimas
-
Un agente debe usar el menor número posible de dependencias (es decir, bibliotecas de terceros) en su implementación. Si el uso de una biblioteca se justifica debido a la complejidad de una tarea (por ejemplo, Transport Layer Security), use solo dependencias bien mantenidas y establezca un mecanismo para mantenerlas actualizadas. Si las dependencias agregadas contienen funcionalidades que el agente no usa y que están activas de manera predeterminada (por ejemplo, abrir puertos, sockets de dominio), desactívelas en su código o por medio de los archivos de configuración de la biblioteca.
- Aislamiento de procesos
-
Un proceso de agente solo debe contener la funcionalidad requerida para realizar la recopilación y la transmisión de métricas del dispositivo. No debe aprovecharse de otros procesos del sistema como un contenedor ni implementar funcionalidad para otros casos de uso fuera de su ámbito. Además, el proceso del agente debe abstenerse de crear canales de comunicación de entrada como puertos de socket de dominio y de servicio de red que permitirían que procesos locales o remotos interfiriesen en su funcionamiento e influyesen en su integridad y aislamiento.
- Sigilo
-
El nombre de un proceso de agente no debe contener palabras clave como seguridad, monitorización o auditoría que indiquen su finalidad y valor de seguridad. Se debe optar por nombres genéricos de códigos y nombres de procesos aleatorios y únicos en cada dispositivo. Se debe seguir el mismo principio al asignar nombre al directorio en el que residen los binarios del agente y los nombres y valores de los argumentos del proceso.
- Información mínima compartida
-
Ningún artefacto de agente implementado en los dispositivos debe contener información confidencial como credenciales con privilegios, depuración ni código muerto, o comentarios insertados o archivos de documentación que revelen detalles sobre el procesamiento del lado del servidor de métricas recopiladas por el agente u otros detalles sobre sistemas backend.
- Transport Layer Security
-
Para establecer canales seguros de TLS para la transmisión de datos, un agente debe hacer cumplir todas las validaciones del lado del cliente, como la validación de certificados y nombres de dominio en el nivel de la aplicación, si no están habilitadas de manera predeterminada. Además, un agente debe usar un almacén de certificados raíz que contenga entidades de confianza y no contenga certificados que pertenezcan a emisores de certificados atacados.
- Implementación segura
-
Cualquier mecanismo de implementación del agente, como inserción o sincronización de código y repositorios que contengan sus binarios, código fuente y cualquier archivo de configuración (incluidos certificados raíz de confianza), debe controlarse para evitar la inserción o alteración no autorizada del código. Si el mecanismo de implementación se basa en la comunicación de red, se deben usar métodos criptográficos para proteger la integridad de los artefactos de implementación en tránsito.
- Documentación adicional