Сервер взломали: что делать в первые 60 минут
Пошаговый план действий при взломе сервера для малого бизнеса: изоляция, сохранение доказательств, смена секретов, восстановление с нуля и уведомление Роскомнадзора.
Взлом почти никогда не выглядит как в кино. Чаще это загрузка процессора под 100% без видимой причины, письма от хостера о жалобах на спам или сайт, на котором появились чужие страницы. В такой момент хочется немедленно всё удалить и перезагрузить, и именно это чаще всего вредит больше самой атаки. Ниже порядок действий на первый час: что сделать сразу, что сохранить, что менять и чего не трогать.
Признаки взлома
- процессор или сеть загружены без причины (типичный случай — криптомайнер);
- в списке процессов и соединений есть незнакомые программы и адреса;
- в журналах входа чужие адреса, успешные входы в нерабочее время, неизвестные пользователи или SSH-ключи;
- у сервера появились неизвестные задания cron и службы systemd;
- файлы сайта изменены или добавлены, а в базе появились чужие записи;
- хостер присылает жалобы на спам и сканирование, ваш IP попал в чёрные списки;
- журналы внезапно оказались пустыми или обрезанными.
Один признак ещё не доказательство: сначала проверьте, но не откладывайте.
Первые 60 минут
| Время | Задача | Результат |
|---|---|---|
| 0–10 мин | Изолировать сервер от сети, записать время обнаружения, назначить ответственного | Атакующий отрезан, ущерб не растёт |
| 10–30 мин | Сохранить доказательства: состояние системы, копии журналов, снимок или образ диска | Есть материал для расследования |
| 30–60 мин | Оценить масштаб, сменить секреты с чистой машины, связаться с хостером, решить, как восстанавливать | План дальнейших действий |
0–10 минут: остановить ущерб
- Назначьте одного ответственного и заведите журнал: что и во сколько вы сделали. К нему вернётесь и при расследовании, и при уведомлениях.
- Изолируйте сервер от сети. Физический сервер отключите от сети кабелем или портом коммутатора. На VPS закройте все входящие и исходящие подключения в файрволе хостера, оставив только адрес администратора.
- Не выключайте и не перезагружайте сервер сразу. При выключении пропадает содержимое памяти: процессы, соединения, ключи. Сначала снимите состояние системы (следующий шаг). Исключение: сервер прямо сейчас шифрует данные или атакует других, а изолировать его нечем. Тогда выключайте.
10–30 минут: сохранить доказательства
Сначала зафиксируйте состояние работающей системы: при выключении оно исчезнет. Вывод сохраняйте на внешний носитель или передавайте на свою машину, а не оставляйте на сервере:
date -u; uptime
w; last -a | head -30; lastb | head -30
ps auxf
ss -tupan
Скопируйте журналы на другую машину:
sudo journalctl --no-pager --since "14 days ago" > journal.txt
sudo tar czf logs.tgz /var/log
Посмотрите места, где обычно закрепляются атакующие:
crontab -l; ls -la /etc/cron.d /var/spool/cron/crontabs
systemctl list-timers --all
awk -F: '$3 == 0 {print $1}' /etc/passwd
find /root /home -name authorized_keys -exec ls -l {} \;
find /etc /usr/local /root /var/www -xdev -type f -mtime -7
Команда с awk выводит все учётные записи с UID 0 (кроме root их быть не должно), а последняя показывает файлы, изменённые за неделю.
Теперь снимите образ диска. На VPS сделайте снапшот в панели хостера. На физическом сервере сервер придётся выключить и снять образ с загрузочной флешки на внешний носитель (dd).
Важная оговорка. На взломанной системе команды могут лгать: атакующий мог подменить сами программы. Поэтому основной анализ лучше проводить не на работающем сервере, а на снимке, подключённом к чистой машине. Диск с загрузочной флешки можно смонтировать только для чтения (для ext4):
sudo mount -o ro,noload /dev/sdX2 /mnt
30–60 минут: масштаб и секреты
Что было доступно с этого сервера, то считается скомпрометированным. Составьте список: базы данных, ключи SSH, токены интеграций, пароли почты, сертификаты, соседние серверы, куда сервер имел доступ. Если не удалось установить, как именно зашли, считайте скомпрометированным всё.
Менять секреты нужно с чистой машины, а не с взломанного сервера и не с компьютера, который заходил на него:
- пароли и SSH-ключи администраторов;
- пароли баз данных и учётных записей приложений;
- токены API и ключи интеграций (платежи, почта, облачные сервисы);
- приватные ключи TLS, сертификаты нужно перевыпустить;
- для почтового сервера: пароли ящиков и SMTP, ключ DKIM.
Позвоните хостеру: поддержка может помочь с изоляцией, снапшотом и подтвердить, что с вашего адреса шёл вредоносный трафик.
Чего делать не нужно
- Не «чистить» вручную. Нельзя доказать, что сервер стал чистым: вы удалите то, что нашли, а то, что не нашли, останется.
- Не удалять подозрительные файлы и журналы до снимка. Это стирает следы, по которым определяется способ взлома.
- Не вводить на сервере пароли от других систем. Атакующий мог подменить программу входа или перехватывать ввод.
- Не торопиться с перезагрузкой. Сначала снимите состояние системы и образ диска.
- Не платить выкуп вымогателям, не посоветовавшись. Оплата не гарантирует расшифровки и не закрывает дыру.
- Не молчать. О взломе должны знать хостер, ответственный за безопасность и, если затронуты персональные данные, юрист.
Восстановление после первого часа
- Выяснить, как зашли. В журналах входа и веб-сервера найдите первый подозрительный запрос. Типичные причины: подбор паролей SSH, устаревшая CMS или плагин, открытая панель управления или база, утёкший ключ.
- Переустановить систему с нуля из чистого образа. Именно так восстанавливали магазин в кейсе про аудит после компрометации: после изоляции и анализа сервер собрали заново.
- Восстановить данные из копии, сделанной до взлома. Дату определите по журналам. Восстанавливайте данные, а не исполняемые файлы и скрипты: код сайта берите из дистрибутива или репозитория, а загруженные файлы и базу проверьте на чужие скрипты.
- Закрыть дыру до выхода в сеть. Иначе взлом повторится сразу после включения.
- Усилить защиту: вход только по SSH-ключам без root, Fail2ban, регулярные обновления, доступ к администрированию через VPN (WireGuard).
- Включить наблюдение: мониторинг процессора, процессов и трафика с оповещениями, как в упомянутом кейсе. Внимательно следите за сервером ближайшие недели.
Если взломан почтовый сервер, после восстановления проверьте очередь Postfix (postqueue -p), попадание адреса в чёрные списки и настройки SPF, DKIM и DMARC: подробнее в статье Настройка DMARC за 10 минут.
Юридическая часть
Если в результате взлома могли пострадать персональные данные клиентов или сотрудников, оператор персональных данных обязан уведомить Роскомнадзор: первичное уведомление в течение 24 часов с момента обнаружения инцидента и сведения о результатах внутреннего расследования в течение 72 часов (ст. 21 закона 152-ФЗ). Уведомление можно подать через портал персональных данных Роскомнадзора. Применимость этих требований к вашему случаю определяет юрист, поэтому подключайте его в первые часы, а не через неделю. При необходимости можно обратиться в правоохранительные органы с заявлением, а материалы из раздела про доказательства пригодятся и для этого. Это общая информация, а не юридическая консультация.
Как подготовиться заранее
Большую часть проблем снимает подготовка, сделанная в спокойное время:
- Проверенные копии на другой площадке. Без них восстановление превращается в потерю данных: Borg Backup.
- Журналы на отдельном сервере. Отправка логов на другую машину не даёт атакующему стереть следы.
- Мониторинг и оповещения внутри сервера и снаружи.
- Вход по ключам, без root, доступ через VPN. Базовая настройка описана в статье Первые 30 минут нового сервера.
- Регулярные обновления.
- Чек-лист этих действий вне сервера: в распечатанном виде или в документе на другой площадке, а также контакты хостера и ответственных. В момент аварии почта и внутренние документы могут быть недоступны.
Типичные ошибки
- «Почистили и забыли». Дыру не нашли, закрепившийся в системе код остался.
- Перезагрузили сразу. Потеряны процессы и соединения, по которым можно было понять масштаб.
- Восстановили из копии, не закрыв дыру. Взлом повторился в тот же день.
- Сменили не все секреты. Чаще всего забывают токены API, ключ DKIM и пароли сервисных учётных записей.
- Журналы лежали на том же сервере и были стёрты вместе со следами.
- Копии лежали на том же сервере или на подключённом к нему диске и тоже оказались испорчены.
- Опоздали с уведомлением Роскомнадзора, когда оно требовалось.
- Нет ответственного и списка контактов. Первый час уходит на выяснение, кому звонить.
Итог
В первый час главное не вылечить сервер, а остановить ущерб и сохранить следы: изоляция, снимок, секреты, хостер. Лечится взлом переустановкой с нуля и закрытием дыры, а не чисткой вручную. Но по-настоящему от него защищают проверенные копии на другой площадке, вынесенные журналы, оповещения и заранее составленный чек-лист.
Похожие материалы
- Кейс: аудит безопасности после компрометации — реальный пример: брутфорс SSH и майнер, полное восстановление за 14 часов.
- Доработка и аудит — проверка сервера и закрытие уязвимостей.
- Borg Backup + borgmatic: автоматические бэкапы без облачных подписок — копии, без которых восстановление невозможно.
- WireGuard: собственный VPN за 10 минут вместо платных подписок — закрытый доступ к администрированию.
Если сервер уже взломан или вы хотите заранее подготовить схему защиты и восстановления, напишите: помогу локализовать инцидент, восстановить сервисы с нуля и закрыть уязвимости.