Proteger el contenido de las carpetas de los procesos

2

Consideremos lo siguiente:

  1. Linux es la plataforma a la que me refiero aquí
  2. Existe una partición en el sistema que está cifrada con una contraseña segura (a través del mecanismo LUKS, si es relevante para usted)
  3. Esta partición contiene información confidencial que deseo aislar del resto del sistema

Suponiendo todo lo anterior, ¿cómo puedo (como administrador del sistema) hacer cumplir una regla que niega sistemáticamente el acceso de lectura del contenido de esa partición encriptada a todos los procesos que se ejecutan actualmente en el sistema (incluidos aquellos que se inician?) de mí también) a excepción de unos pocos seleccionados (como el administrador de archivos para acceder a los contenidos de la partición). Obviamente, esto se refiere a los períodos de tiempo en que la partición se monta y desbloquea en el sistema para que cualquier proceso pueda leer en ese momento.

Básicamente, lo que estoy pidiendo es una forma de aislar un dispositivo montado del resto del sistema eligiendo solo los procesos que pueden leer y negando el acceso a cualquier otro programa que no forme parte de esa lista.

Creo que SELinux o AppArmor deberían (en teoría) ser capaces de hacer eso, pero no estoy exactamente seguro de cómo configurarlos.

Además, todavía no estoy seguro de si esta pregunta es apropiada para estar aquí o en superusuario.

    
pregunta Alex 20.02.2018 - 21:05
fuente

1 respuesta

0

Para aislar el acceso a un punto de montaje para que solo puedan acceder a él determinados programas, puede usar MAC o DAC. Al usar DAC, debe proporcionar una manera de ejecutar automáticamente su programa objetivo como grupo.

Controles de acceso obligatorios

Un sistema de control de acceso obligatorio, o MAC, es un marco para limitar qué acciones puede utilizar un asunto (por ejemplo, un proceso o grupo de hilos) para operar en un objeto (por ejemplo, un archivo, directorio o interfaz de red). Los controles de acceso generalmente son aplicados por el kernel, y el proceso que se limita no tiene nada que decir sobre a qué objetos se les permite acceder y cómo. Para su caso de uso, debe usar SELinux en lugar de AppArmor. AppArmor requiere un perfil explícito para cada programa único que está limitando. Un nuevo programa no se limitará en absoluto. Hay formas de evitar esto mediante la configuración de un perfil para el proceso de inicio, lo que hace que sea heredado por todos los demás procesos en el sistema, pero es una técnica no probada y no probada. SELinux, por otro lado, está diseñado específicamente para políticas de aislamiento en todo el sistema, aunque por proceso directivas dirigidas .

Puede especificar un contexto SELinux particular para un punto de montaje determinado especificando la opción context= durante el montaje, ya sea utilizando fstab(5) o invocando directamente mount(8) . El contexto se utiliza para determinar qué permisos de SELinux se requieren para acceder a él, sin necesidad de etiquetar cada archivo.

Controles de acceso discrecionales

Los controles de acceso discrecionales, o DAC, son los permisos estándar de UNIX que rigen todo el acceso al sistema de archivos en un sistema Linux. Se denomina discrecional porque un usuario que posee un archivo o directorio determinado puede, a su discreción, cambiar sus permisos. Para utilizar DAC para proteger un punto de montaje de modo que solo los programas específicos puedan leerlo y escribir en él, querrá que el punto de montaje sea el modo 0770, propiedad del usuario root y un nuevo grupo que cree. Cualquier proceso que se ejecute en este grupo podrá ingresar, leer, escribir y ejecutar cualquier cosa en el punto de montaje. Hay algunas maneras de lograr esto:

  • Marque su programa setgid , lo que hará que se ejecute automáticamente como el grupo que posee el ejecutable. Cualquier transición a un contexto setgid hará que el sistema descarte todas las variables de entorno potencialmente peligrosas , y proteger el proceso de los depuradores invasivos.
  • Configure su sudoers para permitirle ejecutar sus programas aprobados como un grupo dado, ya sea con o sin el suministro de una contraseña. Esto funciona de manera similar a la opción anterior, pero usa sudo .

Una técnica mucho más segura pero más invasiva sería crear un usuario completamente diferente, con su propio entorno de escritorio (si usa alguno) y su propio directorio principal. Cuando necesite acceder a algo sensible, asegúrese de que los archivos y directorios confidenciales sean legibles solo por el usuario root y su nuevo usuario seguro. Esto puede interrumpir su flujo de trabajo, ya que tendrá que iniciar sesión en un usuario diferente, pero no estará sujeto a las advertencias (no despreciables) con el aislamiento de la aplicación que se explican a continuación.

Advertencias

Es extremadamente importante que entienda completamente las implicaciones de un determinado proceso de acceso a información confidencial. A menos que el programa esté diseñado específicamente para permanecer seguro en estas circunstancias, podría haber formas imprevistas para piratearlo. Un administrador de archivos gráfico, por ejemplo, no puede ser aislado bajo Linux, ya que tendrá acceso a su cookie X11, y por lo tanto, cualquier otro programa gráfico con acceso X11 que se ejecute bajo el mismo usuario (incluso si el grupo es diferente) podrá tome capturas de pantalla, inyecte movimientos del mouse y pulsaciones del teclado , y más. Esto, por supuesto, derrotaría los intentos de aislamiento. Todos los demás temas serán específicos a los programas individuales. Intentar el aislamiento del proceso sin ajustarse a una política formal particular como Biba o Bell-LaPadula puede ser riesgoso.

    
respondido por el forest 21.02.2018 - 07:58
fuente

Lea otras preguntas en las etiquetas