Thank you for reading this post, don't forget to subscribe!
Форк бомба Linux – это один из самых старых и наиболее эффективных способов вывести систему Linux из строя.
Это тип атаки типа “отказ в обслуживании”, которая работает путем порождения все большего количества процессов, пока в конечном итоге все ресурсы системы не будут исчерпаны, и она не рухнет.
В этом руководстве вы увидите, как разрушить систему Linux с помощью форк бомбы.
Мы также рассмотрим некоторые шаги, которые вы можете предпринять для предотвращения таких вещей, как форк бомба и чрезмерное количество порождаемых процессов, которые могут привести к краху вашей системы.
Следующая строка кода является коротким вариантом использования:
$ :(){ :|:& };:
На первый взгляд, это может показаться абракодаброй и довольно безобидным для выполнения, но давайте посмотрим, что здесь происходит на самом деле:
- : – это имя функции
- :|: вызывает саму функцию и порождает другой процесс
- & переводит процесс в фоновый режим, чтобы его нельзя было легко убить
- ; отмечает конец функции
- : снова вызывает функцию
Имейте в виду, что существуют и другие типы форк бомб.
Например, их можно запрограммировать на Perl, Python и других языках.
Та, которую мы показали здесь, является наиболее часто используемой и будет работать в оболочке Bash.
Вот тот же вызов функции в более удобочитаемом формате:
forkbomb(){ forkbomb | forkbomb & }; forkbomb
Как вы можете видеть, функция вызывает себя дважды .
Это действие начнет потреблять все ресурсы вашей системы и в конечном итоге приведет к краху вашей Linux-системы.
Ваши результаты могут отличаться, в зависимости от конфигурации системы Linux, используемого дистрибутива и т.д.
На нашей тестовой системе Ubuntu выполнение fork bomb заблокировало систему, и в конечном итоге терминал начал заполняться этими сообщениями:
bash: fork: retry: Resource temporarily unavailable.
Даже после закрытия терминала система была слишком медлительной и не реагировала ни на что, и мы были вынуждены перезагрузиться.
Как предотвратить крах Linux из-за форк бомбы
Форк бомба эффективна, потому что она способна порождать неограниченное количество процессов.
В конце концов, ваша система не сможет обработать их все, и произойдет сбой.
Поэтому мы можем предотвратить подобные сбои, ограничив количество процессов, которые может порождать пользователь или группа пользователей.
Лучший способ наложить ограничение на количество процессов, которые может порождать пользователь, – это отредактировать файл /etc/security/limits.conf.
В качестве примера, давайте попробуем ввести ограничение на количество процессов, которые могут порождать пользователи из группы “corporate”.
Добавление этой строки в файл позволит пользователям из группы порождать не более 30 процессов.
@corporate hard nproc 30
Что если мы хотим наложить ограничение на процесс для конкретного пользователя?
В этом случае мы поместим его имя пользователя в первое значение.
Вот строка, которую мы используем, чтобы ограничить пользователя с именем itsecforu в порождении максимум 40 процессов.
itsecforu hard nproc 40