Чистка сайта после взлома - порядок работ и возврат в строй
Возвращаем сайт в строй после взлома: отрезаем, меняем доступы, ищем чужое и закрываем то, через что вошли.
Решение
Отрезаем сайт от посетителей:
sudo bx-sites -a disable -s example.org # в среде разработчиков платформы# или закрываем на уровне веб-сервера, оставив себе доступ по адресу# заодно останавливаем задания cron: они могут запускать чужой кодcrontab -l > /backup/crontab.txt && crontab -rРаботать по чистке на живом сайте бессмысленно. Пока страницы отдаются посетителям, чужой код продолжает работать и восстанавливать то, что вы удаляете прямо сейчас.
Меняем все доступы разом:
- пароли всех администраторов сайта и разработчиков- доступ к базе данных и файл настроек с ним- ключи внешних сервисов: платежи, рассылки, обмен с учётной системой- доступ к панели хостинга, к серверу и ключи для входа по немуСкомпрометированным считается всё, до чего дотягивался сайт. Смена одного пароля администратора оставляет вход через ключ обмена или доступ к базе, и через день всё повторяется.
Ищем изменённое и чужое:
find /home/site/public_html -name '*.php' -mtime -14 -printf '%T+ %p\n' | sortgrep -rl --include='*.php' -E 'eval\(|base64_decode\(|gzinflate\(' /home/site/public_html# смотрят и каталог загрузок: исполняемым файлам там не место вовсеВремя изменения файла - самая быстрая зацепка. Список файлов, изменённых за дни вокруг первых признаков, обычно и содержит всё чужое, включая безобидные на вид служебные имена.
Сверяем ядро с эталоном и возвращаемся:
1. Проверка целостности файлов из модуля проактивной защиты2. Свой код - сверкой с репозиторием, а не глазами3. Ядро и модули - обновлением продукта до актуальной версии4. База - поиском чужих административных учётных записей и агентовСверка отвечает на вопрос, какой файл изменён, а не какой выглядит подозрительно. Чужой код давно научился выглядеть штатным, и глаз тут проигрывает контрольной сумме.
Исходную дыру закрывают до возврата сайта в строй. Иначе чистка превращается в ежедневную процедуру: та же уязвимость впускает тот же код через сутки.
Восстановление из копии выбирают по дате первых признаков, а не по последней копии. Свежая копия чаще всего уже содержит чужой код, и возврат к ней просто повторяет весь путь заново.
Пользовательские данные после взлома считают известными посторонним. Сессии сбрасывают, пароли просят сменить, а о самом факте сообщают тем, кого он касается.
Ход работ стоит записывать по мере чистки, а не после неё. Список того, что найдено и когда изменено, пригодится и хостингу, и разбору причин, и через неделю вам самим при повторном обращении к этой истории.
Типичные проблемы
Через день чужой код вернулся.
В базе остался агент или задание по расписанию, восстанавливающее удалённые файлы. Чистят и файлы, и записи расписания в самой базе.
Восстановление из копии не помогло.
Копия снята уже после взлома и потому содержит в себе чужой код. Возвращаться нужно к копии, снятой до самых первых признаков взлома.
Взлом повторился через неделю.
Исходная уязвимость так и осталась закрытой только на словах, а не в коде. До возврата сайта обновляют продукт и закрывают вход.
Хостинг заблокировал сайт за рассылку.
С сайта уходил спам через чужой скрипт, оставленный после взлома. Разблокировку хостинг даёт только после чистки сайта и смены всех его доступов.
Файл выглядит штатным, а работает не так.
Изменена всего одна строка внутри давно знакомого файла самой платформы. Такое изменение видно только сверкой контрольных сумм файла с эталоном той же версии.
Частые вопросы
Достаточно ли восстановиться из резервной копии?
Нет: без закрытия исходной причины взлом повторится. Копия возвращает файлы, а не защиту.
Как определить дату взлома?
По журналам веб-сервера и времени изменения файлов. Первое обращение к чужому скрипту обычно видно там же.
Нужно ли сообщать хостингу?
Да, особенно при рассылке спама или блокировке. Они видят исходящий трафик и помогают его остановить.
Что делать с данными покупателей?
Считать их известными посторонним: сбросить сессии и попросить сменить пароли. Молчание обходится дороже.
Смежное
- Защита сайта на практике - оглавление подтемы
- Сайт взломан: признаки, разбор и порядок действий - шаг раньше по времени
- Базовая защита сайта: обновления, доступы, проактивная защита - что закрывают до взлома
- Восстановление из резервной копии - как вернуться к чистому состоянию
- Безопасность - устройство темы целиком