Docker: cuándo usar apparmor vs seccomp vs --cap-drop

3

Docker parece admitir tanto apparmor como seccomp. Docker también permite eliminar capacidades cuando se ejecuta un contenedor.

Sin embargo, no pude encontrar ninguna documentación o directriz sobre cuándo usar qué método.

Parece que hay una superposición significativa en lo que se puede usar, no pude averiguar ninguna pauta general sobre cuándo usar cuál de estas opciones.

¿Puede alguien proporcionar alguna directriz?

En mi caso, tengo que ejecutar muchos códigos de estudiantes en el servidor. Quiero permitirles ejecutar programas Java y c ++. Permitir el acceso de escritura a un directorio (volumen de datos). No necesitan acceso a la red, ni nada complicado.

Por favor, proporcione alguna guía sobre cómo asegurar.

    
pregunta JackDaniels 02.11.2018 - 05:32
fuente

1 respuesta

5

Puedes usarlos todos.

Cada una de estas características de seguridad tiene diferentes propósitos, y en realidad hay poca superposición. Todos ellos funcionan para reducir el daño que un proceso puede causar una vez que se ha comprometido. Todos son muy bajos y pueden utilizarse para mejorar significativamente la seguridad del software.

Seccomp es una característica de Linux que permite un programa de espacio de usuario para configurar los filtros syscall. Estos filtros especifican qué llamadas del sistema están permitidas y qué argumentos pueden tener. Es un filtro de muy bajo nivel que reduce el área de la superficie de ataque del kernel. Por ejemplo, un error en keyctl() que permite llamadas simples a ese syscall para elevar los privilegios no sería necesariamente utilizable para privesc en un programa que tiene acceso restringido a esa llamada.

AppArmor es un marco de control de acceso obligatorio que funciona como un LSM (módulo de seguridad de Linux) . Se utiliza para incluir en la lista blanca o negra el acceso de un sujeto (programa) a un objeto (archivo, ruta, etc.). AppArmor se puede usar para permitir que un programa tenga acceso de lectura a /etc/passwd , pero no a /etc/shadow . Las políticas también se pueden usar para restringir capacidades, o incluso para limitar el acceso a la red.

Capacidades y la caída de capacidades es una técnica general mediante el cual un proceso privilegiado revoca un subconjunto de los privilegios con los que está dotado. Un proceso raíz puede descartar, por ejemplo, las capacidades necesarias para crear conexiones en bruto a la red, o las capacidades requeridas para omitir los permisos estándar de archivos UNIX (DAC), incluso si sigue siendo root. Esta técnica no es muy detallada, ya que solo hay un número limitado de capacidades que pueden eliminarse, pero reduce el daño que un programa puede hacer si, no obstante, ha sido comprometido.

En general, debes saber que:

  • Seccomp reduce la posibilidad de que una vulnerabilidad del kernel sea explotada con éxito.

  • AppArmor impide que una aplicación acceda a archivos a los que no debería acceder.

  • La reducción de capacidad reduce el daño que puede hacer un proceso privilegiado comprometido.

Vea también ¿Cómo se implementa Sandboxing?

    
respondido por el forest 02.11.2018 - 08:09
fuente

Lea otras preguntas en las etiquetas