Сервер взломали: что делать по шагам и чего делать нельзя
Хостинг присылает уведомление об исходящих атаках, нагрузка держится на потолке без причины, письма с сервера уходят в спам. Первая реакция обычно одинаковая: зайти и всё почистить. Это худшее, что можно сделать, потому что уничтожает следы и почти никогда не убирает саму проблему.
Разберём, по каким признакам понятно, что сервер скомпрометирован, что делать в первые минуты, почему вылечить его нельзя и как восстановиться, не вернув проблему вместе с данными.
Признаки, что что-то не так
Взлом редко выглядит как надпись на экране. Гораздо чаще это косвенные симптомы.
- Нагрузка на потолке без причины. Процессор занят на сто процентов, а ваших задач нет. Классика для майнинга на чужих мощностях.
- Исходящий трафик вырос в разы. Особенно если сервер обычно только отвечает на запросы.
- Жалоба от провайдера. Уведомление об исходящих атаках или рассылке спама с вашего адреса.
- Незнакомые процессы и задачи. Странные имена в списке процессов, чужие записи в расписании, см. задачи по расписанию.
- Новые пользователи и ключи. Учётные записи, которых вы не заводили, лишние ключи в списке доступа.
- Изменённые файлы сайта. Подмешанный код в страницах, редиректы на чужие ресурсы.
- Письма уходят в спам. Часто первый заметный симптом рассылки с вашего адреса.
Проверить исходную картину помогают логи: входы по 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-доступ и снапшоты, площадки в Москве, Казани и Амстердаме. Развернуть новую машину быстрее, чем искать закладки в старой.