В настоящее время я борюсь с ограничением количества процессов для пользователя, которого я назвал 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 процессов
(отказ от ответственности: информация не проверена на реальной машине, требует подтверждения)