Захист сайту від взлому та усунення наслідків
Взлом сайту має дві фази: усунення наслідків (активний взлом) та посилення захисту (запобігання повторному). Працюйте в цьому порядку, а не навпаки.
Ознаки взлому
- Google/Яндекс показує попередження про шкідливе ПО
- Сайт перенаправляє на сторонні ресурси
- З'являються нові невідомі файли або сторінки
- Необґрунтовані нові користувачі-адміністратори
- Сервер розсилає спам (blacklisted IP)
Фаза 1: Стримування
# Перевести сайт в режим обслуговування
php artisan down # Laravel
# Снімок для розслідування
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
# Пошук бекдорів
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 — ознака вебшелу
find /var/www/mysite/uploads -name "*.php" -type f
# WordPress: перевірка контрольних сум
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 дні додатково.







