Назад | Перейти на главную страницу

Предотвратить бомбу вилки внутри контейнера докеров

В настоящее время я борюсь с ограничением количества процессов для пользователя, которого я назвал sandbox.

Я настроил лимит процессов внутри /etc/security/limits.conf как это:

sandbox            hard    nproc            100

Но если я хочу подключиться к контейнеру как sandbox пользователь, ssh возвращает:

shell request failed on channel 0

Итак, я вошел как root и проверил, сколько процессов запущено sandbox user, но меньше 5.

Так что же может помешать мне войти через ssh?
Без установки ограничений вход по ssh для sandbox пользователь работает нормально.

Или есть другой способ предотвратить атаку вилкой бомбы?

любая ошибка при подключении к sshd регистрируется в /var/log/auth.log (в ОС на базе debian или безопасности в системах на основе Redhat)

Если это не так, установите LogLevel VERBOSE в /etc/ssh/sshd_config и перезагрузите sshd. Это покажет вам, почему в следующий раз sshd отказывается от вашего соединения.

Тем не менее, вернемся к вашему ограничителю вилки-бомбы: докерные машины основаны на LXC, контейнерной системе для Linux. LXC использует CGROUPS для управления ограничениями ресурсов для каждого контейнера.

в / sys / fs / cgroups вы можете установить любое ограничение для запущенного LXC, а в / Var / lib / lxc / vmname / config вы можете установить ограничения, которые будут применяться во время загрузки.

Ограничение количества процессов в cgroup осуществляется подсистема счетчика задач (добавлен в ядро ​​Linux в 2011 г. http://lkml.iu.edu//hypermail/linux/kernel/1109.0/01455.html )

С достаточно свежим ядром Linux ограничение количества разрешенных процессов для cgroup, таким образом, осуществляется путем добавления такой строки в файл конфигурации lxc:

lxc.cgroup.tasks.limit = 1024 

максимум для 1024 процессов

(отказ от ответственности: информация не проверена на реальной машине, требует подтверждения)