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

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

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

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

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

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

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

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

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

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

  1. <FilesMatch "xmlrpc.php">
  2. Order Deny,Allow
  3. Deny from all
  4. </FilesMatch>

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

  1. <FilesMatch "wp-login.php">
  2. AuthName "Access Denied"
  3. AuthType Basic
  4. AuthUserFile /var/www/username/.htpasswd
  5. require valid-user
  6. Order Deny,Allow
  7. Allow from 123.123.123.123
  8. Deny from all
  9. </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