EDGESECTION

Как защитить сайт от взлома: 10 простых шагов

2
13 минут

По статистике, каждый 30-й сайт в России взламывается хотя бы раз в год. Чаще всего атакуют интернет-магазины, сайты на популярных CMS (WordPress, Битрикс) и проекты с устаревшими версиями плагинов/модулей. Последствия взлома могут быть катастрофическими: потеря данных клиентов, подмена страниц на сайт конкурента или фишинговую форму, штрафы от Роскомнадзора, падение позиций в поиске и, в некоторых случаях, уголовная ответственность, если данные пользователей были украдены.

Хорошая новость: 80% взломов происходят из-за 10 типовых уязвимостей, и их можно закрыть простыми действиями, не требующими глубоких технических знаний. В этой инструкции — 10 конкретных шагов для защиты сайта, которые может выполнить даже начинающий администратор.

Компания EDGESECTION занимается разработкой и поддержкой сайтов, включая настройку безопасности и защиту от взлома. Но даже если вы не наш клиент — внедрите эти шаги самостоятельно, и риск взлома снизится на 90%.

После выполнения всех шагов вы получите:
  • ✅ Защиту от 90% типовых атак (брутфорс, SQL-инъекции, XSS)
  • ✅ Возможность быстро восстановить сайт после взлома (бэкапы)
  • ✅ Спокойствие за данные клиентов и репутацию бизнеса
  • ✅ Соответствие требованиям 152-ФЗ (защита персональных данных)

Шаг 1. Установите сложные пароли для всех пользователей

Самый частый способ взлома — брутфорс (подбор пароля). Хакеры используют автоматические программы, которые перебирают миллионы комбинаций в секунду. Если ваш пароль admin123 или qwerty, он будет подобран за 5–10 минут.

Правила хорошего пароля:

Пример хорошего пароля: G7#kLp$2mQw@9xZ! (сложный, но его можно сохранить в менеджере паролей, чтобы не запоминать).

⚠️ Важнее всего:
  • Пароль от админки сайта
  • Пароль от хостинга (панель управления)
  • Пароль от FTP/SFTP-доступа к файлам
  • Пароль от базы данных (MySQL/PostgreSQL)
Используйте менеджеры паролей (Bitwarden, 1Password, KeePass, встроенный в браузер) — они генерируют и хранят сложные пароли, вам нужно запомнить только один мастер-пароль.

Как проверить, не скомпрометирован ли ваш пароль

Воспользуйтесь сервисом Have I Been Pwned. Он проверяет, не появлялся ли ваш пароль в утечках баз данных. Если да — меняйте немедленно.

Шаг 2. Смените стандартные пути входа (для CMS)

Хакеры знают стандартные адреса входа в популярные CMS и атакуют именно их. Это называется mass‑attack (массовая атака) — один скрипт одновременно проверяет тысячи сайтов на наличие стандартных путей.

Для WordPress — самый простой способ (плагин WPS Hide Login)

  1. Установите бесплатный плагин WPS Hide Login
  2. Перейдите в Настройки → WPS Hide Login
  3. В поле "Login URL" введите что-то уникальное, например: my-secret-dashboard
  4. Сохраните. Теперь админка доступна по адресу: ваш-сайт.ru/my-secret-dashboard
  5. Старый адрес /wp-admin и /wp-login.php перестанут работать — хакеры будут получать ошибку 404.
💡 Совет: Запомните новый адрес входа или сохраните в менеджере паролей. Если забудете — придётся отключать плагин через FTP.

Шаг 3. Включите двухфакторную аутентификацию (2FA)

Двухфакторка — это второй уровень защиты. Даже если хакер узнал ваш пароль, он не сможет зайти в админку без дополнительного кода, который генерируется в приложении на вашем телефоне (Google Authenticator, Yandex Key, Authy).

Как включить 2FA для разных систем

  • WordPress: плагин Google Authenticator — Two Factor Authentication или WP 2FA
  • 1С-Битрикс: встроенная опция в разделе "Настройки" → "Защита" → "Двухфакторная аутентификация"
  • Хостинг (ISPmanager, cPanel): обычно есть в настройках безопасности

Инструкция для WordPress (плагин Two-Factor):

  1. Установите плагин "Two-Factor" (от разработчиков WordPress)
  2. Перейдите в раздел "Пользователи" → "Ваш профиль"
  3. В блоке "Two-Factor Options" выберите способ — лучше всего "Time Based One-Time Password (TOTP)"
  4. Отсканируйте QR-код через приложение-аутентификатор на телефоне (Google Authenticator, Microsoft Authenticator, Яндекс Ключ)
  5. Введите сгенерированный код для подтверждения. Готово!

Шаг 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 недели заходите в админку и проверяйте наличие обновлений.
⚠️ Важно: Перед любым обновлением делайте бэкап (см. шаг 8). Иногда обновление может "сломать" совместимость со старыми плагинами. С бэкапом вы за 5 минут откатитесь к рабочей версии.

Шаг 5. Защитите файл wp-config.php (или аналог в других CMS)

Файл wp-config.php (для WordPress) и аналогичные конфиги в других CMS содержат критически важные данные: логин и пароль от базы данных, секретные ключи, подключение к сторонним сервисам. Если хакер получит доступ к этому файлу — он полностью контролирует ваш сайт.

Что нужно сделать:

Переместить файл на один уровень выше корня сайта (только для WordPress).

WordPress может хранить wp-config.php в корне сайта (где лежит index.php), но также ищет его и в родительской директории. Перенесите его на уровень выше — так доступ к файлу из интернета станет невозможен.

Способ:

  1. Через FTP переместите wp-config.php в папку ../ (выше, чем public_html или www).
  2. В корне сайта оставьте пустышку — создать файл wp-config.php с содержимым: <?php // silent is gold
  3. 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 (бесплатно):

  1. Установите и активируйте плагин Wordfence Security
  2. Пройдите быстрый мастер-настройки (Firewall Optimization — выберите режим "Extended Protection", может потребоваться правка .htaccess)
  3. Включите "Brute Force Protection" — блокирует IP после 5 неудачных попыток входа
  4. Включите "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:

  1. Установите плагин Wordfence (как в шаге 9)
  2. Включите "Email Alerts" — настройте уведомления на вашу почту о критических событиях (принудительная смена пароля, массовые неудачные попытки входа, изменение файлов ядра)
  3. Настройте регулярное сканирование: раз в день в 4 утра (когда нагрузка минимальна).

Что делать, если сайт уже взломали

Если вы заметили признаки взлома (сайт перенаправляет на другой URL, появились странные ссылки, админка не открывается, хостинг прислал предупреждение) — действуйте по плану:

  1. Уведомите хостинг — временно заблокируйте доступ к сайту или попросите хостинг сделать это.
  2. Не паникуйте, не удаляйте всё сразу — сначала восстановитесь с бэкапа, если он есть.
  3. Смените все пароли (хостинг, FTP, база данных, админка CMS, WordPress, почта, связанная с доменом). Используйте надёжные.
  4. Восстановите сайт из бэкапа (см. шаг 8) — самый быстрый способ.
  5. Если бэкапа нет — закажите услугу по удалению вредоносного кода у профессионалов (не пытайтесь удалить "вручную" — хакеры часто оставляют закладки в неочевидных файлах).
  6. Найдите и закройте уязвимость — через которую произошёл взлом (устаревший плагин, слабый пароль, уязвимость хостинга).
  7. Проверьте сайт через сервисы антивирусовSucuri SiteCheck, Kaspersky VirusDesk, VirusTotal.
⚠️ Если вы не уверены в своих силах: Пригласите специалиста по безопасности. Хакер мог оставить "бэкдор" (скрытый вход), который вы не найдёте. Профессионалы используют сканеры и анализируют логи, чтобы найти все закладки. Стоимость чистки обычно от 5000 до 30000 ₽ в зависимости от сложности — это дешевле, чем восстановление репутации после утечки данных клиентов.

Чек-лист: проверьте свой сайт за 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 или переименование папки с правкой конфигов
Оставить заявку
Автор:
photoAccount
EDGESECTION Блог
Похожие статьи
Скопировать ссылку ВКонтакте Telegram МАКС Одноклассники LinkedIn