Как защитить Ubuntu от вилочной бомбы

70

Я слышал, как кто-то говорил о вилочной бомбе, я провел какое-то исследование и нашел какую-то ужасную информацию о некоторых странных персонажах, которых люди могут вводить в командной строке, и в результате на компьютере возникают плохие вещи. Я, конечно, не выдавал команды, которые я не понимаю, но никто не знает, что может случиться.

Я слышал, что какая-то ОС позволяет администратору устанавливать ограничение на пользовательские процессы для смягчения последствий использования вилочных бомб, является ли эта защита в Ubuntu по умолчанию или может ли человек с привилегией sudo установить это? Если да, то как?

    
задан dblang 27.01.2011 в 16:44
источник

2 ответа

68

Вы можете легко ограничить количество процессов, которые могут быть созданы в Ubuntu и большинстве других дистрибутивов Linux, путем изменения /etc/security/limits.conf

sudoedit /etc/security/limits.conf

Затем добавьте эту строку в конец этого файла:

*    hard     nproc     nnn

, где:

  • hard устанавливает лимит на уровне ядра, чтобы он не мог быть изменен без перезагрузки.
  • nproc - максимальное количество процессов на пользователя.
  • nnn - это номер, который вы должны рассчитать для своей системы:

    ps aux -L | cut --delimiter=" " --fields=1 | sort | uniq --count | sort --numeric-sort | tail --lines=1
    

В приведенной выше команде перечислены все процессы для всех пользователей , включая потоки , суммируйте их и укажите имя пользователя с наибольшим количеством процессов. Чтобы быть в безопасности, откройте столько приложений, сколько вам нужно, прежде чем запускать указанную выше команду, а затем удвойте этот номер для безопасности.

После того, как этот предел вставлен на место, вам необходимо перезагрузить компьютер, но он повлияет на каждого пользователя non-root в системе. Поэтому, если вилка-бомба выполняется любым пользователем, не являющимся пользователем root, у нее будет этот жесткий предел.

Ограничения группы и подстановочных знаков не применяются к пользователю root по умолчанию . Используйте литеральное имя пользователя root в правилах, если вы хотите применить правило к суперпользователю.

Кроме того, если вы не собираетесь перезапускать в ближайшее время, вы можете использовать sudo ulimit -u 800 , который поместит ограничение только на текущий сеанс , но может быть легко обойден вилкой с sudo привилегий

После перезапуска будет использоваться то, что в /etc/security/limits.conf .

Дополнительная информация о вилочных бомбах: они не являются вредоносными программами или чем-то ужасными. Они обычно состоят из чего-то основного, как сценарий, который вызывает себя дважды, тем самым увеличивая свое присутствие на машине экспоненциально. Несмотря на то, что они имеют небольшой объем памяти при быстром темпе, они многократно заполняют всю доступную оперативную память, и машина зависает или перезагружается. Единственная опасность - потеря несохраненной информации. Я бы классифицировал forkbomb намного больше, чем шутку, чем вредоносное программное обеспечение.

Важное напоминание:

Вы редко должны выполнять что-либо в командной строке, если вы не 98% уверены в ее действии. Если вы не можете прочитать команды, которые вы выполняете, не делайте этого. Это касается двойных и нечитаемых фрагментов символов hex / base64, которые могут использоваться для скрытия всех видов гадостей. Если вы не уверены в команде, вы всегда можете найти ее в Ubuntu Manpages и быть дополнительными предостережениями при использовании sudo , поскольку будет выполняться как пользователь root.

    
ответ дан Marco Ceppi 27.01.2011 в 16:52
источник
0

Простым способом, который мне нравится, является создание псевдонима, хотя псевдоним «не всегда применяется», проверьте ответ выше.

alias :="echo No."

Теперь

$ :(){ :|: & };:

bash: syntax error near unexpected token '('     

ответ дан Adrian Webster 02.01.2016 в 03:27