Безопасность WordPress



В связи с недавней массовой атакой на сайты, созданные на базе WordPress, нелишним будет напомнить про элементарные правила безопасности вашего блога. 

Обязательно периодически делайте резервные копии вашего сайта, причем храните их не только на сервере провайдера, но и на своем компьютере или еще одном сервере. Периодически проверяйте и устанавливайте обновления WordPress и плагинов, так как в обновлениях могут быть исправлены критические ошибки и уязвимости. Удаляйте неиспользуемые плагины и темы.

Среди имен пользователей вашего блога должен отсутствовать admin, так же желательно, чтобы не было пользователя с ID равным 1, так как основные атаки направлены на подбор пароля пользователя admin. Перед удалением пользователя admin создайте другого пользователя WordPress с правами администратора, зайдите под ним в админку вашего блога и удалите пользователя admin, переназначив все созданные им страницы и записи на нового пользователя.

Используйте сложные пароли. Оптимальным считается, что пароль должен быть минимум 6 символов длиной, состоять из букв верхнего и нижнего регистров и содержать минимум 1 цифру и/или знак препинания. На самом деле чем длинней будет ваш пароль, тем сложней его подобрать или подсмотреть. Для создания случайных паролей вы можете воспользоваться онлайн генеретором паролей.

Если у вас статический ip-адрес, то вы можете ограничить доступ в админку по ip-адресу. Для этого в папке wp-admin надо создать файл .htaccess с примерно следующим содержимым:

order deny,allow
allow from ip.xx.yy.zz
deny from all

ip.xx.yy.zz замените на ваш ip-адрес. Если у вас динамический ip-адрес, адрес в файле .htaccess придется менять каждый раз перед входом в админку. В этом случае можно просто установить дополнительный пароль на папку wp-admin. Эта процедура довольно хорошо описана для всех популярных панелей управления хостингом.

Правда, у запрета в .htaccess есть недостаток — WordPress сама обрабатывает ошибки доступа к сайту. Поэтому нагрузка на сервер от попыток получить доступ в админку вряд ли уменьшится. Чтобы этого избежать можно использовать следующий код в .htaccess файле:

RewriteCond %{REQUEST_URI} (/wp-login.php|^/wp-admin|/xmlrpc.php) [NC]
RewriteCond %{REMOTE_ADDR} !ip\.xx\.yy\.zz
RewriteRule . /forbidden.html

Файл forbidden.html — обычный статический файл, может быть даже пустым. Вместо него можно использовать стандартный для cPanel файл 403.shtml. ip.xx.yy.zz все так же заменяется на адрес вашего Интернет подключения.

Отдельно необходимо остановиться на ограничении доступа к файлу xmlrpc.php — просто необходимо запретить или хотя бы максимально ограничить к нему доступ, так как в последнее время он используется для усиления brute-force атак на сайт.

Обычно файл .htaccess сайта, сделанного на WordPress, выглядит следующим образом:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Имеет смысл добавить в него такие строки:

  • для запрета просмотра содержимого папок, в которых отсутствуют индексные файлы
    Options -Indexes
  • для запрета доступа к файлам, которые начинаются на .ht
    <Files ~ "^.*.([Hh][Tt])">
    order allow,deny
    deny from all
    satisfy all
    </Files>

better wp security logoИспользуйте плагины безопасности, которые помогут автоматизировать решение вопросов безопасности вашего блога. Например, почти все описанные рекомендации вы можете сделать, например, с помощью плагина iThemes Security (бывший Better WP Security). Кроме этого этот плагин осуществляет комплексную защиту вашего блога. Вот далеко не полный перечень его функций:

  • обнаружение и блокировка вторжений
  • резервное копирование базы данных
  • ограничение входа в админку блога по времени
  • обнаружение измененных, новых, удаленных файлов (не забудьте исключить из проверки папки кешей и статистики)
  • удаление служебной информации со страниц



Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *