Skip to content

This article is available in Russian. An English version is on the way.Open the Russian page

Что делать, если сервер взломали

Признаки взлома, первые действия, сбор информации и восстановление без повторного заражения.

Level
Advanced
Reading time
3 min read
Updated
Tested on
Ubuntu 22.04, Ubuntu 24.04, Debian 12
Contents
  1. Признаки
  2. Первые действия
  3. Сбор информации
  4. Восстановление
  5. Как снизить риск

Взлом редко выглядит как в кино. Чаще это неизвестный процесс, который съедает процессор, жалоба на рассылку спама или странные исходящие соединения. Действуйте спокойно и по порядку.

Признаки

  • Процессор загружен на 100 % процессом с незнакомым или «системным» именем — часто это майнер.
  • Пришла жалоба (abuse) на атаки, сканирование или спам с вашего IP.
  • В authorized_keys появились чужие ключи, в системе — новые пользователи.
  • Появились неизвестные задачи cron или службы systemd.
  • Изменились файлы сайта: вставки со ссылками, незнакомые PHP-файлы в папке загрузок.

Первые действия

  1. 01Не удаляйте ничего сразу — сначала соберите информацию: она поможет понять, как произошёл взлом.
  2. 02Если с сервера идёт атака или рассылка, остановите её: выключите сервер в панели или закройте исходящий трафик фаерволом. Работать с выключенным сервером можно через VNC-консоль после запуска.
  3. 03Смените пароли и ключи, которые хранились на сервере или использовались для входа: root, базы данных, API-ключи сторонних сервисов, токены деплоя.
  4. 04Если пришло уведомление о нарушении, ответьте в тикете: что случилось и что вы делаете. На ответ отводится 24 часа.

Сбор информации

Кто и откуда входил
$ last -a | head -30$ lastb -a | head -30$ journalctl -u ssh --since "7 days ago" | grep -i accepted
Процессы и сетевые соединения
$ ps auxf --sort=-%cpu | head -20$ ss -tunap
Ключи и пользователи
$ cat /root/.ssh/authorized_keys /home/*/.ssh/authorized_keys$ grep -v nologin /etc/passwd
Задачи по расписанию
$ for u in $(cut -d: -f1 /etc/passwd); do crontab -l -u "$u" 2>/dev/null | sed "s/^/$u: /"; done$ ls -la /etc/cron.* /etc/cron.d$ systemctl list-timers --all
Службы и недавно изменённые файлы
$ systemctl list-units --type=service --state=running$ find /etc /usr/local /var/www -mtime -7 -type f | head -100

Восстановление

Найти и вычистить все закладки злоумышленника почти невозможно: он мог подменить системные утилиты. Надёжный путь один — чистая система.

  1. 01Сохраните данные, которые нужно перенести: базы данных, загруженные пользователями файлы, конфиги. Код сайта лучше взять из репозитория, а не с заражённого сервера.
  2. 02Переустановите систему из панели: «Переустановить» на странице сервера. Все данные на диске будут удалены.
  3. 03Сразу закройте доступ: SSH только по ключам, фаервол, обновления.
  4. 04Восстановите данные, проверив их на вставки и незнакомые файлы. Обновите CMS, плагины и зависимости до актуальных версий.

Как снизить риск

  • Вход по SSH только по ключам, root без пароля.
  • Фаервол: наружу открыты только нужные порты. Базы данных и Redis — только на localhost.
  • Автоматические обновления безопасности и своевременные обновления CMS.
  • Резервные копии вне сервера с проверкой восстановления.

Read to the end and the article counts toward your learning progress.

  • взлом
  • компрометация
  • вирус
  • майнер
  • инцидент
  • abuse

Was this article helpful?