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

8

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

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

sandbox            hard    nproc            100

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

shell request failed on channel 0

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

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

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

ехр
источник

Ответы:

2

любая ошибка при подключении к 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 процессов

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

Бенджамин Соннтаг
источник
1
Спасибо. Для исправления последние контейнеры Docker не основаны на LXC, LXC доступен в качестве драйвера. Собственный драйвер Docker-контейнеров основан непосредственно на пространствах имен ядра. Но мне очень нравится идея с cgroups. Я не знал, что можно ограничить количество процессов. Я определенно собираюсь попробовать это.
eXPi
2
На сегодняшний день подсистема счетчиков задач еще не попала в официальное ядро.
Фабиан Якобс