Пятница, 29.03.2024, 12:33
# FreeBSD ГлавнаяРегистрацияВход
Приветствую Вас Гость | RSS
Меню сайта
Категории раздела
Мои статьи [167]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
 Каталог статей 
Главная » Статьи » Мои статьи

Вирусы на Linux. Много запущенных процессов perl, нагружающих процессор

Вирусы на Linux в нашей компании достаточно редкое явление, но иногда приходят клиенты с медленно работающими сайтами, и в процессе обнаружения узких мест обнаруживается, что сервер себя странно ведет. Сегодня расскажу об одном таком случае.
К нам обратился клиент с медленно работающим сайтом, я подключился по ssh и стал смотреть на что же тратятся ресурсы сервера. Запустил top и увидел следующую картину:

1125 wwwuser 20 0 4708 2472 1032 R 32 0.1 8133:04 perl 
1213 wwwuser 20 0 4708 2548 1100 R 32 0.1 18558:18 perl 
3912 wwwuser 20 0 4708 2532 1100 R 32 0.1 17291:47 perl 
21038 wwwuser 20 0 4708 2384 956 R 29 0.1 3323:27 perl 
1541 wwwuser 20 0 4712 2384 956 R 28 0.1 10712:59 perl 
21029 wwwuser 20 0 4708 2544 1092 R 28 0.1 5689:23 perl 
22862 wwwuser 20 0 4712 2548 1092 R 28 0.1 6588:16 perl 
1196 wwwuser 20 0 4708 2548 1100 R 28 0.1 6191:47 perl 
1546 wwwuser 20 0 4712 2384 956 R 27 0.1 16920:10 perl 
1186 wwwuser 20 0 4708 2540 1100 R 27 0.1 16774:50 perl 
3903 wwwuser 20 0 4708 2476 1036 R 27 0.1 18234:33 perl 
9886 wwwuser 20 0 4712 2480 1032 R 27 0.1 1751:53 perl 

То есть процессор нагружали только процессы perl - и это при том что сервер работает на связке nginx + apache, которые обслуживают Drupal сайт (соответсвенно на php).
Решил посмотреть на вывод

ps aux | grep perl

Не тут-то было, процессов perl вообще не было.

Далее посмотреть вывод команды ps aux

wwwuser 18979 0.0 0.0 4844 228 ? S Apr14 0:00 /usr/local/apache/bin/httpd -DSSL
wwwuser 18983 0.0 0.3 4844 1928 ? S Apr14 10:28 /usr/local/apache/bin/httpd -DSSL
wwwuser 18990 0.0 0.0 4844 228 ? S Apr14 0:00 /usr/local/apache/bin/httpd -DSSL
wwwuser 18994 0.0 0.1 4844 748 ? S Apr14 1:55 /usr/local/apache/bin/httpd -DSSL
wwwuser 18997 0.0 0.0 4844 228 ? S Apr14 0:00 /usr/local/apache/bin/httpd -DSSL
wwwuser 19001 0.0 0.3 4844 1804 ? S Apr14 10:28 /usr/local/apache/bin/httpd -DSSL
wwwuser 19224 0.0 0.0 4844 228 ? S Apr14 0:00 /usr/local/apache/bin/httpd -DSSL
wwwuser 19228 0.0 0.3 4844 1824 ? S Apr14 10:26 /usr/local/apache/bin/httpd -DSSL
wwwuser 20667 0.0 0.0 4844 228 ? S Apr14 0:00 /usr/local/apache/bin/httpd -DSSL
wwwuser 20671 0.0 0.3 4844 1804 ? S Apr14 10:16 /usr/local/apache/bin/httpd -DSSL

Помимо большинства нормальных процессов в выводе присутсвует много процессов, запущенных командой: /usr/local/apache/bin/httpd
При этом файла /usr/local/apache/bin/httpd не существовало.

Далее выполняем команду lsof -p 1125 (просмотр используемых файлов процессом 1125), и получаем следующий вывод:

perl 1125 wwwuser cwd DIR 8,5 36864 69410 /tmp
perl 1125 wwwuser rtd DIR 8,5 4096 2 /
perl 1125 wwwuser txt REG 8,5 1224372 88910 /usr/bin/perl
perl 1125 wwwuser mem REG 8,5 17836 99536 /usr/lib/perl/5.10.1/auto/IO/IO.so
perl 1125 wwwuser mem REG 8,5 1421892 203999 /lib/libc-2.12.1.so
perl 1125 wwwuser mem REG 8,5 121578 204013 /lib/libpthread-2.12.1.so
perl 1125 wwwuser mem REG 8,5 9736 204002 /lib/libdl-2.12.1.so
perl 1125 wwwuser mem REG 8,5 21964 99538 /usr/lib/perl/5.10.1/auto/Socket/Socket.so
perl 1125 wwwuser mem REG 8,5 118084 203996 /lib/ld-2.12.1.so
perl 1125 wwwuser mem REG 8,5 149392 204003 /lib/libm-2.12.1.so
perl 1125 wwwuser mem REG 8,5 38360 204001 /lib/libcrypt-2.12.1.so
perl 1125 wwwuser 0r CHR 1,3 0t0 4299 /dev/null
perl 1125 wwwuser 1w FIFO 0,8 0t0 1688813 pipe
perl 1125 wwwuser 2w FIFO 0,8 0t0 1688813 pipe
perl 1125 wwwuser 3w FIFO 0,8 0t0 1688813 pipe

Видим запуск /usb/bin/perl.

Дальше наши действия простые

rm /usr/bin/perl 
killall -9 perl

После этого проблема исчезла, но подозреваю, что это еще не все.

P.S. Если кто сталкивался с такой проблемой, напишите, пожалуйста ваше решение в комментариях.

UPD. Спасибо, Сергею, что указал на неполноту статьи. Конечно, просто так сервер оставить нельзя, потому что без /usr/bin/perl некоторые системные скрипты не смогут отрабатывать.

После удаления я сделал ссылку /usr/bin/perl на файл /usr/bin/perl5.10.1

ln -s /usr/bin/perl5.10.1 /usr/bin/perl
Категория: Мои статьи | Добавил: Admin (20.11.2014)
Просмотров: 1218 | Комментарии: 5 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Copyright MyCorp © 2024Сделать бесплатный сайт с uCoz