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 "Access Denied" 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 от взлома, но те из них которые являются базовыми.