Взлом почти никогда не выглядит как в кино. Чаще это загрузка процессора под 100% без видимой причины, письма от хостера о жалобах на спам или сайт, на котором появились чужие страницы. В такой момент хочется немедленно всё удалить и перезагрузить, и именно это чаще всего вредит больше самой атаки. Ниже порядок действий на первый час: что сделать сразу, что сохранить, что менять и чего не трогать.

Признаки взлома

  • процессор или сеть загружены без причины (типичный случай — криптомайнер);
  • в списке процессов и соединений есть незнакомые программы и адреса;
  • в журналах входа чужие адреса, успешные входы в нерабочее время, неизвестные пользователи или SSH-ключи;
  • у сервера появились неизвестные задания cron и службы systemd;
  • файлы сайта изменены или добавлены, а в базе появились чужие записи;
  • хостер присылает жалобы на спам и сканирование, ваш IP попал в чёрные списки;
  • журналы внезапно оказались пустыми или обрезанными.

Один признак ещё не доказательство: сначала проверьте, но не откладывайте.

Первые 60 минут

ВремяЗадачаРезультат
0–10 минИзолировать сервер от сети, записать время обнаружения, назначить ответственногоАтакующий отрезан, ущерб не растёт
10–30 минСохранить доказательства: состояние системы, копии журналов, снимок или образ дискаЕсть материал для расследования
30–60 минОценить масштаб, сменить секреты с чистой машины, связаться с хостером, решить, как восстанавливатьПлан дальнейших действий

0–10 минут: остановить ущерб

  1. Назначьте одного ответственного и заведите журнал: что и во сколько вы сделали. К нему вернётесь и при расследовании, и при уведомлениях.
  2. Изолируйте сервер от сети. Физический сервер отключите от сети кабелем или портом коммутатора. На VPS закройте все входящие и исходящие подключения в файрволе хостера, оставив только адрес администратора.
  3. Не выключайте и не перезагружайте сервер сразу. При выключении пропадает содержимое памяти: процессы, соединения, ключи. Сначала снимите состояние системы (следующий шаг). Исключение: сервер прямо сейчас шифрует данные или атакует других, а изолировать его нечем. Тогда выключайте.

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.

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

Чего делать не нужно

  • Не «чистить» вручную. Нельзя доказать, что сервер стал чистым: вы удалите то, что нашли, а то, что не нашли, останется.
  • Не удалять подозрительные файлы и журналы до снимка. Это стирает следы, по которым определяется способ взлома.
  • Не вводить на сервере пароли от других систем. Атакующий мог подменить программу входа или перехватывать ввод.
  • Не торопиться с перезагрузкой. Сначала снимите состояние системы и образ диска.
  • Не платить выкуп вымогателям, не посоветовавшись. Оплата не гарантирует расшифровки и не закрывает дыру.
  • Не молчать. О взломе должны знать хостер, ответственный за безопасность и, если затронуты персональные данные, юрист.

Восстановление после первого часа

  1. Выяснить, как зашли. В журналах входа и веб-сервера найдите первый подозрительный запрос. Типичные причины: подбор паролей SSH, устаревшая CMS или плагин, открытая панель управления или база, утёкший ключ.
  2. Переустановить систему с нуля из чистого образа. Именно так восстанавливали магазин в кейсе про аудит после компрометации: после изоляции и анализа сервер собрали заново.
  3. Восстановить данные из копии, сделанной до взлома. Дату определите по журналам. Восстанавливайте данные, а не исполняемые файлы и скрипты: код сайта берите из дистрибутива или репозитория, а загруженные файлы и базу проверьте на чужие скрипты.
  4. Закрыть дыру до выхода в сеть. Иначе взлом повторится сразу после включения.
  5. Усилить защиту: вход только по SSH-ключам без root, Fail2ban, регулярные обновления, доступ к администрированию через VPN (WireGuard).
  6. Включить наблюдение: мониторинг процессора, процессов и трафика с оповещениями, как в упомянутом кейсе. Внимательно следите за сервером ближайшие недели.

Если взломан почтовый сервер, после восстановления проверьте очередь Postfix (postqueue -p), попадание адреса в чёрные списки и настройки SPF, DKIM и DMARC: подробнее в статье Настройка DMARC за 10 минут.

Юридическая часть

Если в результате взлома могли пострадать персональные данные клиентов или сотрудников, оператор персональных данных обязан уведомить Роскомнадзор: первичное уведомление в течение 24 часов с момента обнаружения инцидента и сведения о результатах внутреннего расследования в течение 72 часов (ст. 21 закона 152-ФЗ). Уведомление можно подать через портал персональных данных Роскомнадзора. Применимость этих требований к вашему случаю определяет юрист, поэтому подключайте его в первые часы, а не через неделю. При необходимости можно обратиться в правоохранительные органы с заявлением, а материалы из раздела про доказательства пригодятся и для этого. Это общая информация, а не юридическая консультация.

Как подготовиться заранее

Большую часть проблем снимает подготовка, сделанная в спокойное время:

  • Проверенные копии на другой площадке. Без них восстановление превращается в потерю данных: Borg Backup.
  • Журналы на отдельном сервере. Отправка логов на другую машину не даёт атакующему стереть следы.
  • Мониторинг и оповещения внутри сервера и снаружи.
  • Вход по ключам, без root, доступ через VPN. Базовая настройка описана в статье Первые 30 минут нового сервера.
  • Регулярные обновления.
  • Чек-лист этих действий вне сервера: в распечатанном виде или в документе на другой площадке, а также контакты хостера и ответственных. В момент аварии почта и внутренние документы могут быть недоступны.

Типичные ошибки

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

Итог

В первый час главное не вылечить сервер, а остановить ущерб и сохранить следы: изоляция, снимок, секреты, хостер. Лечится взлом переустановкой с нуля и закрытием дыры, а не чисткой вручную. Но по-настоящему от него защищают проверенные копии на другой площадке, вынесенные журналы, оповещения и заранее составленный чек-лист.

Похожие материалы

Если сервер уже взломан или вы хотите заранее подготовить схему защиты и восстановления, напишите: помогу локализовать инцидент, восстановить сервисы с нуля и закрыть уязвимости.