Как убрать kdevtmpfsi? Процесс kdevtmpfsi забивает 100% процессора на Ubuntu. Сервер на Ubuntu загружен на 100%. А в процессах висит какой-то kdevtmpfsi? Это майнинговый троян.
Если порыться в интернете, то можно найти рецепты, в которых просто блокируется запись файлов /tmp/kdevtmpfsi и /tmp/kinsing. Но со временем эти трояны научились обходить эту защиту.
Ниже инструкция, как победить этот троян на февраль 2021.
Шаг 1. Узнать врага в лицо
Запускаем монитор процессов htop:
htop
В списке находим эти процессы, которые забивают процессор: /tmp/kdevtmpfsi и /tmp/kinsing
У них могут быть и немного дополненные имена, например kdevtmpfsi12341234 или другое расположение, например в папке /var/tmp/ вместо /tmp.
Шаг 2. Убиваем злодея
Убиваем процессы, чтобы они не мешали работать, но действовать нужно быстро.
killall kdevtmpfsi && killall kinsing
Шаг 3. Удаляем лишние файлы
rm /tmp/kdevtmpfsi && rm /tmp/kinsing
Помните, что реальное название и размещение файлов мы посмотрели в шаге 1.
Шаг 4. Искоренить
Теперь создадим эти же файлы заново, и запретим в них запись. Это позволит ограничить повторное создание файлов.
<code>touch /tmp/kdevtmpfsi && touch /var/tmp/kinsing</code>
<code>echo "kdevtmpfsi is fine now" > /tmp/kdevtmpfsi</code>
<code>echo "kinsing is fine now" > /var/tmp/kinsing</code>
<code>chattr +i /tmp/kdevtmpfsi</code> <code>chattr +i /var/tmp/kinsing</code>
На этом многие инструкции и заканчиваются.
Но есть одно но, через некоторое время майнер восстанавливается, с дополненным именем и продолжает забивать процессор.
Поэтому продолжим:
Шаг 5. Не дать восстановится.
Как оказалось, троян записывает в crontab под пользователем www-data команду, которая каждую минуту скачивает и запускает bash скрипт, которая в свою очередь, видимо, записывает новые файлы майнера и перезапускает процесс, если он убит. Гениально и просто.
Поэтому дальше мы сначала удаляем из кронтаба таск со скачиванием (предполагается, что все команды вы выполняете как root).
sudo -u www-data crontab -e
Если вы уже редактировали crontab, то просто откроется файл со списком задач крона для пользователя www-data, если ещё нет – то сначала спросит каким редактором редактировать (берите 1 – nano).
Удаляем строки, в которых вы не уверены :) и в которых что-то скачивается через wget. Надо отметить, что у пользователя www-data вообще не должно быть никаких тасков в кроне.
Сохраняем файл (для нано это Ctrl+X), и подтвердить сохранение.
Шаг 6. Закроем ворота
Источников проникновения может быть много. Где-то пишут, что скомпрометированы некоторые версии phpunit, установленые через composer, кто-то считает, что это пакет monolog, который входит в «коробку» laravel. Так или иначе, нужно предотвратить возможное повторное внедрение. И пока вы не найдете источник, можно запретить работу кронтаба для пользователя www-data. Это не позволит запустить тот самый скрипт, и не даст трояну установить майнер повторно.
Для этого редактируем файл /etc/cron.deny:
nano /etc/cron.deny
В нем в новой строке пишем www-data и сохраняем. Это запретит пользователю www-data пользоваться crontab.
А для надежности ещё и отключим файл с кроджобами:
mv -vi /var/spool/cron/crontabs/www-data /var/spool/cron/crontabs/www-data.disabled
Все. Все эти правки выполняются на свой страх и риск. Мы не даём абсолютно никаких гарантий.