13
#include <stdlib.h>
#include <unistd.h>

int main()
{
   while(1)
      fork();
}

Это код для вилочной бомбы.

В нашем колледже мы подключаемся через telnet, т.е. протокол обслуживания клиентов. Около 100 систем подключены к серверу. Внезапно мы увидели, что сервер стал медленно работать, и через некоторое время он вышел из строя. Я узнал, что кто-то применил вилочную бомбу.

Как мы можем определить, в какой системе реализована вилочная бомба? И как мы можем это остановить?

Одним из способов является ограничение максимального количества процессов, которыми может владеть один пользователь. Есть ли способ остановить его и узнать, из какой системы он был реализован?

2 ответа2

16

Одним из способов является ограничение количества процессов, которые может запустить пользователь.

Просто войдите как root и отредактируйте этот файл, чтобы добавить пользователей и настроить их ограничение.

# vi /etc/security/limits.conf

Добавить эту строку в файл

john hard nproc 10

Теперь пользователь john может создать только 10 процессов.

14

Чтобы остановить работающую вилочную бомбу, вы можете использовать killall <name> чтобы убить все процессы бомбы. Однако, поскольку бомба-вилка обычно приводит к невероятно высокой нагрузке на систему, вы не сможете подключиться к ней по SSH или выполнить ее. Таким образом, перезагрузка может быть необходима или, по крайней мере, намного быстрее.

Если у каждого пользователя есть собственная учетная запись в системе, вы можете просто проверить домашний каталог каждого и найти исполняемый файл. Скорее всего, он также загрузил исходный код, поэтому найти его не должно быть слишком сложно. Если это была общая учетная запись для всех студентов, вам не повезло. Особенно после того, как сеанс telnet или ssh пользователя завершился, у вас нет возможности узнать, кто его запустил.

Однако вместо того, чтобы наказать пользователя, взорвавшего эту вилочную бомбу, вы должны исправить конфигурацию системы, чтобы обезвредить вилочные бомбы. Вы можете установить пределы процессов для каждого пользователя с помощью /etc/security/limits.conf и, таким образом, предотвратить выход из-под контроля вилочной бомбы - например, всего с 50 процессами вилочная бомба не нанесет большого ущерба.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .