Если сайт взломали — не начинайте с удаления файлов

Сначала сохраните копию текущих файлов, базы и логов. Даже заражённое состояние полезно: по времени изменения, логам и отличиям от чистой версии можно понять, как злоумышленник вернулся на сайт.

Цель восстановления: не «сделать главную снова красивой», а убрать вредоносные изменения и закрыть путь, через который они появились.

Что делать в первые часы

ШагДействиеЗачем
1Ограничить доступ к сайту/админкеОстановить новые изменения
2
ранить файлы, БД и логиНе потерять следы
3Сравнить с чистым backup/GitНайти изменённые файлы
4Проверить аккаунты и доступы
администраторов
5
одаНе допустить повторного заражения
6Восстановить чистую версиюВернуть проект в работу
7Сменить секреты и проверить сноваЗакрыть украденные доступы

Найти недавно изменённые PHP-файлы

BASH
find /path/to/site -type f -name '*.php' -mtime -14   -printf '%TY-%Tm-%Td %TH:%TM %p\n' 2>/dev/null   | sort -r | head -n 200

Проверка ClamAV без автоматического удаления

BASH
clamscan --recursive --infected --log=clamav-site-scan.log /path/to/site

# Сначала анализируйте результат.
# Не используйте --remove как первый шаг.

Почему нельзя просто восстановить backup

Если резервная копия была сделана после проникновения или уязвимый плагин остался активным, сайт может заразиться повторно. После восстановления проверьте CMS/ядро, дополнения, пользовательские аккаунты, cron-задачи, SSH/FTP-ключи, панель хостинга и исходящие подключения.

От чего зависит стоимость восстановления

Цена определяется не количеством «вирусных файлов», а временем на локализацию причины и объёмом безопасного восстановления.

Факторы, которые сильнее всего влияют на объём работ

ФакторБыстрееДольше
Есть чистый backup/GitДаНет
Один сайт на аккаунтеДаНесколько проектов заражены
Есть SSH и логиДаТолько файловый менеджер
CMS и плагины обновляемыДаСтарый/самописный код
Известно время взломаДаНеизвестно
Повторное заражениеНет
ода

Что проверить после восстановления

  • новые администраторы и API-ключи;
  • cron/systemd tasks;
  • неожиданные PHP-файлы в uploads/cache/tmp;
  • изменения в .htaccess/Nginx rules;
  • пароли панели, SSH, FTP/SFTP, БД и CMS;
  • логи входа и запросов после публикации чистой версии.

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

Связанные инструкции