Asegurando la credencial de la base de datos en un campo implementado en Raspberry Pi

1

Una pi de frambuesa se implementa en un área pública. No estoy tan preocupado por el robo físico de la frambuesa pi: me preocupa que el dispositivo sea robado, que se lea la tarjeta SD y que las credenciales de la base de datos de AWS (nombre de usuario / contraseña en el script de Python) estén "en libertad".

¿Existen prácticas de seguridad eficaces que puedan mitigar este riesgo?

ACTUALIZACIÓN: Se harán todos los intentos razonables para asegurar físicamente el dispositivo (encerrado en una caja), sin embargo, las posibilidades de robo no son cero.

    
pregunta gatorback 06.07.2018 - 23:30
fuente

2 respuestas

4

Lo primero es lo primero ... el acceso físico es el acceso de raíz . Si alguien puede tocar físicamente tu dispositivo, ya no es tu dispositivo.

Con eso fuera del camino, ¿qué puedes hacer para limitar la amenaza?

  • Bloquee el acceso a AWS a la IP específica (posiblemente incluso a seguridad de puertos si es posible) ... de esta manera incluso si alguien roba las credenciales del script de Python, no pueden hacer nada sin usar la misma conexión en la que estaba originalmente.
  • Bloquee el usuario de la base de datos al mínimo acceso de lectura / escritura requerido por el script para que, si alguien obtiene acceso, no pueda volcar la base de datos completa y / o eliminar las tablas. (vea también Activador de base de datos )
  • Escriba un contenedor de API remoto alrededor del acceso a la base de datos (consulte también redis pub / sub ) para que el RPi solo pueda ejecutar comandos permitido por la API, y registrar remotamente todas las solicitudes de API good & malo.
  • Implementar el código de forma remota solo en la memoria. Si configura un programa de arranque para extraer el código en una unidad RAM (consulte también loop0 ), ejecútelo y elimine la copia local ... solo debería ser accesible si el ladrón puede robarlo mientras mantiene el poder.

Nuevamente, no puede proteger completamente su AWS pero puede fortalecerlo y ganar tiempo para invalidar la clave de API o Usuario asociada con el RPi. Solo asegúrate de revisar regularmente los registros para detectar actividades nefastas.

    
respondido por el CaffeineAddiction 07.07.2018 - 01:30
fuente
1

Estuvo de acuerdo en que el acceso físico es malo, pero hay algunas cosas que puede hacer, que al menos demorarán al atacante el tiempo suficiente para que note que falta el PI y cambiar las credenciales en la base de datos.

En primer lugar, no hace falta decirlo, debe asegurar el Pi físicamente y asegurarse de que tiene sistemas en su lugar para detectar que falta lo antes posible. Inspección física diaria - y tal vez una secuencia de comandos remota para verificar si el Pi todavía está conectado a la red que se ejecuta cada 20-30 minutos. Si el Pi está desconectado de la red, el script te alerta y ahora puedes actuar sobre él.

Intente asegurarse de que haya cifrado de disco completo en la Pi. No soy un experto en Raspbian o en el sistema operativo que esté ejecutando, pero un cifrado de disco implementado correctamente, al menos ralentizará al atacante, o al menos los detendrá en seco.

Dependiendo de su base de datos, intente usar el administrador de secretos de AWS. En esta configuración, todo lo que tiene en el Pi es una configuración de la clave de la API de AWS para el USUARIO IAM no root que tiene permisos muy limitados. La llamada a la API devuelve las credenciales de la base de datos para que las use. La magia es que, no solo puede deshabilitar la Clave de la API con un clic / comando, también puede rotar los secretos de la base de datos sin tocar su aplicación. Esto le brinda una flexibilidad mucho más fácil para evitar el acceso una vez que se descubre que falta el Pi.

Todo se trata de la defensa en profundidad. El atacante tiene que eliminar físicamente la tarjeta SD de su Pi (o robar el Pi por completo), omitir el FDE y luego omitir la contraseña del sistema operativo, y luego todos tienen la clave para la base de datos, que esperamos que ya haya desactivado para entonces.

El administrador de secretos cuesta $ 0.50 / secreto por mes y no debería ser demasiado difícil de implementar a través de Boto3 (por defecto Python SDK para AWS). Si está ejecutando algo como DynamoDB, probablemente pueda vivir sin él, simplemente deshabilitando al usuario IAM (o su clave API) que tiene acceso a la base de datos.

    
respondido por el keithRozario 10.07.2018 - 06:46
fuente

Lea otras preguntas en las etiquetas