Краткий ответ: чтобы защитить WordPress от взлома, нужно настроить обновления, сложные пароли, 2FA, ограничение входа, правильные роли пользователей, резервные копии, права файлов, защиту wp-config.php, отключение редактора файлов, WAF, мониторинг логов, защиту XML-RPC и регулярную проверку плагинов/тем.
WordPress часто взламывают не потому, что он “плохой”, а потому что сайт оставляют без базовой защиты: старые плагины, слабые пароли, лишние администраторы, пиратские темы, открытый XML-RPC, неправильные права файлов, отсутствие резервных копий и логов.
Официальная документация WordPress описывает безопасность не как “идеальную защиту”, а как снижение риска: нужно уменьшать количество точек входа, ограничивать доступ, делать бэкапы и понимать состояние сайта. :contentReference[oaicite:1]{index=1}
Чаще всего реальные проблемы начинаются здесь:
По данным Patchstack, в экосистеме WordPress за 2024 год было найдено 7 966 новых уязвимостей, и большая часть была связана именно с плагинами, а не с ядром WordPress. Это хороший практический аргумент в пользу регулярного аудита плагинов и тем. :contentReference[oaicite:2]{index=2}
Минимум: обновления, 2FA, сложные пароли, ограничение попыток входа, правильные роли, резервные копии, WAF, защита wp-config.php, отключение редактора файлов, проверка плагинов/тем и мониторинг логов.
Часто сайт ломают через уязвимый плагин, слабый пароль, старую тему, открытый XML-RPC, заражённый компьютер администратора или небезопасный доступ по FTP/SFTP.
Нет. Security-плагин может помочь, но он не заменяет обновления, хорошие пароли, 2FA, backup, безопасный хостинг, правильные права файлов и контроль доступа.
Перед настройкой защиты нужно понять текущее состояние сайта. Нельзя просто включить все настройки security-плагина и считать сайт защищённым. Некоторые функции могут сломать REST API, WooCommerce, формы, оплату, cron, интеграции или доступ администраторов.
| Зона проверки | Что смотреть | Почему важно |
|---|---|---|
| Пользователи | Администраторы, слабые логины, старые аккаунты | Лишний админ — прямой риск захвата сайта |
| Плагины | Обновления, репутация, дата последнего обновления | Уязвимые плагины часто становятся точкой входа |
| Темы | Активная тема, дочерняя тема, неиспользуемые темы | Старая тема может содержать уязвимый код |
| wp-config.php | Права доступа, salts, доступность извне | Файл содержит данные подключения к базе |
| Файлы | Права 644/755, подозрительные PHP в uploads | Неправильные права упрощают заражение |
| Логи | error_log, access_log, security log | Без логов сложно понять, что произошло |
| Бэкапы | Частота, место хранения, тест восстановления | Без рабочей копии восстановление может затянуться |
| Сервер | PHP, HTTPS, WAF, ModSecurity, SFTP | Хостинг — первый слой защиты |
Логи важны не только после взлома. В документации WordPress прямо указано, что логи помогают понять, что происходило на сайте: какие действия, когда и с каких IP выполнялись. :contentReference[oaicite:3]{index=3}
Защита WordPress должна строиться слоями. Один слой может не сработать, но несколько настроек вместе заметно снижают риск взлома.
Старые версии WordPress, плагинов и тем — один из главных рисков. Официальная документация WordPress подчёркивает, что старые версии становятся более открытыми для атак, потому что после публикации исправления информация об уязвимости часто становится известной. :contentReference[oaicite:4]{index=4}
Практический порядок:
Если сайт уже ломался после обновления, используйте безопасный порядок из инструкции что делать, если сайт WordPress сломался после обновления.
Пароль администратора должен быть уникальным, длинным и не использоваться на других сайтах. Для администратора, редакторов, менеджеров магазина и разработчиков лучше включить двухфакторную авторизацию.
Особенно важно включить 2FA для:
OWASP относит ошибки идентификации и аутентификации к важным рискам веб-приложений, поэтому слабые пароли и плохая логика входа — это не мелочь, а реальная зона риска. :contentReference[oaicite:5]{index=5}
WordPress по умолчанию не всегда жёстко ограничивает перебор паролей. Поэтому стоит настроить ограничение попыток входа, блокировку по IP, CAPTCHA/Turnstile или WAF-правила для wp-login.php.
Что важно не сломать:
Не используйте admin, administrator, webmaster, test, demo как логины администраторов. WordPress прямо указывает, что легко угадываемые имена администратора обычно атакуются первыми. :contentReference[oaicite:6]{index=6}
Проверьте роли:
Если злоумышленник получит доступ к аккаунту администратора, встроенный редактор темы и плагинов может стать быстрым способом добавить вредоносный PHP-код. WordPress рекомендует отключать редактирование файлов через константу DISALLOW_FILE_EDIT. :contentReference[oaicite:7]{index=7}
Это не заменяет полноценную защиту, но снижает ущерб при компрометации админского аккаунта.
wp-config.php содержит доступы к базе данных, ключи безопасности и важные настройки сайта. WordPress описывает этот файл как один из самых важных файлов установки. :contentReference[oaicite:8]{index=8}
Что настроить:
Для WordPress часто используют права 755 для папок и 644 для файлов. Официальная документация WordPress приводит команды для установки 755 на директории и 644 на файлы. :contentReference[oaicite:9]{index=9}
Не ставьте 777 на весь сайт. Это небезопасно. Если плагин требует 777, лучше разобраться с владельцем файлов, группой, PHP-FPM и настройками хостинга.
Отключённый плагин всё равно лежит на сервере. Если в его файлах есть уязвимость или вредоносный код, он может оставаться риском. WordPress рекомендует обновлять плагины и удалять те, которые не используются. :contentReference[oaicite:10]{index=10}
Оставьте:
Пиратские темы и плагины часто содержат скрытые вставки, backdoor, SEO-спам, редиректы или загрузчики вредоносного кода. Даже если сайт работает нормально, заражение может проявиться позже.
Безопаснее покупать плагины у официальных разработчиков или использовать репозиторий WordPress.org. WordPress также рекомендует брать темы и плагины из доверенных источников. :contentReference[oaicite:11]{index=11}
WAF фильтрует подозрительные запросы до того, как они попадут в WordPress. Это помогает против части атак на wp-login.php, xmlrpc.php, SQL-инъекций, XSS, сканеров уязвимостей и вредных ботов.
WordPress описывает два подхода: firewall-плагины на уровне WordPress и внешние WAF/reverse proxy, которые фильтруют трафик до попадания на сервер. :contentReference[oaicite:12]{index=12}
Практически можно использовать:
XML-RPC нужен не всем сайтам. Его могут использовать мобильные приложения, Jetpack, внешние публикации и некоторые интеграции. Если он не нужен, его лучше закрыть или ограничить.
Перед отключением проверьте, не используют ли сайт:
Бэкап — это не защита от взлома, а защита от потери сайта после взлома. WordPress рекомендует регулярно делать копии файлов и базы данных, а также хранить их в доверенном месте. :contentReference[oaicite:13]{index=13}
Хорошая схема backup:
Админка и логин должны работать по HTTPS, чтобы пароли и cookies не передавались в открытом виде. В wp-config.php для этого есть FORCE_SSL_ADMIN, который защищает вход и административную область. :contentReference[oaicite:14]{index=14}
Также стоит проверить:
После заражения часто появляются новые PHP-файлы в uploads, изменяется .htaccess, добавляются неизвестные администраторы, появляются странные cron-задачи и скрытые вставки в теме.
Мониторить нужно:
Важно: код ниже влияет на доступ к админке, работу плагинов, XML-RPC, REST API, wp-config.php, debug.log и серверные правила. Перед изменениями сделайте backup файлов и базы. Проверяйте сайт после каждой правки, особенно если есть WooCommerce, формы, личный кабинет, CRM, Jetpack или внешние интеграции.
Куда вставлять: wp-config.php, выше строки “That’s all, stop editing”.
define( 'DISALLOW_FILE_EDIT', true );
Куда вставлять: wp-config.php. Используйте только если SSL-сертификат уже установлен и HTTPS работает корректно.
define( 'FORCE_SSL_ADMIN', true );
Куда вставлять: .htaccess в корне сайта, ближе к началу файла. Работает для Apache/LiteSpeed. Перед изменением сохраните копию .htaccess.
<Files "wp-config.php">
Require all denied
</Files>
Куда вставлять: .htaccess в корне сайта. Это особенно важно, если debug.log находится в wp-content и может открываться по прямой ссылке.
<Files "debug.log">
Require all denied
</Files>
Куда вставлять: .htaccess в корне сайта. Не используйте, если вам нужен Jetpack, мобильное приложение WordPress или внешние публикации через XML-RPC.
<Files "xmlrpc.php">
Require all denied
</Files>
Куда вставлять: создайте файл .htaccess внутри папки /wp-content/uploads/. Работает для Apache/LiteSpeed. На Nginx это настраивается в конфиге сервера.
<FilesMatch ".php$">
Require all denied
</FilesMatch>
Куда вставлять: .htaccess. Перед добавлением проверьте сайт, потому что строгие заголовки могут повлиять на iframe, внешние скрипты и интеграции.
<IfModule mod_headers.c>
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Permissions-Policy "geolocation=(), microphone=(), camera=()"
</IfModule>
Куда выполнять: SSH в корне сайта.
wp user list --role=administrator
Куда выполнять: SSH в корне сайта.
wp plugin list --status=active
Куда выполнять: SSH в корне сайта.
wp theme list
Куда выполнять: SSH в корне сайта. Команда только показывает файлы, не удаляет их.
find wp-content/uploads -type f -name "*.php"
Куда выполнять: SSH в корне сайта. Это только первичный поиск, не окончательный вывод о заражении.
grep -R "base64_decode|eval(|gzinflate|str_rot13" wp-content --include="*.php"
После настройки базовой защиты сайт не становится “невзламываемым”, но у него становится меньше слабых мест. Боты получают меньше точек входа, перебор паролей усложняется, доступ к критическим файлам закрывается, а администратор быстрее замечает подозрительные изменения.
Проверьте после настройки:
Если после настройки защиты сайт стал медленнее, проверьте WAF, security-плагин, сканер файлов и нагрузку на сервер. Для общей производительности можно использовать отдельное руководство как ускорить сайт на WordPress.
Если сайт обслуживает один офис или команда с фиксированными IP, можно ограничить доступ к wp-admin. Но для сайтов с удалённой командой, мобильными администраторами и клиентскими кабинетами такой способ может создать проблемы.
Обычный FTP передаёт данные менее безопасно. Лучше использовать SFTP или SSH-доступ, если хостинг это поддерживает.
Если на компьютере администратора есть вредоносное ПО, даже защищённый WordPress может быть скомпрометирован через украденные пароли, cookies или FTP-доступ. WordPress прямо указывает, что защита сайта не поможет, если компьютер администратора заражён keylogger или malware. :contentReference[oaicite:15]{index=15}
Не давайте всем один общий admin-аккаунт. Для каждого разработчика, контент-менеджера и подрядчика должен быть отдельный пользователь с минимально нужной ролью. После завершения работ доступ нужно отключать.
Интернет-магазин хранит заказы, личные данные клиентов, адреса доставки, купоны, интеграции оплат и доставки. Для WooCommerce особенно важны 2FA, защита checkout, обновления, безопасные плагины оплаты и корректный кеш.
Если пользователи могут загружать файлы через формы, личный кабинет или frontend-публикации, проверьте типы файлов, размер, обработку MIME-type и запрет выполнения PHP в uploads.
Backup считается рабочим только после тестового восстановления. Архив, который невозможно распаковать, база с ошибками или backup без wp-content/uploads могут не спасти сайт.
Плагин — только один слой. Он не заменяет обновления, хорошие пароли, 2FA, backup, безопасный хостинг и контроль прав пользователей.
Отключённый, но оставленный на сервере плагин может оставаться риском. Если он не нужен — удалите его после backup.
Пользователь, которому нужно только редактировать тексты, не должен иметь доступ к плагинам, темам, настройкам и пользователям.
Backup-архивы с базой и файлами могут содержать пароли, email, заказы и персональные данные. Их нельзя оставлять в публичной папке сайта.
Если сайт использует Jetpack, мобильное приложение или внешнюю публикацию, отключение XML-RPC может сломать нужную функцию.
Это не нормальное решение проблемы доступа. Нужно исправлять владельца файлов, группу и настройки PHP, а не открывать сайт на запись всем.
Без логов сложно понять, был ли перебор паролей, загрузка вредоносного файла, создание нового администратора или изменение .htaccess.
Возможная причина: компрометация админского аккаунта, уязвимый плагин, вредоносный код в теме.
Что делать: удалить неизвестного пользователя после backup, сменить пароли, обновить salts, проверить логи входа, плагины, темы и файлы.
Возможная причина: заражённый .htaccess, вредоносный JS, вставка в теме, заражённый плагин, подмена в базе.
Что делать: проверить .htaccess, functions.php, header.php, wp_options, виджеты, плагины и файлы uploads.
Возможная причина: уязвимая форма загрузки, плагин, который не проверяет MIME-type, backdoor.
Что делать: изолировать сайт, сделать копию, проверить файлы, запретить выполнение PHP в uploads, найти точку загрузки.
Возможная причина: заражение, слабая форма, открытый SMTP, вредоносный cron, взломанный аккаунт.
Что делать: проверить email-логи, cron, плагины форм, неизвестных пользователей, вредоносные файлы и лимиты отправки.
Возможная причина: WAF, CAPTCHA, блокировка REST API, security headers, кеш nonce.
Что делать: проверить консоль браузера, Network, error_log, исключения WAF и настройки формы.
Возможная причина: блокировка AJAX, REST API, платежного callback, cookies, сессий или внешнего домена оплаты.
Что делать: проверить логи WooCommerce, Network, security-плагин, WAF, callback URL и кеш.
Возможная причина: правило не поддерживается сервером, ошибка синтаксиса, конфликт с кешем или редиректами.
Что делать: вернуть старый .htaccess, добавлять правила по одному, проверить error_log. Если нужна отдельная диагностика, смотрите материал ошибка 500 WordPress.
Обновите WordPress, плагины и темы, включите 2FA, удалите лишние плагины, настройте backup, ограничьте попытки входа, отключите редактор файлов, закройте wp-config.php и проверьте логи.
Да, часто он полезен: firewall, 2FA, логирование, сканирование файлов, ограничение входа. Но он не заменяет правильные обновления, роли пользователей, backup и безопасный сервер.
Можно, но это не основная защита. Смена URL может снизить шум от ботов, но не заменяет 2FA, сильные пароли, rate limiting и WAF.
Если XML-RPC не используется — лучше закрыть или ограничить. Если сайт использует Jetpack, мобильное приложение или внешние публикации, сначала проверьте зависимости.
Признаки: неизвестные администраторы, редиректы, спам, странные PHP-файлы, изменённый .htaccess, падение трафика, предупреждения браузера, письма от хостинга, неизвестные cron-задачи.
Часто используют 755 для папок и 644 для файлов. Для wp-config.php могут использовать более строгие права, если это поддерживает сервер. Не ставьте 777 на весь сайт.
Полной гарантии нет. Задача — снизить риск, быстро обнаружить проблему и иметь рабочий план восстановления.
Зависит от сайта. Для блога может хватить ежедневной или недельной копии. Для магазина, LMS или сайта с заявками лучше делать копии чаще и обязательно хранить их вне основного сервера.
Это разные слои. 2FA защищает вход пользователей, WAF фильтрует вредные запросы до WordPress. Лучше использовать оба.
Сделайте копию текущего состояния для анализа, закройте доступы, смените пароли, обновите salts, проверьте пользователей, файлы, базу, логи, восстановите чистую копию и найдите точку входа.
Если нужно защитить WordPress от взлома, важно настроить не одну кнопку, а весь базовый контур: доступы, обновления, файлы, wp-config.php, бэкапы, логи и проверку плагинов.
Защита WordPress от взлома начинается с базовых вещей: обновления, 2FA, сильные пароли, минимум администраторов, удаление лишних плагинов, безопасные права файлов, закрытый wp-config.php, рабочие бэкапы и мониторинг логов.
Дальше добавляются более строгие меры: WAF, ограничение входа, контроль XML-RPC, запрет выполнения PHP в uploads, security headers и проверка изменений файлов.
Главная цель — не “спрятать WordPress”, а снизить риск, быстро увидеть подозрительную активность и иметь рабочий план восстановления сайта.
Об авторе