По статистике, каждый 30-й сайт в России взламывается хотя бы раз в год. Чаще всего атакуют интернет-магазины, сайты на популярных CMS (WordPress, Битрикс) и проекты с устаревшими версиями плагинов/модулей. Последствия взлома могут быть катастрофическими: потеря данных клиентов, подмена страниц на сайт конкурента или фишинговую форму, штрафы от Роскомнадзора, падение позиций в поиске и, в некоторых случаях, уголовная ответственность, если данные пользователей были украдены.
Хорошая новость: 80% взломов происходят из-за 10 типовых уязвимостей, и их можно закрыть простыми действиями, не требующими глубоких технических знаний. В этой инструкции — 10 конкретных шагов для защиты сайта, которые может выполнить даже начинающий администратор.
Компания EDGESECTION занимается разработкой и поддержкой сайтов, включая настройку безопасности и защиту от взлома. Но даже если вы не наш клиент — внедрите эти шаги самостоятельно, и риск взлома снизится на 90%.
- ✅ Защиту от 90% типовых атак (брутфорс, SQL-инъекции, XSS)
- ✅ Возможность быстро восстановить сайт после взлома (бэкапы)
- ✅ Спокойствие за данные клиентов и репутацию бизнеса
- ✅ Соответствие требованиям 152-ФЗ (защита персональных данных)
Шаг 1. Установите сложные пароли для всех пользователей
Самый частый способ взлома — брутфорс (подбор пароля). Хакеры используют автоматические программы, которые перебирают миллионы комбинаций в секунду. Если ваш пароль
admin123 или qwerty, он будет подобран за 5–10 минут.
Правила хорошего пароля:
- Длина не менее 12 символов (лучше 15–20)
- Содержит заглавные и строчные буквы, цифры, спецсимволы (@, #, $, %, &, *, !)
- Не повторяет другие ваши пароли (особенно от почты и соцсетей)
- Не содержит логин, имя сайта, дату рождения, простые слова из словаря
Пример хорошего пароля: G7#kLp$2mQw@9xZ! (сложный, но его можно сохранить в менеджере паролей, чтобы не запоминать).
- Пароль от админки сайта
- Пароль от хостинга (панель управления)
- Пароль от FTP/SFTP-доступа к файлам
- Пароль от базы данных (MySQL/PostgreSQL)
Как проверить, не скомпрометирован ли ваш пароль
Воспользуйтесь сервисом Have I Been Pwned. Он проверяет, не появлялся ли ваш пароль в утечках баз данных. Если да — меняйте немедленно.
Шаг 2. Смените стандартные пути входа (для CMS)
Хакеры знают стандартные адреса входа в популярные CMS и атакуют именно их. Это называется mass‑attack (массовая атака) — один скрипт одновременно проверяет тысячи сайтов на наличие стандартных путей.
Для WordPress — самый простой способ (плагин WPS Hide Login)
- Установите бесплатный плагин WPS Hide Login
- Перейдите в Настройки → WPS Hide Login
- В поле "Login URL" введите что-то уникальное, например:
my-secret-dashboard - Сохраните. Теперь админка доступна по адресу:
ваш-сайт.ru/my-secret-dashboard - Старый адрес
/wp-adminи/wp-login.phpперестанут работать — хакеры будут получать ошибку 404.
Шаг 3. Включите двухфакторную аутентификацию (2FA)
Двухфакторка — это второй уровень защиты. Даже если хакер узнал ваш пароль, он не сможет зайти в админку без дополнительного кода, который генерируется в приложении на вашем телефоне (Google Authenticator, Yandex Key, Authy).
Как включить 2FA для разных систем
- WordPress: плагин Google Authenticator — Two Factor Authentication или WP 2FA
- 1С-Битрикс: встроенная опция в разделе "Настройки" → "Защита" → "Двухфакторная аутентификация"
- Хостинг (ISPmanager, cPanel): обычно есть в настройках безопасности
Инструкция для WordPress (плагин Two-Factor):
- Установите плагин "Two-Factor" (от разработчиков WordPress)
- Перейдите в раздел "Пользователи" → "Ваш профиль"
- В блоке "Two-Factor Options" выберите способ — лучше всего "Time Based One-Time Password (TOTP)"
- Отсканируйте QR-код через приложение-аутентификатор на телефоне (Google Authenticator, Microsoft Authenticator, Яндекс Ключ)
- Введите сгенерированный код для подтверждения. Готово!
Шаг 4. Своевременно обновляйте CMS, плагины, модули и шаблоны
80% взломов происходят через уязвимости в устаревших версиях. Хакеры следят за выходом обновлений безопасности, изучают патчи (исправления) и в течение нескольких дней после выхода обновления начинают атаковать сайты, которые его не установили.
Что нужно обновлять:
- Ядро CMS (WordPress, Битрикс, Joomla, Drupal и др.)
- Все установленные плагины и модули (даже которые не используются — их лучше удалить)
- Тему/шаблон сайта
- PHP-версию (на хостинге до актуальной 8.1/8.2/8.3)
Как настроить автоматические обновления:
-
WordPress: включите автоматические обновления в файле
wp-config.php:define('WP_AUTO_UPDATE_CORE', true); - 1С-Битрикс: в разделе "Marketplace" → "Обновления платформы" → настройте уведомления или автообновление (рекомендуется сначала тестировать на копии сайта)
- Для плагинов, которые нельзя обновлять автоматически — хотя бы раз в 2 недели заходите в админку и проверяйте наличие обновлений.
Шаг 5. Защитите файл wp-config.php (или аналог в других CMS)
Файл wp-config.php (для WordPress) и аналогичные конфиги в других CMS содержат критически важные данные: логин и пароль от базы данных, секретные ключи, подключение к сторонним
сервисам. Если хакер получит доступ к этому файлу — он полностью контролирует ваш сайт.
Что нужно сделать:
Переместить файл на один уровень выше корня сайта (только для WordPress).
WordPress может хранить wp-config.php в корне сайта (где лежит index.php), но также ищет его и в родительской директории. Перенесите его на уровень выше — так доступ
к файлу из интернета станет невозможен.
Способ:
- Через FTP переместите
wp-config.phpв папку../(выше, чем public_html или www). - В корне сайта оставьте пустышку — создать файл
wp-config.phpс содержимым:<?php // silent is gold - WordPress сам найдёт конфиг в родительской папке.
Запретить доступ к конфигу через .htaccess (если нельзя переместить):
<Files wp-config.php> Order Allow,Deny Deny from all </Files>
Аналогичные важные файлы в других CMS: bitrix/.settings.php (Битрикс), config.php (OpenCart), configuration.php (Joomla). Их тоже нужно защитить.
Шаг 6. Закройте доступ к важным папкам через .htaccess (для Apache) или location (для Nginx)
Внутри папок с плагинами, темой, загрузками не должно быть возможности запускать PHP-скрипты напрямую. Некоторые уязвимости позволяют загрузить на сервер вредоносный файл, а затем вызвать его через браузер. Запрет выполнения PHP в этих папках блокирует такие атаки.
Для WordPress в корневом .htaccess добавьте:
# Запрет просмотра содержимого папок Options -Indexes
Запрет выполнения PHP в папках wp-content/uploads, wp-includes и wp-content/plugins
php_flag engine off
Require all denied
Важное исключение: не блокируйте полностью папку wp-content/plugins, так как плагины должны работать. Блокируйте только выполнение произвольных PHP-файлов внутри
неё, но оставьте возможность работы легитимных скриптов.
Более точная настройка для папки wp-content/uploads (где хранятся изображения и загруженные файлы) — именно здесь чаще всего пытаются загрузить и запустить вредоносный код.
Для Nginx (nginx.conf или файл виртуального хоста):
location ~* /wp-content/uploads/.*.(php|phar|phtml)$ { return 403; } location ~* /wp-includes/.*.(php|phar|phtml)$ { return 403; }
Шаг 7. Защитите базу данных от SQL-инъекций
SQL-инъекция — тип атаки, когда хакер вставляет в форму поиска, комментарий или URL вредоносный SQL-код. При успешной атаке он может прочитать, изменить или удалить все данные из базы: логины, пароли, заказы, цены, персональные данные клиентов.
Как защититься:
1. Используйте подготовленные выражения (prepared statements) в коде — это стандартный способ защиты от SQL-инъекций, при котором запрос и данные отправляются отдельно. Даже если хакер вставляет вредоносный код в поле ввода, база данных воспринимает его как данные, а не как команду.
2. Экранируйте все пользовательские данные — если вы пишете запросы "вручную" (что не рекомендуется), обязательно пропускайте все переменные через функцию экранирования
(например, mysqli_real_escape_string() в PHP).
3. Используйте плагины WAF на уровне CMS — они фильтруют подозрительные запросы.
Пример уязвимого кода (так делать нельзя):
// ОПАСНО! Хакер может отправить в поле поиска: ' OR '1'='1 $search = $_GET['s']; $query = "SELECT * FROM goods WHERE name LIKE '%$search%'";
Как правильно (подготовленные выражения через PDO):
$search = $_GET['s'] . '%'; $stmt = $pdo->prepare("SELECT * FROM goods WHERE name LIKE ?"); $stmt->execute([$search]);
Для сайтов на CMS: современные WordPress, Битрикс, OpenCart используют защищённые методы работы с базой данных, НО — только при условии, что разработчики плагинов не пишут велосипеды. Используйте проверенные плагины из официальных каталогов, а не скачанные бесплатно со сомнительных сайтов.
Шаг 8. Регулярно делайте и храните резервные копии
Бэкап — это "спасательный круг". Даже если сайт взломали, вы можете восстановить рабочую версию за 15–30 минут, если у вас есть свежая резервная копия. Без бэкапа вы потеряете всё: тексты, настройки, товары, заказы, пользователей.
Что должно быть в бэкапе:
- Все файлы сайта (ядро CMS, плагины, темы, загрузки, кастомный код)
- База данных (MySQL/PostgreSQL) — здесь хранится почти весь контент, заказы, пользователи, настройки
Где хранить бэкапы:
- Облачное хранилище (Yandex Disk, Google Drive, Dropbox) — настройте автоматическую заливку через плагин или скрипт
- Отдельный сервер или второй хостинг — надёжно, если основной хостинг взломали
- Категорически нельзя хранить бэкап в папке на том же хостинге (при взломе хакер удалит и его)
Плагины для автоматических бэкапов:
- WordPress: UpdraftPlus (бесплатная версия позволяет хранить бэкапы в Google Drive/Yandex Disk), BackupGuard, Jetpack Backup (платный)
- 1С-Битрикс: встроенные средства (Настройки → Настройки продукта → Резервное копирование), настройте регулярное копирование на внешний сервер через cron
- Хостинг: часто есть встроенная функция автоматического бэкапирования (раз в день/неделю). Но не полагайтесь только на неё — дублируйте на внешнее хранилище.
Периодичность бэкапов:
- Интернет-магазин (много заказов в день) — ежедневно
- Корпоративный сайт/блог с редкими обновлениями — 1–2 раза в неделю
- Лендинг с формами заявок — ежедневно (чтобы не потерять заявки)
Шаг 9. Используйте веб-брандмауэр (WAF) для защиты сайта
WAF (Web Application Firewall) — это фильтр, который анализирует все запросы к сайту и блокирует подозрительные: SQL-инъекции, XSS-атаки, брутфорс, спам в комментариях, загрузку вредоносных файлов.
Варианты WAF:
1. Встроенный WAF в хостинге — многие хостинги (Beget, Timeweb, REG.RU, Ru-Center) предоставляют базовый WAF бесплатно. Узнайте у техподдержки, включён ли он по умолчанию.
2. WAF на уровне CDN — Cloudflare (бесплатный тариф даёт базовые правила, про-тариф — больше 100+ правил). Мы подробно писали о подключении CDN в предыдущей статье.
3. Плагины WAF для CMS:
- WordPress: Wordfence Security (бесплатная версия отличная), Sucuri Security, iThemes Security
- 1С-Битрикс: модуль "Проактивная защита" (встроен в Битрикс, включите в настройках)
Настройка Wordfence для WordPress (бесплатно):
- Установите и активируйте плагин Wordfence Security
- Пройдите быстрый мастер-настройки (Firewall Optimization — выберите режим "Extended Protection", может потребоваться правка .htaccess)
- Включите "Brute Force Protection" — блокирует IP после 5 неудачных попыток входа
- Включите "Scan" — проверка ядра, плагинов, тем на наличие уязвимостей (запускается автоматически раз в день)
Wordfence бесплатной версии достаточно для 95% сайтов. Платная версия добавляет брандмауэр на основе "правил" (емкие обновления) и проверку IP по собственной базе угроз, но платить стоит только если ваш сайт часто атакуют осознанно, а не "автоматические" скрипты.
Шаг 10. Правильно настройте права доступа к файлам и папкам
Неправильные права (chmod) на файлы и папки — это дыра в безопасности. Если права слишком открыты, хакер может изменять файлы сайта (например, вставить вредоносный код в
index.php) даже без доступа к админке.
Правильные права для большинства CMS (WordPress, Битрикс, OpenCart):
| Тип объекта | Права (chmod) | Что означает |
|---|---|---|
| Папки (директории) | 755 или 750 | Владелец может всё (читать, писать, выполнять), группа и остальные — только читать и выполнять, но не записывать |
| Файлы (все, кроме специальных) | 644 или 640 | Владелец может читать и писать, остальные — только читать |
| wp-config.php (конфиг) | 600 или 640 | Только владелец может читать и писать — максимальная защита |
| Папка /uploads (для загрузок) | 755 (но без права выполнения PHP!) | Владелец может писать, остальные только читать. Плюс запрет выполнения через .htaccess (шаг 6) |
Как проверить и изменить права:
Через файловый менеджер в панели хостинга или через FTP-клиент (FileZilla, WinSCP):
- Выделите папку/файл → ПКМ → File permissions → введите нужное число (755 или 644)
- Отметьте "Recurse into subdirectories" (если меняете права для всей папки рекурсивно), но не применяйте 755 ко всем файлам внутри — для файлов должно быть 644.
Важное исключение: Некоторые плагины и темы требуют права 777 для временной работы (например, кэш-папки). Это небезопасно. Лучше настроить владельца файлов (chown) так, чтобы PHP-процесс и владелец FTP были одним пользователем — тогда прав 755/644 достаточно для всего.
Бонусный шаг 11: Мониторинг изменений файлов и подозрительной активности
Даже если вы всё сделали правильно, иногда взломы случаются. Мониторинг позволяет обнаружить вторжение в первые часы или дни, а не через месяц, когда ущерб уже нанесён.
Что мониторить:
- Неизменность файлов ядра CMS — Wordfence (бесплатно) и другие плагины безопасности имеют функцию сканирования и уведомлений об изменении файлов.
- Подозрительные запросы к сайту — настройте логирование ошибок PHP и регулярно просматривайте логи хостинга (панель управления → Логи → Лог ошибок).
- Новых пользователей с правами администратора — Wordfence отправляет уведомление, если создан новый пользователь с ролью administrator.
Простой бесплатный способ мониторинга для WordPress:
- Установите плагин Wordfence (как в шаге 9)
- Включите "Email Alerts" — настройте уведомления на вашу почту о критических событиях (принудительная смена пароля, массовые неудачные попытки входа, изменение файлов ядра)
- Настройте регулярное сканирование: раз в день в 4 утра (когда нагрузка минимальна).
Что делать, если сайт уже взломали
Если вы заметили признаки взлома (сайт перенаправляет на другой URL, появились странные ссылки, админка не открывается, хостинг прислал предупреждение) — действуйте по плану:
- Уведомите хостинг — временно заблокируйте доступ к сайту или попросите хостинг сделать это.
- Не паникуйте, не удаляйте всё сразу — сначала восстановитесь с бэкапа, если он есть.
- Смените все пароли (хостинг, FTP, база данных, админка CMS, WordPress, почта, связанная с доменом). Используйте надёжные.
- Восстановите сайт из бэкапа (см. шаг 8) — самый быстрый способ.
- Если бэкапа нет — закажите услугу по удалению вредоносного кода у профессионалов (не пытайтесь удалить "вручную" — хакеры часто оставляют закладки в неочевидных файлах).
- Найдите и закройте уязвимость — через которую произошёл взлом (устаревший плагин, слабый пароль, уязвимость хостинга).
- Проверьте сайт через сервисы антивирусов — Sucuri SiteCheck, Kaspersky VirusDesk, VirusTotal.
Чек-лист: проверьте свой сайт за 10 минут
Пройдите по пунктам. Если на любой вопрос ответ "нет" — срочно исправляйте.
- [ ] Пароль от админки длиннее 12 символов, содержит буквы, цифры, спецсимволы
- [ ] Стандартный путь входа (
/wp-adminили/bitrix/admin) изменён - [ ] Включена двухфакторная аутентификация (2FA) для всех пользователей с доступом к админке
- [ ] CMS, все плагины и тема обновлены до последних версий
- [ ] Файл конфигурации (wp-config.php) защищён от чтения из интернета
- [ ] В папке загрузок (
/uploads) запрещено выполнение PHP-скриптов (через .htaccess) - [ ] Настроены регулярные автоматические бэкапы на внешнее хранилище (не на этот же хостинг)
- [ ] Установлен и активен WAF-плагин (Wordfence или встроенный в хостинг/CDN)
- [ ] Права на файлы: папки 755, файлы 644, wp-config.php 600
- [ ] Проверяли наличие обновлений и запускали сканирование безопасности хотя бы раз за последнюю неделю
Заключение: безопасность — это процесс, а не результат
В мире веб-безопасности нет "настроил один раз и забыл". Хакеры постоянно ищут новые уязвимости, появляются обновления безопасности CMS и плагинов, меняются методы атак. Регулярно (хотя бы раз в месяц) проходите по чек-листу выше — это 10–15 минут времени, которые спасут ваш бизнес.
Начните прямо сегодня с самых простых шагов: смените пароль на сложный, включите двухфакторку и установите Wordfence. Это уже закроет 70% типовых угроз. Затем переходите к более тонкой настройке: защита конфигов, запрет выполнения PHP в uploads, бэкапы на внешнее хранилище.
Компания EDGESECTION предлагает комплексную услугу по технической поддержке и защите сайтов. Мы берём на себя безопасность, обновления, бэкапы и мониторинг, чтобы вы могли заниматься бизнесом, а не IT. Оставьте заявку на сайте — бесплатно проверим текущий уровень защиты вашего сайта и дадим рекомендации.
| CMS | Стандартный путь | Как изменить |
|---|---|---|
| WordPress (до 5.x) |
/wp-admin/, /wp-login.php
|
Плагин WPS Hide Login (бесплатный) или изменение через functions.php |
| 1С-Битрикс |
/bitrix/admin/
|
Настройки → Защита → Смена пути к административной части |
| OpenCart |
/admin/
|
Переименовать папку admin через FTP и обновить config.php
|
| Joomla |
/administrator/
|
Плагин AdminExile или переименование папки с правкой конфигов |