Вопрос или проблема
Я уже несколько месяцев использую выделенный высокопроизводительный сервер AMD с Ubuntu 20.04.
Внезапно сегодня ночью загрузка ЦП упала до 100%, и я был вынужден убить сервис “perfctl”, который появился в 2 часа ночи.
Я использую Apparmor:
модуль apparmor загружен.
Загружено 8 профилей.
8 профилей в режиме принуждения.
/usr/lib/NetworkManager/nm-dhcp-client.action
/usr/lib/NetworkManager/nm-dhcp-helper
/usr/lib/connman/scripts/dhclient-script
/usr/sbin/mysqld
/{,usr/}sbin/dhclient
lsb_release
nvidia_modprobe
nvidia_modprobe//kmod
0 профилей в режиме жалобы.
1 процесс имеет определенные профили.
1 процесс в режиме принуждения.
/usr/sbin/mysqld (1124)
0 процессов в режиме жалобы.
0 процессов без ограничений, но с определенным профилем.
Что могло это вызвать и как это можно предотвратить в будущем?
Тот факт, что пользователь www
, немного настораживает. Вы используете AppArmor? Вы запускаете веб-сервис, который доступен для публики?
Мне кажется, что ваш сервер скомпрометирован, и кто-то использовал пользователя www
для запуска бинарного файла, который они назвали perfctl
, чтобы скрыть его истинную природу.
Вам стоит прочитать Как мне поступить с скомпрометированным сервером?
Я столкнулся с тем же вредоносным ПО.
Вы можете попробовать проверить все задачи cron, чтобы выяснить, подозрительные они или нет.
- проверьте список задач cron для всех пользователей
for user in $(cut -f1 -d: /etc/passwd); do echo $user; crontab -u $user -l; done
Я нашел вредоносное ПО с помощью приведенной выше команды, и вы должны удалить его.
www
11 * * * * /home/www/.config/cron/perfcc
Сначала остановите процесс, чтобы предотвратить потребление ресурсов ЦП:
sudo killall perfctl
Найдите и удалите файлы, связанные с процессом perfctl. Используйте команду find для поиска возможных местоположений:
sudo find / -name perfctl
Удалите все найденные файлы:
sudo rm -f /path/to/perfctl
Ответ или решение
Проблема с 100% загрузкой процессора, вызванная службой "perfctl", может быть связана с несколькими факторами, включая возможность компрометации вашего сервера. Вот полное руководство по диагностике и устранению данной проблемы.
Возможные причины:
-
Компрометация сервера: Имя пользователя
www
вызывает подозрения, так как это может указывать на то, что сервер был скомпрометирован, и злоумышленник использует этот аккаунт для запуска вредоносного ПО, замаскированного подperfctl
. -
Несанкционированная служба: Если
perfctl
появился внезапно и без вашего ведома, это также может указывать на то, что это неофициальная служба, запущенная сторонним лицом.
Действия по устранению:
-
Прекращение процесса: Сначала остановите вызывающий 100% нагрузку процесс, чтобы предотвратить дальнейшее использование ресурсов:
sudo killall perfctl
-
Проверка запланированных задач: Проверьте все запланированные задания на наличие подозрительных записей. Используйте следующую команду для просмотра cron-задач всех пользователей:
for user in $(cut -f1 -d: /etc/passwd); do echo $user; crontab -u $user -l; done
Убедитесь, что нет подозрительных задач, например, связанных с файлом или командой, которая запускает
perfctl
. -
Поиск и удаление связанных файлов: Найдите и удалите все файлы, связанные с
perfctl
. Используйте следующую команду для поиска:sudo find / -name perfctl
После этого удалите все найденные файлы:
sudo rm -f /path/to/perfctl
Профилактика:
-
Контроль доступа: Убедитесь, что доступ к вашему серверу ограничен только доверенным пользователям. Рассмотрите возможность использования SSH-ключей для авторизации вместо паролей.
-
Регулярное обновление: Поддерживайте все программное обеспечение на сервере в актуальном состоянии, включая операционную систему и установленные пакеты.
-
Использование системы мониторинга: Настройте мониторинг для обнаружения неожиданных изменений в использовании процессора и несанкционированных запусков служб.
-
Обеспечение безопасности: Рассмотрите возможность использования дополнительных мер безопасности, таких как файрволы, анти-вирусные решения, а также регулярный аудит безопасности.
-
Резервное копирование: Регулярно выполняйте резервное копирование данных, чтобы у вас была возможность восстановить систему в случае серьезной компрометации.
Заключение
Если вы подозреваете, что ваш сервер действительно был скомпрометирован, следует рассмотреть возможность проведения комплексного аудита безопасности и, возможно, полной переустановки системы после резервного копирования данных. Кроме того, информация о вредоносной активности поможет вам избежать подобных инцидентов в будущем.