В этой статье описаны самые распространённые проблемы безопасности WordPress и способы их решения, включая советы, как избежать взлома.
Безопасность WordPress является важной темой с тех пор, как эта система управления содержимым (Content Management System или сокращённо — CMS) была выпущена в 2003 году. Как и любое популярное программное обеспечение с длинной и богатой историей, CMS WordPress также может стать целью хакеров. Вредоносные действия могут включать межсайтовые скриптовые атаки, sql-инъекции, брутфорс атаки и ряд прочих способов получения несанкционированного доступа.
По мере того как хакеры набираются опыта в поиске новых способов использования уязвимостей, WordPress-разработчики и специалисты по безопасности совершенствуются в создании сайтов, которые сложнее взломать. Есть вещи, которые разработчики и владельцы сайтов на WordPress могут предпринять в первую очередь, если они не хотят, чтобы хакеры легко смогли обойти защиту их сайтов и получить доступ к данным. Ниже мы обсудим некоторые действия, которые может предпринять администратор WordPress, чтобы его сайт не могли взломать.
Содержание
- Включите правильные разрешения на сервере для wp-config.php и .htaccess
- Используйте актуальную и безопасную версию PHP
- Отключите редактирование тем и плагинов на уровне панели администратора WordPress
- Постоянно обновляйте свои плагины WordPress
- Устанавливайте темы и плагины WordPress только из надёжных источников
- Измените wp_prefix в базе данных во время установки WordPress
- Не используйте стандартный логин «Admin». Используйте надёжные пароли
- Отключите функцию регистрации пользователей, если она вам не нужна
- Отключите комментарии, если они вам не нужны
- Настройка robots.txt для блокирования несанкционированного доступа к файлам WordPress
- Защитите себя от подбора учётных записей пользователей
- Безопасный доступ к wp-admin / wp-login.php, двухфакторная аутентификация, ограниченное количество попыток входа в систему
- Регулярно делайте резервные копии
- Скрывайте информацию об используемых вами версиях WordPress
- Блокируйте выполнение PHP-скриптов в тех WP каталогах, где это не требуется
- Отключите доступ к REST API вашего WordPress
- Ограничьте или отключите доступ к XML-RPC
- Убедитесь, что ваш сайт имеет SSL-сертификат
- Заключение
Включите правильные разрешения на сервере для wp-config.php
и .htaccess
Меняем:
644 -rw-r–r– /home/user/wp-config.php
644 -rw-r–r– /home/user/cgi-bin/.htaccess
на защищённые разрешения:
600 -rw——- /home/user/wp-config.php
600 -rw—— /home/user/cgi-bin/.htaccess
Используйте актуальную и безопасную версию PHP
По состоянию на 6 мая 2022 года самой последней и рекомендуемой версией PHP для WordPress является 8.0. Всегда можно проверить поддерживаемые и безопасные версии PHP, перейдя по этой ссылке. Как и в случае с любым другим программным обеспечением, поддержание всего ПО в актуальном состоянии является важным фактором безопасности WP.
Отключите редактирование тем и плагинов на уровне панели администратора WordPress
Если хакеры получат доступ к учётной записи администратора, то им будет очень легко внедрить вредоносный код в ваши темы и плагины WordPress. Мы будем использовать
DISALLOW_FILE_EDIT
, чтобы запретить редактирование файлов и повысить безопасность сайта.Рассмотрим ниже, как это сделать:
- Для начала откроем файл wp-config.php с помощью любого текстового редактора.
- Внутри этого файла найдите строку
/* That’s all, stop editing! Happy blogging. */
(На этом всё, можете прекратить редактирование! Удачи в ведении блога) и вставьте над ней следующий код:define( 'DISALLOW_FILE_EDIT,' true );
- Сохраните изменения и закройте файл.
- Если вы все сделали правильно, то ссылки «Plugins > Editor» и «Appearance > Editor» больше не должны быть видны в панели управления.
Постоянно обновляйте свои плагины WordPress
Также хорошей идеей будет следить за тематическими блогами и группами поклонников WP в социальных сетях. Многие пользователи WordPress делятся уведомлениями о критических ошибках в определённых плагинах WordPress. Если вы увидели ошибку, касающуюся плагина, который вы используете на своём сайте WordPress, немедленно выполните обновление. Кроме того, не забудьте удалить неиспользуемые плагины, чтобы избежать ненужных уязвимостей в вашей системе безопасности.
Устанавливайте темы и плагины WordPress только из надёжных источников
Самый безопасный способ — использовать официальную базу данных/репозиторий.
Темы WordPress можно найти здесь,
а доверенные плагины — здесь.
Файлы в этом хранилище были проверены и, очевидно, перед публикацией подвергались сканированию на наличие вредоносных программ.
Измените wp_prefix
в базе данных во время установки WordPress
По умолчанию установка WordPress происходит с префиксом
wp_
, но в процессе стоит изменить его на собственный. Тем самым мы усложним вредоносным программам доступ к нашей базе данных и возможность извлечь данные.Не используйте стандартный логин «Admin». Используйте надёжные пароли
Обязательно смените логин на собственный. Также не забывайте, что взломать сложные пароли с использованием нескольких различных символов намного труднее.
Отключите функцию регистрации пользователей, если она вам не нужна
Для этого:
- Перейдите на страницу Настройки (
Settings
), раздел Общие (General
). - Снимите флажок в поле «Любой может зарегистрироваться» (
Anyone can register
) в разделе Членство (Membership
). - Сохраните изменения.
Отключите комментарии, если они вам не нужны
Есть несколько способов сделать это. Вы можете использовать свой код, встроенные опции WordPress или плагин.
Чтобы отключить комментарии глобально с помощью самого WordPress, выполните следующие действия:
- Перейдите в Настройки (
Settings
), раздел Обсуждение (Discussion
)
- Снимите галочку в поле «Разрешить людям оставлять комментарии к новым статьям» (
Allow people to post comments on new articles
).
- Сохраните изменения.
Как мы уже говорили ранее, вы также можете написать свой собственный код или использовать плагин для достижения того же эффекта, но в данном руководстве мы представили только самый быстрый вариант.
Настройка robots.txt для блокирования несанкционированного доступа к файлам WordPress
Данный файл, размещённый в главной папке домена, служит указателем для краулеров Google (агентов пользователей), показывающим, какие страницы они должны посещать и индексировать, а какие — нет. Вы можете использовать пример, представленный в сером поле здесь (не забыв изменить
http://www.example.com/
на ваш собственный домен).Вы также можете взглянуть на официальное руководство Google по robots.txt.
Защитите себя от подбора учётных записей пользователей
Подбор учётных записей пользователей — это форма вредоносной активности, которая позволяет хакерам использовать брутфорс атаки для получения доступа к учётным записям пользователей. Обратите внимание на обсуждение на StackExchange о том, как можно снизить риск подобных атак.
Безопасный доступ к wp-admin / wp-login.php, двухфакторная аутентификация, ограниченное количество попыток входа в систему
Эти меры могут быть реализованы различными способами. Наиболее популярным является ограничение доступа для определённых IP-адресов или отображение дополнительного окна с информацией об аутентификации. Мы также можем установить ограничение на количество попыток входа или вообще использовать двухфакторную аутентификацию.
Двухфакторная аутентификация
Чтобы подключить эту возможность, сначала загрузите плагин Google Authenticator.
После установки перейдите на страницу профиля и отметьте поле «Активен» (
Active
) в настройках Google Authenticator.Теперь самое время установить приложение Google Authenticator для Android
или iOS.
После запуска аутентификатора должен появиться запрос на ввод кода или сканирование QR-кода. Вернитесь в настройки плагина и либо скопируйте код в приложение, либо выберите «Показать/скрыть QR-код» (
Show/Hide QR code
) и отсканируйте его телефоном.Начнётся автоматическая настройка, вам необходимо принять все изменения и затем нажать «Обновить профиль» (
Update profile
) на подстранице «Ваш профиль» (Your profile
). С этого момента каждая попытка входа в систему будет требовать двухфакторной аутентификации на странице входа в WordPress.Ограничение количества попыток входа в систему
Как ранее уже упоминалось, ещё одним методом предотвращения атак брутфорсом является ограничение количества попыток входа пользователя в систему. Как это сделать?
Наверное, самое простое решение — это использовать один из многочисленных плагинов безопасности WordPress, например, WP Limit Login Attempts от Arshid. Вы можете скачать его здесь.
Регулярно делайте резервные копии
Даже самой лучшей защиты может быть недостаточно, чтобы спасти ваш сайт от хакеров WordPress. Поэтому убедитесь, что у вас всегда есть резервная копия на случай, если худшее всё-таки произойдёт. Ещё в качестве альтернативы вы можете воспользоваться следующим плагином безопасности.
Скрывайте информацию об используемых вами версиях WordPress
Информация о вашей версии WP может быть полезна хакерам, поэтому нет необходимости делиться ею свободно. Во-первых, заблокируйте доступ к файлу
readme
, добавив следующие строки кода в файл .htaccess
:<files readme.html>
order allow,deny
deny from all
</files>
Во-вторых, вы можете использовать плагин безопасности для деактивации этой информации. Одним из таких плагинов является Sucuri, который после активации будет автоматически скрывать эту информацию, но для уверенности вы можете проверить это, зайдя в «Настройки» (
Settings
) > вкладка «Усиление» (Hardening
).Вы также можете удалить информацию о версии, добавив следующие строки кода либо в плагин для конкретного сайта, либо в плагин Code Snippets:
function wpbeginner_remove_version() {
return '';
}
add_filter('the_generator', 'wpbeginner_remove_version');
В-третьих, вы можете удалить информацию о версии WP в CSS/JS файлах, загружаемых на сайт. Вот ссылка на то, как это сделать, следуя рекомендациям пользователя tjhole.
Блокируйте выполнение PHP-скриптов в тех WP каталогах, где это не требуется
Запретите выполнение файлов PHP в не предназначенных для этого каталогах, чтобы повысить безопасность вашей платформы. Следуя решениям на сайте wpbeginner, откройте текстовый редактор и введите следующий код:
<Files *.php> deny from all </Files>
Сохраните этот текстовый файл как
.htaccess
и загрузите его в папку /wp-content/uploads/
на вашем сайте.Отключите доступ к REST API вашего WordPress
Если вы не планируете использовать это API, то вы можете отключить к нему доступ с помощью следующего плагина.
Ограничьте или отключите доступ к XML-RPC
Если вы не используете XML-RPC, вы также можете отключить его с помощью:
function remove_xmlrpc_pingback_ping( $methods ) { unset($methods['pingback.ping']); unset($headers['X-Pingback']); return $methods; } add_filter('xmlrpc_enabled', '__return_false'); add_filter('xmlrpc_methods', 'remove_xmlrpc_pingback_ping' );
или с помощью .htaccess:
<Files xmlrpc.php> Order deny,allow Deny from all </Files>
Посмотрите эту ссылку, если вам нужна дополнительная информация.
Убедитесь, что ваш сайт имеет SSL-сертификат
Теоретически можно использовать плагин, но мы рекомендуем действовать вручную, как предложено на этом сайте (прим. переводчика: статья на англ.языке). Ознакомьтесь с разделом «How to properly enable SSL in WordPress / Как правильно включить SSL в WordPress» и следуйте инструкциям.
Заключение
Безопасность должна быть главным приоритетом любого предприятия, большого или малого. Мы надеемся, что эти рекомендации будут полезны в борьбе с хакерами и вредоносными программами. Обязательно следите за нашими статьями, чтобы получить другие советы и рекомендации.
НЛО прилетело и оставило здесь промокод для читателей нашего блога:
— 15% на все тарифы VDS (кроме тарифа Прогрев) — HABRFIRSTVDS.