Базовая защита WordPress от взлома

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

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

1. Прикрываем доступ к скрипту авторизации wp-login.php и папке wp-admin. Разрешаем доступ только с вашего статического IP адреса

RewriteEngine on
RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$
RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123$
RewriteRule ^(.*)$ - [R=403,L]

2. Если вы используете несколько IP адресов, можете перечислить их последовательно

RewriteEngine on
RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$
RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.121$
RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.122$
RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123$
RewriteRule ^(.*)$ - [R=403,L]

3. Разрешаем доступ к скрипту авторизации wp-login.php и папке wp-admin если методом запроса является POST и значение referer имеет вхождение равное домену вашего сайта. Этим действием мы исключаем возможность прямого подключения к скрипту wp-login.php со стороннего сайта, которое часто используется для перебора паролей методом bruteforce

RewriteEngine on
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{HTTP_REFERER} !^http://(.*)?example\.com [NC]
RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$
RewriteRule ^(.*)$ - [F]

4. Закрываем доступ к файлу xmlrpc.php. Исключаем взлом через xmlrpc

ForceType application/x-httpd-php

<FilesMatch "xmlrpc.php">
    Order Deny,Allow
    Deny from all
</FilesMatch>

5. Закрываем возможность авторизации без пароля на скрипт авторизации wp-login.php

<FilesMatch "wp-login.php">
    AuthName &quot;Access Denied&quot;
    AuthType Basic
    AuthUserFile /var/www/username/.htpasswd
		require valid-user
    Order Deny,Allow
    Allow from 123.123.123.123
    Deny from all
</FilesMatch>

Также не лишним будет установить следующие плагины:

  • wp-limit-login-attempts (ограничивает количество попыток ввода пароля)
  • wp-fail2ban (объединяет wordpress с unix утилитой fail2ban)
  • disable-xml-rpc (отключает xml-rpc)

Это далеко не все методы защиты вашего блога на WordPress от взлома, но те из них которые являются базовыми.

Источник: http://www.inmotionhosting.com/support/website/wordpress/lock-down-wordpress-admin-login-with-htaccess