Сервер взломали: что делать по шагам и чего делать нельзя

Хостинг присылает уведомление об исходящих атаках, нагрузка держится на потолке без причины, письма с сервера уходят в спам. Первая реакция обычно одинаковая: зайти и всё почистить. Это худшее, что можно сделать, потому что уничтожает следы и почти никогда не убирает саму проблему.

Разберём, по каким признакам понятно, что сервер скомпрометирован, что делать в первые минуты, почему вылечить его нельзя и как восстановиться, не вернув проблему вместе с данными.

Признаки, что что-то не так

Взлом редко выглядит как надпись на экране. Гораздо чаще это косвенные симптомы.

  • Нагрузка на потолке без причины. Процессор занят на сто процентов, а ваших задач нет. Классика для майнинга на чужих мощностях.
  • Исходящий трафик вырос в разы. Особенно если сервер обычно только отвечает на запросы.
  • Жалоба от провайдера. Уведомление об исходящих атаках или рассылке спама с вашего адреса.
  • Незнакомые процессы и задачи. Странные имена в списке процессов, чужие записи в расписании, см. задачи по расписанию.
  • Новые пользователи и ключи. Учётные записи, которых вы не заводили, лишние ключи в списке доступа.
  • Изменённые файлы сайта. Подмешанный код в страницах, редиректы на чужие ресурсы.
  • Письма уходят в спам. Часто первый заметный симптом рассылки с вашего адреса.

Проверить исходную картину помогают логи: входы по SSH, попытки подбора, обращения к сайту. Где что искать, разобрано в статье логи на сервере.

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

порядок действий при подозрении на взлом и чего делать нельзя.
порядок действий при подозрении на взлом и чего делать нельзя.

Порядок важнее скорости. Пять шагов, именно в таком порядке.

1. Прекратить утечку, не выключая сервер. Закройте доступ снаружи правилами файрвола, оставив только себя, см. файрвол на VPS. Полное выключение стирает то, что живёт в памяти, а это часть картины.

2. Снять снапшот целиком. Это ваша копия места происшествия. Она понадобится, чтобы понять, как попали внутрь, и пригодится, если придётся объясняться с провайдером или клиентами.

3. Собрать факты. Кто и когда заходил, какие процессы запущены, что менялось в файлах, какие задачи появились в расписании. Пока сервер жив, эти данные доступны.

4. Оценить масштаб. Что могло утечь: база с данными пользователей, ключи к другим системам, платёжные токены. Это определяет, кого нужно предупредить.

5. Сменить всё, до чего дотягивались с сервера. Пароли, SSH-ключи, токены API, доступы к базам и внешним сервисам. Исходить надо из того, что скомпрометировано всё, что на нём лежало.

Чего делать нельзя

Нельзя просто почистить и продолжить работать. Это главная ошибка. Злоумышленник обычно оставляет несколько способов вернуться: лишний ключ, задачу в расписании, изменённый системный файл, отдельного пользователя. Найти все руками почти невозможно, и через неделю всё повторяется.

Нельзя удалять подозрительное сразу. Сначала снапшот, потом разбор. Иначе вы уничтожите единственный шанс понять, как попали внутрь, и повторите ту же ошибку на новом сервере.

Нельзя восстанавливать бэкап поверх скомпрометированной системы. Она уже не ваша, и старая копия поверх неё ничего не чинит.

Нельзя игнорировать письмо провайдера. С исходящими атаками у провайдеров разговор короткий: сервер блокируют, и разбираться придётся уже без доступа.

Как восстанавливаться правильно

Единственный надёжный путь: чистый сервер, а не лечение старого.

1. Создайте новую машину и настройте её с нуля, см. настройка VPS. 2. Перенесите только данные, а не систему: содержимое базы, загруженные файлы, конфигурацию, которую вы понимаете. Исполняемый код разворачивайте из репозитория, а не копируйте с заражённой машины, см. как выложить приложение на сервер. 3. Проверьте переносимое. В файлах сайта мог остаться подмешанный код, а в базе - чужие учётные записи администратора. 4. Закройте вход, через который попали. Если это был подбор пароля, переходите на ключи. Если старая уязвимость в приложении, обновляйте его до переноса. 5. Переключите трафик и удалите старую машину, оставив снапшот на время разбора.

Звучит долго, но на практике чистая установка занимает меньше времени, чем поиск всех закладок в скомпрометированной системе, и в отличие от него даёт результат.

Как обычно попадают внутрь

Почти всегда это одно из четырёх, и все четыре предотвратимы.

Слабый пароль на SSH. Перебор идёт круглосуточно по всем адресам, это фоновый шум интернета. Лечится входом по ключу и отключением парольного доступа.

Открытый наружу сервис. База данных, панель, кеш, интерфейс приложения без авторизации. Сканеры находят такое за часы, см. порты на сервере.

Устаревшее приложение. Старая версия CMS или плагин с известной уязвимостью. Особенно актуально для WordPress, который атакуют массово.

Утёкший ключ или токен. Попал в репозиторий, в чат, в скриншот. Работает как открытая дверь, и файрвол здесь не поможет.

Постоянная работа под root увеличивает ущерб от любого из этих сценариев, см. что такое root-доступ.

Что сделать заранее

Инцидент проходит легче, если подготовиться до него.

  • Копии вне сервера. Бэкап на той же машине бесполезен при компрометации, см. резервное копирование.
  • Мониторинг с оповещениями. Резкий рост нагрузки или трафика - повод посмотреть, что происходит, см. мониторинг VPS.
  • Понимание, что где лежит. Восстановление идёт быстро, когда вы знаете состав системы и можете развернуть её заново.
  • Отдельные учётные записи под каждое приложение, чтобы взлом одного не открывал всё.

Частые ошибки

Чистят и продолжают работать. Способы вернуться остаются, история повторяется.

Удаляют улики до снапшота. Причина остаётся неизвестной, и её повторяют на новом сервере.

Переносят систему целиком на новый сервер. Вместе с ней переезжают и закладки.

Меняют только пароль от SSH. Ключи, токены и доступы к внешним сервисам остаются у злоумышленника.

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

Выключают сервер сразу. Часть картины теряется, а утечку останавливает и правило файрвола.

Частые вопросы

Как понять, что сервер взломали? Косвенные признаки: необъяснимая нагрузка, выросший исходящий трафик, жалоба провайдера, незнакомые процессы и задачи, новые пользователи и ключи, изменённые файлы сайта.

Что делать в первую очередь? Закрыть доступ снаружи файрволом, не выключая машину, затем снять снапшот и только после этого разбираться. Порядок важнее скорости.

Можно ли вылечить взломанный сервер? Надёжно - нет. Обычно остаётся несколько способов вернуться, и найти их все вручную практически невозможно. Правильный путь - чистая установка и перенос только данных.

Восстановить из бэкапа поверх текущей системы можно? Нет. Скомпрометированную систему это не чинит. Бэкап разворачивают на чистой машине.

Что менять после инцидента? Всё, до чего дотягивались с сервера: пароли, SSH-ключи, токены API, доступы к базам и внешним сервисам.

Как чаще всего попадают внутрь? Слабый пароль SSH, открытый наружу сервис без авторизации, устаревшее приложение с известной уязвимостью, утёкший ключ или токен.

Что делать, если провайдер заблокировал сервер? Связаться с поддержкой, объяснить ситуацию и запросить доступ для снятия копии. Обычно дают ограниченный доступ для разбора и переноса данных.


Нужен чистый сервер для восстановления? VPS на NVMe от 459 руб в месяц - активация за 3 минуты, полный root-доступ и снапшоты, площадки в Москве, Казани и Амстердаме. Развернуть новую машину быстрее, чем искать закладки в старой.