Защита от вилочной бомбы не работает: количество процессов не ограничено
Я просто пришел к выводу, что моя система не ограничивает количество процессов на пользователя должным образом, таким образом, не препятствуя тому, чтобы пользователь делал вилочную бомбу и разрушал всю систему:
user@thebe:~$ cat /etc/security/limits.conf | grep user
user hard nproc 512
user@thebe:~$ ulimit -u
1024
user@thebe:~$ :(){ :|:& };:
[1] 2559
user@thebe:~$ ht-bash: fork: Cannot allocate memory
-bash: fork: Cannot allocate memory
-bash: fork: Cannot allocate memory
-bash: fork: Cannot allocate memory
-bash: fork: Cannot allocate memory
-bash: fork: Cannot allocate memory
-bash: fork: Cannot allocate memory
-bash: fork: Cannot allocate memory
...
Connection to thebe closed by remote host.
Это ошибка или почему игнорируется лимит в limits.conf
и почему не применяется ограничение, которое ulimit -n
утверждает, что это?
PS: я действительно не думаю, что ограничение памяти достигло предела процесса. Эта машина имеет 8 ГБ оперативной памяти, и она использовала только 4% в то время, когда я сбросил вилочную бомбу.
РЕДАКТИРОВАТЬ:
Мне удалось воспроизвести это на live CD. Так что я думаю, это должно быть ошибкой. В основном это приводит к уничтожению всех процессов, включая критичные для системы, такие как X11, SSHD и т. Д.
Любой пользователь может сбить систему.
1 ответ
Получается что /etc/security/limits.conf
работает, но нуждается в перезагрузке, прежде чем интерпретировать. Выйти не достаточно.
Рекомендую кому-нибудь ограничить конфигурационный файл вроде
user hard nproc 512
замещать user
с любым именем пользователя, которое вы хотели бы ограничить.
Или лучше:
@group hard nproc 512
замещать group
с любой группой пользователей, которую вы хотите ограничить.