Прежде всего, отказник, я не системный администратор, меня просто попросили проверить, почему наша виртуальная машина использует много процессора.
Получается, что этот процесс запущен вечно на 200%
$top
PID ПОЛЬЗОВАТЕЛЬ PR NI VIRT RES SHR S% CPU% MEM TIME + COMMAND
11058 www-data 20 0 269564 5812 384 S 185,5 0,1 2: 42,95 .resyslogd
После некоторых исследований я понял, что это регистратор (на самом деле я обнаружил, что регистратором является rsyslog, но я думаю, что rеsyslog - то же самое.
Итак, я заметил, что было много попыток подключения (от ботов, я предполагаю), которые запускали запись в регистратор. Поэтому я решил прекратить использование паролей для входа в систему и переключился на аутентификацию по ключу. Это не повлияло на использование процессора, хотя записей в регистраторе теперь меньше, чем раньше. для случайных IP-адресов, которые я видел в регистраторе, я добавил их в /etc/hosts.deny.
После всего этого использование процессора вообще не упало. тот же процесс использует более 100% ядра процессора.
Я знаю, что www-data - это веб-сервер, предполагающий apache, и не знаю, действительно ли он использовался по какой-либо причине.
Любая помощь высоко ценится.
Выглядит очень подозрительно. rsyslogd
определенно не должен работать как пользователь www-data
!
.resyslogd
определенно НЕ то же самое как rsyslogd
, но он пытается представить, что это процесс регистратора, чтобы избежать подозрений.
Это точно не регистратор. Вероятно, это майнер монет или что-то подобное, которое проникло на ваш сервер, используя уязвимость на вашем веб-сервере, или один из скриптов (CGI, PHP, Perl и т. Д.), На запуск которого настроен веб-сервер.
Если у вас есть root-доступ (или вы можете переключиться на www-data
user) вы можете остановить и проанализировать этого червя. Если нет, обратитесь к системному администратору за помощью.
Чтобы он больше не тратил впустую ваш процессор, запустите kill -STOP 11058
(либо как root
или как www-data
). Этот сигнал не может быть перехвачен программой: он просто сообщает ядру не выделять больше процессорного времени для этого процесса, пока не будет указано иное. По сути, он останавливает процесс на своем пути.
Затем используйте /proc
файловая система для сброса фактического программного кода, используемого червем, с помощью /proc/<PID of the suspicious process>/exe
. В вашем случае PID - 11058, поэтому:
sudo cat /proc/11058/exe >/tmp/dirty_worm
Это должно работать, даже если червь удалил свой исполняемый файл (что он, вероятно, и сделал, чтобы скрыть себя).
Затем вы можете использовать любые команды для анализа исполняемого файла, например
strings /tmp/dirty_worm | less
чтобы узнать, содержит ли он какой-либо читаемый текст, который может помочь идентифицировать его и его цель.
Затем вы можете просмотреть всю доступную информацию в разделе /proc
чтобы увидеть, что происходит в процессе. Например, ls -l /proc/11058/fd
должен показать, какие файлы были открыты, ls -l /proc/11058/map_files
должен перечислить все библиотеки и другие файлы с отображением памяти, которые он использовал, и т. д.
После того как вы соберете всю необходимую информацию, вы, наконец, сможете удалить этот процесс с помощью kill -9 11058
. Это одна из немногих ситуаций, когда использование kill -9
определенно оправдано.
Поскольку похоже, что этот процесс попал на ваш сервер через веб-сервер, вам следует выключить веб-сервер, проверить его конфигурацию, удалить с него все (веб-приложения, сценарии CGI / PHP / Perl и т. Д.), Что больше не используется. , и убедитесь, что все вы делать использование актуально и безопасно.