The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Perl от nobody - как отследить кто запускает?"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Perl от nobody - как отследить кто запускает?"  
Сообщение от Mitya3003 (ok) on 06-Авг-07, 11:57 
Здравствуйте.

Недавно на своем хостинг сервере столкнулся с очень неприятной проблемой:

nobody юзер периодически запускает процессы одобного вида:

3693 nobody          1 139    0 13900K  6096K RUN    0  93:12 81.93% perl
3690 nobody          1 139    0 13900K  6100K CPU1   0  93:07 80.42% perl

И со временем каждый час их число растет. В результате сервер ложится из-за переполненного свапа.

kill 3693 - процесс не убивает, killall perl - тоже не убивает. помогает только reboot. но процессы периодически возникают вновь.

перл процесс от юзера рут выглядит так:

  557 root            1  76    0 69936K 44024K select 0   0:02  0.00% perl5.8.8


ps 3693
  PID  TT  STAT      TIME COMMAND
3693  ??  R     95:40.54 httpd -DSL -DSL\n (perl)

ps 3690
  PID  TT  STAT      TIME COMMAND
3690  ??  R     95:45.15 httpd -DSL -DSL\n (perl)


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

Благодарю за ответ.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Perl от nobody - как отследить кто запускает?"  
Сообщение от NuINu (??) on 06-Авг-07, 12:12 
>[оверквотинг удален]
>  PID  TT  STAT      
>TIME COMMAND
> 3690  ??  R     95:45.15 httpd
>-DSL -DSL\n (perl)
>
>
>Подскажите каким образом можно вычислить того кто запускает данные скрипты, адрес скрипта,
>как можно поставить лимит на выполнение perl скриптов.
>
>Благодарю за ответ.

смотри /var/log/apache/*

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Perl от nobody - как отследить кто запускает?"  
Сообщение от Mitya3003 (ok) on 06-Авг-07, 12:53 

>смотри /var/log/apache/*

в логах апача access_log запуска скритпов perl не наблюдается.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Perl от nobody - как отследить кто запускает?"  
Сообщение от NuINu (??) on 06-Авг-07, 13:37 
>
>>смотри /var/log/apache/*
>
>в логах апача access_log запуска скритпов perl не наблюдается.

ну посмотри тогда для начала PPID процессов ps axl и пройдись по цепочке pid-ppid
по крайней мере узнаешь кто.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Perl от nobody - как отследить кто запускает?"  
Сообщение от Mitya3003 (ok) on 07-Авг-07, 01:38 
>>
>>>смотри /var/log/apache/*
>>
>>в логах апача access_log запуска скритпов perl не наблюдается.
>
>ну посмотри тогда для начала PPID процессов ps axl и пройдись по
>цепочке pid-ppid
>по крайней мере узнаешь кто.

Вот сейчас

s8# ps 85391
  PID  TT  STAT      TIME COMMAND
85391  ??  R     92:53.15 [httpd] (perl)
s8# ps axl 85391
  UID   PID  PPID CPU PRI NI   VSZ   RSS MWCHAN STAT  TT       TIME COMMAND
65534 85391     1   0 139  0 12464  4600 -      R     ??   92:58.89 [httpd] (perl)


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Perl от nobody - как отследить кто запускает?"  
Сообщение от NuINu (??) on 07-Авг-07, 09:54 

>s8# ps axl 85391
>  UID   PID  PPID CPU PRI NI  
> VSZ   RSS MWCHAN STAT  TT  
>    TIME COMMAND
>65534 85391     1   0 139  
>0 12464  4600 -      R
>    ??   92:58.89 [httpd] (perl)

похоже эта штука демонизировалась, и родителя мы не найдем(ну какая фиг разница все равно ведь видно что это httpd)
ну и фиг с ним, попробуй найти этот процесс в файловой системе /proc
и просто посмотри cmdline

да если найдешь скрипт не удаляй его! вставь команду вывода, ну хотябы времени запуска, а потом в лог файле нттп ищи был ли какой запрос в это время.

можно еще поискать через lsof может чего интересное напишет.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Perl от nobody - как отследить кто запускает?"  
Сообщение от Mitya3003 (ok) on 07-Авг-07, 01:39 
>>
>>>смотри /var/log/apache/*
>>
>>в логах апача access_log запуска скритпов perl не наблюдается.
>
>ну посмотри тогда для начала PPID процессов ps axl и пройдись по
>цепочке pid-ppid
>по крайней мере узнаешь кто.

Вот сейчас
85391 nobody          1 139    0 12464K  4600K RUN    0  92:43  3.71% perl

ps 85391
  PID  TT  STAT      TIME COMMAND
85391  ??  R     92:53.15 [httpd] (perl)

ps axl 85391
  UID   PID  PPID CPU PRI NI   VSZ   RSS MWCHAN STAT  TT       TIME COMMAND
65534 85391     1   0 139  0 12464  4600 -      R     ??   92:58.89 [httpd] (perl)


UID 65534 - это естессно юзер нободи. Хоть убейте не пойму куда дальше копать..


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Perl от nobody - как отследить кто запускает?"  
Сообщение от anonymous (??) on 07-Авг-07, 02:15 
>>>
>>>>смотри /var/log/apache/*
>>>
>>>в логах апача access_log запуска скритпов perl не наблюдается.

[...]
>UID 65534 - это естессно юзер нободи. Хоть убейте не пойму куда
>дальше копать..

Ещё раз говорю: смотри в логах попытки взлома сайтов.  Какая-то из них была успешной и в результате загрузились куда-то на сервер эти скрипты (возможно в /tmp, хотя может и в каталог с файлами сайтов, если они были доступны для записи с правами сервера)

Как его убить: kill -9 85391


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Perl от nobody - как отследить кто запускает?"  
Сообщение от anonymous (??) on 06-Авг-07, 20:26 
>Здравствуйте.
>
>Недавно на своем хостинг сервере столкнулся с очень неприятной проблемой:
>
>nobody юзер периодически запускает процессы одобного вида:

99% что эти скрипты запускаются через дырку в одном из скриптов на веб-сервере.  Сейчас нужно действительно выяснить масштабы взлома, возможно даже приостановить работу сайта проблемного клиента до решения проблемы (сам сталкивался -- атакующие довольно часто повторяют атаку чтобы скрипты не убивали)

А настоящим решением будет запуск процессов каждого клиента от отдельного пользователя самого клиента.  Тогда сразу будет видно, чей сайт поломали.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Perl от nobody - как отследить кто запускает?"  
Сообщение от Mitya3003 (ok) on 07-Авг-07, 09:35 

>А настоящим решением будет запуск процессов каждого клиента от отдельного пользователя самого
>клиента.  Тогда сразу будет видно, чей сайт поломали.

Если подскажите как это реализовать (сервер с cPanlel) - буду признателен.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "Perl от nobody - как отследить кто запускает?"  
Сообщение от NuINu (??) on 07-Авг-07, 14:12 
>
>>А настоящим решением будет запуск процессов каждого клиента от отдельного пользователя самого
>>клиента.  Тогда сразу будет видно, чей сайт поломали.
>
>Если подскажите как это реализовать (сервер с cPanlel) - буду признателен.

кстати! переименуй программу perl в perl_old

и создай файлик выполняемый perl :)
#!/bin/sh
O1=/you_nobody_access_write/hack.log
echo `pwd` >>$O1
echo "cmd \$1 $1" >>$O1
cat $1 >>$O1

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

11. "Perl от nobody - как отследить кто запускает?"  
Сообщение от phpcoder email(??) on 07-Авг-07, 14:20 
[...]
>и создай файлик выполняемый perl :)
>#!/bin/sh
>O1=/you_nobody_access_write/hack.log
>echo `pwd` >>$O1
>echo "cmd \$1 $1" >>$O1
>cat $1 >>$O1

Чтобы хакер ничего не заметил, и другие программы, которые могут использовать perl не перестали работать неплохо было бы добавить последнюю строку:

exec perl "$@"

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

12. "Perl от nobody - как отследить кто запускает?"  
Сообщение от NuINu (??) on 07-Авг-07, 14:27 
>[оверквотинг удален]
>>#!/bin/sh
>>O1=/you_nobody_access_write/hack.log
>>echo `pwd` >>$O1
>>echo "cmd \$1 $1" >>$O1
>>cat $1 >>$O1
>
>Чтобы хакер ничего не заметил, и другие программы, которые могут использовать perl
>не перестали работать неплохо было бы добавить последнюю строку:
>
>exec perl "$@"

!!! точно, эт я не догадался!
ну только perl_old  соответственно!

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

13. "Perl от nobody - как отследить кто запускает?"  
Сообщение от Mitya3003 (ok) on 07-Авг-07, 23:35 
>[оверквотинг удален]
>>>echo "cmd \$1 $1" >>$O1
>>>cat $1 >>$O1
>>
>>Чтобы хакер ничего не заметил, и другие программы, которые могут использовать perl
>>не перестали работать неплохо было бы добавить последнюю строку:
>>
>>exec perl "$@"
>
>!!! точно, эт я не догадался!
>ну только perl_old  соответственно!

Сделал все как вы сказали: но теперь все скрипты выдают еррор 500 - Premature End of script headers.

в чем может быть проблема? На файлах perl и perl_old права 755, в лог разрешена запись всем.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

15. "Perl от nobody - как отследить кто запускает?"  
Сообщение от NuINu (??) on 08-Авг-07, 09:23 
>[оверквотинг удален]
>>>exec perl "$@"
>>
>>!!! точно, эт я не догадался!
>>ну только perl_old  соответственно!
>
>Сделал все как вы сказали: но теперь все скрипты выдают еррор 500
>- Premature End of script headers.
>
>в чем может быть проблема? На файлах perl и perl_old права 755,
>в лог разрешена запись всем.

чужая машина потемки :)
смотри сюда, чел уже решал подобные проблемы:
http://www.next-step.ru/blog/premature-end-of-script-headers-%d0%b8%d0%bb%d0%b8-%d0%bf%d1%80%d0%be%d1%81%d1%82%d0%be-internal-server-error.htm

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

16. "Perl от nobody - как отследить кто запускает?"  
Сообщение от NuINu (??) on 08-Авг-07, 09:30 

>Сделал все как вы сказали: но теперь все скрипты выдают еррор 500
>- Premature End of script headers.
>
>в чем может быть проблема? На файлах perl и perl_old права 755,
>в лог разрешена запись всем.

или вот еще:
---------------------------------------------------------------------------
David Mcguire wrote:

>[оверквотинг удален]
>Linux: Mandrake 9.1 (I'm a newbie, I apologize)
>DB: PostgreSQL 7.3.2
>Perl: 5.80
>Other info:
>Freeradius 0.81 is using PostgreSQL for it's
>authentication and that is working fine.
>Nothing else is being run on this box. Not even a mail
>server... yet.
>  
>

I too had initial problems getting past the Premature end of script
headers error on Mandrake 9.1

Once I found the cause, it all came together.

Mandrake runs both the Httpd and httpd-perl daemons.  The trick is
getting the proper daemon to recognize the configuration data.  I was
using the HTML::Mason (the urpmi installation is not suitable, you
should install with the perl -MCPAN -e  shell command).  In order to get
the httpd-perl daemon to recognize the Directory Path for the ASP or
MASON configuration, you need to define the Directory in the PERLPROXIED
configuration settings of /etc/httpd/conf/httpd.conf (I chose to install
the apache-1.3.28 server).

Good Luck.

--
Albert E. Whale, CISSP - Sr. Security, Network, and Systems Consultant

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

17. "Perl от nobody - как отследить кто запускает?"  
Сообщение от anonymous (??) on 08-Авг-07, 10:13 
>[оверквотинг удален]
>>>exec perl "$@"
>>
>>!!! точно, эт я не догадался!
>>ну только perl_old  соответственно!
>
>Сделал все как вы сказали: но теперь все скрипты выдают еррор 500
>- Premature End of script headers.
>
>в чем может быть проблема? На файлах perl и perl_old права 755,
>в лог разрешена запись всем.

Попробуйте запустить любой (лучше что-то попроще) скрипт на перле из консоли, и проверить, что он работает и не выводит никакого "мусора" перед заголовками.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

14. "Perl от nobody - как отследить кто запускает?"  
Сообщение от anonymous (??) on 08-Авг-07, 01:11 
>
>>А настоящим решением будет запуск процессов каждого клиента от отдельного пользователя самого
>>клиента.  Тогда сразу будет видно, чей сайт поломали.
>
>Если подскажите как это реализовать (сервер с cPanlel) - буду признателен.

Я не знаю, как к этому отнесётся cPanel, но для начала нужно попробовать.

Называется это suexec.  Вот тут объяснено как настроить: http://wiki.archlinux.org/index.php/Apache,_SuExec_and_virtual_Hosts

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

18. "Perl от nobody - как отследить кто запускает?"  
Сообщение от Mitya3003 (ok) on 08-Авг-07, 20:35 
>>
>>>А настоящим решением будет запуск процессов каждого клиента от отдельного пользователя самого
>>>клиента.  Тогда сразу будет видно, чей сайт поломали.
>>
>>Если подскажите как это реализовать (сервер с cPanlel) - буду признателен.
>
>Я не знаю, как к этому отнесётся cPanel, но для начала нужно
>попробовать.
>
>Называется это suexec.  Вот тут объяснено как настроить: http://wiki.archlinux.org/index.php/Apache,_SuExec_and_virtual_Hosts

Что самое интересное - suexec стоит на сервере, уcтановлен средствами cpanel


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

19. "Perl от nobody - как отследить кто запускает?"  
Сообщение от anonymous (??) on 08-Авг-07, 23:11 
>>Называется это suexec.  Вот тут объяснено как настроить: http://wiki.archlinux.org/index.php/Apache,_SuExec_and_virtual_Hosts
>
>Что самое интересное - suexec стоит на сервере, уcтановлен средствами cpanel

Значит не активирован/не настроен.  Иначе владельцем процесса был бы не nobody.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

20. "Perl от nobody - как отследить кто запускает?"  
Сообщение от Mitya3003 (ok) on 22-Авг-07, 09:34 
suexec стоял и работал.

кто-то через веб шелл запускал подобные скрипты. проблема решилась после запрета в php.ini функций exec, shell_exec

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

21. "Perl от nobody - как отследить кто запускает?"  
Сообщение от anonymous (??) on 23-Авг-07, 06:33 
>suexec стоял и работал.
>
>кто-то через веб шелл запускал подобные скрипты. проблема решилась после запрета в
>php.ini функций exec, shell_exec

Значит php стоит модулем для Apache и соответственно выполняется в его адресном пространстве.  Тут suexec не помогает, нужно php выносить как cgi или fastcgi.  Ну конечно же, если после запрета exec ни один скрипт не сломался, значит всё прекрасно и это хорошее решение в данной ситуации.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру