Защита сайта от взлома и устранение последствий
Взлом сайта имеет две фазы: устранение последствий (активный взлом) и укрепление защиты (предотвращение повторного). Работа в этом порядке — не наоборот.
Признаки взлома
- Google/Яндекс показывают предупреждение о вредоносном ПО
- Сайт перенаправляет на сторонние ресурсы
- Появились новые неизвестные файлы или страницы
- Необъяснимые новые пользователи-администраторы
- Сервер рассылает спам (blacklisted IP)
Фаза 1: Сдерживание
# Перевести сайт в maintenance mode
php artisan down # Laravel
# Снапшот для forensics
tar -czf /tmp/hacked-site-$(date +%Y%m%d).tar.gz /var/www/mysite/
# Заблокировать подозрительные IP
ufw deny from 1.2.3.4
Фаза 2: Диагностика
# Поиск изменённых файлов за последние 7 дней
find /var/www/mysite -type f -newer /var/www/mysite/composer.json -name "*.php" 2>/dev/null
# Поиск backdoors
grep -r "eval(base64_decode" /var/www/mysite/ --include="*.php"
grep -rn "system\|exec\|passthru\|shell_exec" /var/www/mysite/uploads/ --include="*.php"
# PHP в uploads — признак webshell
find /var/www/mysite/uploads -name "*.php" -type f
# WordPress: проверка checksums
wp core verify-checksums
wp plugin verify-checksums --all
Фаза 3: Очистка
# Разворачиваем чистую копию из Git
git clone [email protected]:myorg/mysite.git /var/www/mysite-clean
# Переносим только медиафайлы (без PHP)
rsync -av --include="*.jpg" --include="*.png" --include="*.pdf" \
--exclude="*.php" /var/www/mysite/uploads/ /var/www/mysite-clean/uploads/
# Проверяем через ClamAV
clamscan -r /var/www/mysite-clean/uploads/
# WordPress: переустановка ядра
wp core download --force
Фаза 4: Укрепление защиты
# Блокировка выполнения PHP в uploads
location ~* /uploads/.*\.php$ { deny all; }
# Скрытие версии сервера
server_tokens off;
# Защита конфигурационных файлов
location ~* \.(env|htaccess|git)$ { deny all; return 404; }
# Правильные права на файлы
find /var/www/mysite -type f -exec chmod 644 {} \;
find /var/www/mysite -type d -exec chmod 755 {} \;
chmod 600 /var/www/mysite/.env
# Fail2ban для brute force
# /etc/fail2ban/filter.d/wordpress.conf
# failregex = ^<HOST>.*"POST /wp-login.php
Превентивные меры
- 2FA для всех административных аккаунтов
- WAF (Cloudflare, ModSecurity)
- Автообновление критических компонентов
- Ограничение попыток входа (Fail2ban)
- Регулярный аудит файлов и пользователей
Уведомление поисковиков о восстановлении
- Google Search Console → Security Issues → Mark as fixed → Request review
- Яндекс.Вебмастер → Безопасность → Запросить проверку
Снятие предупреждений: Google — 1–3 дня, Яндекс — 1–5 дней.
Устранение последствий взлома — 1–3 дня. Усиление защиты — 1–2 дня дополнительно.







