Форк бомба Linux – это один из самых старых и наиболее эффективных способов вывести систему 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 Заключение В этом руководстве мы рассмотрели, как разрушить систему Linux с помощью команды fork bomb. Мы также узнали, как работает ajhr бомба, и как предотвратить ее использование пользователями для разрушения системы. Ответственность за ограничение количества процессов, доступных для порождения пользователем, находится в руках системного администратора.