Сайт взломали: что делать в первые два часа
Если сайт взломан, первые действия — не чинить, а остановить и зафиксировать. Порядок такой: закрыть сайт, сменить пароли, сохранить состояние как есть, найти точку входа, только потом восстанавливать. Ниже — по минутам.
Признаки взлома: чужие страницы в поиске по вашему домену, редирект посетителей на посторонний сайт, предупреждение браузера, письма от хостинга о рассылке спама, незнакомые учётные записи в админке.
0–15 минут. Остановить
Закройте сайт. Включите режим технических работ или временно отключите его в панели хостинга. Пока сайт открыт, он раздаёт вредоносный код посетителям и накапливает санкции поисковых систем.
Отключите приём платежей, если он есть. Отключите обмен с внешними сервисами: доставка, касса, учётная система. Взломанный сайт может отправлять в них команды.
Не удаляйте ничего. Подозрительные файлы, чужие учётные записи, странные записи в базе — всё это нужно, чтобы понять, как вошли.
Смените пароли в таком порядке: панель хостинга, база данных, административные учётные записи сайта, почта, репозиторий. Начинайте с хостинга — это самый верхний уровень доступа.
15–45 минут. Зафиксировать
Сделайте копию сайта в текущем, взломанном состоянии. Файлы и база. Пометьте её как заражённую и храните отдельно.
Звучит странно, но без этой копии вы не найдёте причину: как только вы восстановитесь из чистого архива, следы исчезнут.
Выпишите время. Когда сайт работал нормально в последний раз, когда заметили проблему. Этот промежуток задаёт, какие журналы смотреть и какую резервную копию брать.
Скачайте журналы сервера за последние сутки. У большинства хостингов они доступны в панели и перезаписываются через несколько дней, поэтому забирайте сразу.
45–90 минут. Найти вход
Точек входа на практике встречается пять.
Устаревший компонент. Плагин или библиотека с известной уязвимостью, которую не обновляли. Самая частая причина на сайтах, собранных на готовой CMS, и главная причина, по которой набор чужих плагинов — это долг, который однажды предъявят к оплате.
Украденный пароль. Компьютер сотрудника, повторно используемый пароль, доступ, оставленный подрядчику три года назад.
Форма загрузки. Через неё загрузили исполняемый файл вместо картинки, потому что тип файла проверялся только по расширению.
Уязвимость в самописном коде. Обычно подстановка в запрос к базе через параметр адреса страницы.
Соседний сайт на том же хостинге. На дешёвом тарифе несколько сайтов лежат в одном аккаунте, и через один заходят во все.
Ищите так: в журналах — обращения к файлам, о которых вы не знаете; в файловой системе — файлы с датой изменения внутри вашего промежутка; в админке — учётные записи, созданные не вами.
90–120 минут. Восстановить
Разворачивайте копию, сделанную до даты взлома, а не последнюю по счёту. Последняя, скорее всего, уже содержит закладку.
Восстановили — сразу закройте найденную дыру: обновите компонент, уберите доступ, почините проверку загрузки. Порядок именно такой: сначала закрыть, потом открывать сайт.
Замените все ключи и токены внешних сервисов. Ключ платёжного сервиса, токен телеграм-бота, ключи API доставки — всё, что лежало в конфигурации, считается скомпрометированным.
Откройте сайт и проверьте: главная, вход в админку, форма заявки, оплата, обмен с внешними сервисами. Затем отправьте сайт на перепроверку в панелях для вебмастеров, чтобы снять пометку о заражении.
Что делать в тот же день, но уже не в спешке
Проверьте базу данных на предмет утечки персональных данных. Если данные клиентов могли уйти — включается процедура уведомления, и это уже юридическая часть, а не техническая.
Разверните копию, сделанную на шаге «зафиксировать», на изолированной площадке и досмотрите её спокойно. Часто вторая закладка находится именно тогда.
Проверьте, что резервное копирование действительно работает и имеет глубину хранения. Взлом почти всегда обнаруживают позже, чем он произошёл, и копия недельной давности оказывается ценнее вчерашней.
Что сказать клиентам и сотрудникам
Сотрудникам — в первые же минуты: не заходить в админку, не менять пароли самостоятельно, не открывать сайт. Параллельные действия на живом сервере путают журналы и мешают найти вход.
Клиентам, если сайт лежит дольше пары часов, — короткое сообщение в тех каналах, где вы с ними общаетесь. Технические работы, приём заказов по телефону, срок восстановления. Молчание при недоступном сайте читается хуже, чем признание проблемы.
Партнёрам и сервисам, чьи ключи лежали в конфигурации, — уведомление о смене ключей. Платёжный сервис и служба доставки должны узнать об этом от вас, а не по подозрительным запросам.
Отдельно: не публикуйте подробности того, как именно вошли, пока дыра не закрыта.
Чего делать нельзя ни на каком этапе
Удалять подозрительные файлы до того, как сохранена заражённая копия. Вместе с файлом уходит единственное свидетельство того, как вошли.
Восстанавливаться поверх работающего сайта, не отключив его. Половина посетителей в этот момент получит остатки вредоносного кода, а поисковые системы зафиксируют заражение повторно.
Менять пароли снизу вверх. Смена пароля админки при незакрытом доступе к хостингу бесполезна: новый пароль тут же станет известен.
Оставлять старые ключи внешних сервисов. Токен телеграм-бота или ключ платёжного сервиса, полежавший в руках постороннего, продолжает работать после восстановления сайта.
Писать в поддержку хостинга «нас взломали, сделайте что-нибудь» без описания. Провайдер отвечает за инфраструктуру, а не за содержимое вашего сайта, и без конкретики предложит откатиться из копии — то есть вернуться к шагу, который вы уже прошли.
Что мешает взлому лучше всего
Разделение прав. Типовой узел почти во всех наших проектах: сборщик видит заказы, но не видит деньги; менеджер видит клиентов, но не видит настройки. Украденный доступ менеджера при такой схеме даёт злоумышленнику список заказов, а не сервер.
Отсутствие лишнего кода. Каждый подключённый чужой плагин — это чужой код с вашими правами, который обновляет кто-то другой и в своём темпе.
Разделение сред. Сайт, репозиторий и хранилище копий — три разные учётные записи с разными паролями.
Кому эта инструкция не нужна
Сайту-визитке из статических страниц без админки и форм. Там взламывать нечего: максимум подменят файлы, и вы вернёте их из репозитория за десять минут.
И если сайт на гарантии у разработчика — не выполняйте пункты сами, звоните ему. Параллельные действия двух людей на живом сервере запутывают картину сильнее, чем сам взлом.
Коротко
Порядок жёсткий: закрыть сайт, сменить пароли сверху вниз, сохранить заражённое состояние, найти точку входа, восстановить из копии до даты взлома, заменить все ключи. Пропуск шага «найти вход» гарантирует повторный взлом. Всё остальное — обновления, разделение прав, отдельное хранилище копий — делается заранее и стоит несопоставимо дешевле восстановления.
Первый разговор — разбор задачи: нужна ли вам система или хватит одной страницы. Без обязательств и без счёта.
Частые вопросы
Можно ли просто откатиться из копии и забыть?
Нет. Откат возвращает файлы, но не закрывает дыру, через которую зашли. Если причину не найти, повторный взлом происходит в течение нескольких дней, обычно тем же способом. Откат — первый шаг, а не решение.
Надо ли сообщать клиентам, если утекли их данные?
Если в базе были персональные данные и есть основания считать, что к ним получили доступ, уведомлять нужно — и клиентов, и надзорный орган, в установленный законом срок. Молчание в такой ситуации превращает техническую проблему в юридическую.
Сколько стоит восстановление после взлома?
Зависит от того, есть ли рабочая резервная копия. С копией это работа на несколько часов: развернуть, найти вход, закрыть, сменить ключи. Без копии восстановление превращается в частичную пересборку сайта и стоит сопоставимо с новой разработкой.
Те, что не помогают, мы переписываем — по этой кнопке и решаем, какие именно.
Ещё по теме
Чек-лист владельца сайта по обработке персональных данных — что разместить, что настроить, что проверить перед запуском.
тем, кто заказывает ToYou Wood: сайт мебели на заказ с расчётом сметы по размерамИстория проекта: сайт считает смету по размерам, принимает оплату с чеком и печатает этикетку — что мы делали и что переделывали.
тем, кто заказывает WordPress с двадцатью плагинами — это долг, а не экономияПочему набор дополнений выглядит как бесплатная функциональность, а ведёт себя как кредит с растущей ставкой.
тем, кто заказывает