Защита WordPress за пределами плагинов: 12 настроек сервера и wp-config
Реальная безопасность WordPress на уровне сервера и wp-config — права доступа, ключи, заголовки — а не просто установленный и забытый плагин.
Плагины безопасности полезны, но у них есть чёткий предел: они работают внутри WordPress, то есть уже после того, как запрос дошёл до PHP. Самые надёжные меры находятся ниже — на уровне веб-сервера и в файле wp-config.php, куда плагин не дотягивается. Это настройки, которые вы делаете один раз; они тихо остаются активными и не нагружают сайт.
Ниже — 12 конкретных вещей, которые вы можете проверить сами или попросить настроить хостинг. Они не заменяют здравый смысл (надёжные пароли, своевременные обновления), но заметно поднимают планку для того, кто пытается проникнуть. И честное предупреждение: если кто-то обещает вам «невзламываемый» сайт — уходите. Безопасность — это слои, а не галочка.
Права доступа к файлам, которые не оставляют открытых дверей
Неправильные права — одна из самых частых проблем. Простое правило:
- каталоги: 755
- файлы: 644
- wp-config.php: 600 (или 640), доступен для чтения только пользователю сервера
Никогда не ставьте 777 ни на что — это значит «писать может кто угодно». Проверьте и владельца файлов: всё должно принадлежать пользователю, под которым работает PHP, а не root. Хороший признак: сам WordPress не должен иметь возможности напрямую редактировать файлы темы — если может, то может и злоумышленник, взломавший аккаунт. wp-config.php заслуживает отдельного отношения, потому что в нём хранятся данные доступа к базе.
wp-config.php — здесь задаётся тон
Этот файл — сердце установки. Несколько строк, которые важны:
- Уникальные ключи и соли (salts), сгенерированные официальным сервисом WordPress — они аннулируют украденные сессии.
- define('DISALLOW_FILE_EDIT', true); — убирает редактор тем и плагинов из админки, чтобы никто не внедрил код из взломанного аккаунта.
- define('FORCE_SSL_ADMIN', true); — принуждает HTTPS в админ-зоне.
- define('WP_DEBUG', false); и отключённый WP_DEBUG_DISPLAY на боевом сайте, чтобы ошибки не раскрывали серверные пути.
По желанию можно переместить wp-config.php на уровень выше публичного корня и сменить префикс таблиц с wp_ на свой. Это не панацея, но уменьшает поверхность атаки.
Правила на веб-сервере (Apache / Nginx)
Здесь вы блокируете доступ ещё до запуска PHP.
- Запретите прямой доступ к чувствительным файлам: wp-config.php, .htaccess, readme.html, xmlrpc.php (если вы не используете XML-RPC).
- Отключите листинг каталогов (Options -Indexes на Apache), чтобы никто не мог просматривать папки.
- Самое важное: отключите выполнение PHP в wp-content/uploads. Если злоумышленник сумеет загрузить замаскированный .php-файл, без выполнения там он станет безвредным.
На Nginx это блоки location, на Apache — правила в .htaccess или в конфигурации. На виртуальном хостинге попросите поддержку применить их — это обычная просьба.
Заголовки безопасности — ответы, которые задают браузеру правила
HTTP-заголовки не остановят взлом на стороне сервера, но закрывают многие атаки на стороне браузера (кликджекинг, подмену типа контента, откат на HTTP). Стоит настроить:
- Strict-Transport-Security (HSTS) — заставляет браузер использовать только HTTPS.
- X-Content-Type-Options: nosniff — запрещает угадывание типа файла.
- X-Frame-Options: SAMEORIGIN (или CSP frame-ancestors) — защита от кликджекинга.
- Referrer-Policy и Permissions-Policy — ограничивают, что утекает и какие браузерные API разрешены.
Настройте их на уровне сервера или через правила заголовков вашей платформы. Результат можно проверить любым бесплатным публичным сканером заголовков.
База данных, учётные записи и обслуживание
Последний слой — это гигиена:
- Пользователь базы данных должен иметь только необходимые права на своей базе — не глобальный root-аккаунт.
- Никакого имени «admin», длинные уникальные пароли; в идеале — двухфакторная аутентификация для админских учёток.
- Держите PHP и WordPress на поддерживаемой версии — многие бреши приходят от старого софта, а не от изощрённых атак.
- Автоматический, проверенный бэкап, хранящийся не на том же сервере.
Так выглядит установка, к которой отнеслись серьёзно, в MPO Web Studio: мы сдаём сайты уже защищёнными, удалённо, по всей стране, с этими настройками, сделанными с самого начала. Если хотите мнение о вашем текущем сайте, напишите нам в WhatsApp — честно скажем, что стоит изменить.
Частые вопросы
Разве плагина безопасности вроде Wordfence недостаточно?+
Он помогает, но работает внутри WordPress, то есть уже после того, как запрос дошёл до PHP. Настройки сервера и wp-config действуют раньше и глубже. В идеале используйте их вместе, а не одно вместо другого.
Можно ли сделать эти настройки на виртуальном хостинге?+
В wp-config.php — да, доступ к нему есть всегда. Для серверных правил и заголовков часть можно прописать в .htaccess; остальное запросите у поддержки хостинга — это обычная просьба, и вам должны помочь.
Смена префикса таблиц или скрытие wp-login действительно важны?+
Это меры «снижения шума», а не настоящая защита. Помогают незначительно, но не полагайтесь на них. Правильные права, принудительный HTTPS, обновления и бэкап значат намного больше.
XML-RPC — отключать или нет?+
Если вы не пользуетесь мобильным приложением WordPress, Jetpack или удалённой публикацией, его можно заблокировать — это частая цель брутфорс-атак. Сначала убедитесь, что ничто на сайте от него не зависит.
Как часто нужно переделывать эти настройки?+
Сделанные однажды, они остаются. Но проверяйте права после переносов, держите обновления актуальными и периодически тестируйте бэкап. Безопасность — это обслуживание, а не завершённый проект.
7 ошибок, которые отпугивают клиентов с вашего сайта
Оставьте email и получите гид прямо здесь, сразу. Без спама.
Хотите увидеть, как мог бы выглядеть сайт вашего бизнеса?
Напишите нам в WhatsApp — и мы БЕСПЛАТНО подготовим демо-сайт с названием вашего бизнеса. Сначала смотрите, потом решаете.