Prevenir la bomba tenedor dentro del contenedor acoplable

8

Actualmente estoy luchando con limitar el número de procesos para el usuario al que llamé sandbox.

Configuré el límite de procesos dentro de /etc/security/limits.confesta manera:

sandbox            hard    nproc            100

Pero si quiero conectarme al contenedor como sandboxusuario, ssh regresa:

shell request failed on channel 0

Así que inicié sesión rooty verifiqué cuántos procesos ejecuta el sandboxusuario, pero son menos de 5.

Entonces, ¿qué podría estar evitando que inicie sesión a través de ssh?
Sin establecer límites, el inicio de sesión ssh para el sandboxusuario funciona bien.

¿O hay alguna otra forma de prevenir el ataque con bomba tenedor?

eXPi
fuente

Respuestas:

2

cualquier error al conectarse a un sshd se registra en /var/log/auth.log (en sistemas operativos basados ​​en Debian o seguridad en sistemas basados ​​en redhat)

Si no es así, establecer LogLevel VERBOSEen /etc/ssh/sshd_configy sshd recarga. Esto le mostrará por qué sshd está rechazando su conexión a continuación.

Dicho esto, volviendo a su limitador de bomba de horquilla: las máquinas acopladoras se basan en LXC, un sistema contenedor para Linux. LXC está utilizando CGROUPS para administrar los límites de recursos para cada contenedor.

en / sys / fs / cgroups, puede configurar cualquier límite para un LXC en ejecución, y en / Var / lib / lxc / vmname / config, puede configurar los límites que se aplicarán en el momento del arranque.

El subsistema de contador de tareas limita el número de procesos en un cgroup (agregado en el kernel de Linux en 2011 http://lkml.iu.edu//hypermail/linux/kernel/1109.0/01455.html )

Con un kernel de Linux lo suficientemente reciente, la limitación de la cantidad de procesos permitidos para un cgroup se realiza agregando este tipo de línea al archivo de configuración de su lxc:

lxc.cgroup.tasks.limit = 1024 

para un máximo de 1024 procesos

(descargo de responsabilidad: la información no se verificó en una máquina real, sin embargo, por confirmar)

Benjamin Sonntag
fuente
1
Gracias. Para la corrección, los últimos contenedores Docker no se basan en LXC, LXC está disponible como controlador. El controlador nativo de contenedores Docker se basa directamente en los espacios de nombres del núcleo. Pero realmente me gusta la idea con cgroups, no sabía que es posible limitar el recuento de procesos. Definitivamente voy a intentarlo.
eXPi
2
A partir de hoy, el subsistema de contador de tareas aún no ha aterrizado en el núcleo oficial.
Fabian Jakobs