Дело в том, что взломать сайт хотят не обязательно посетители Вашего сайта или Ваш злейший враг. Это делают различные боты, которые созданы для того, чтобы потом на сайте размещать свои ссылки или спам комментарии, без удаления. Даже если сейчас у Вас с сайтом все хорошо, то можете для интереса посмотреть на логи в админчасти управления хостингом, если Ваш хостер дает такую возможность. Если увидите там что какой-то адрес, пытающийся по несколько раз в секунду зайти по адресу:
ваш_сайт.com/wp-admin
ваш_сайт.com/wp-login.php
Это означает, что скорее всего, какой-то бот подбирает пароли для доступа к Вашему сайту. По своему опыту скажу, что такое у меня лично бывает 1 - 2 раза в неделю. Я периодически посматриваю логи и если обнаруживаю IP адрес, который грузит сайт обращениями к админке по несколько раз в секунду, сразу блокирую ему доступ к сайту через .htaccess. Как это делать читайте в этой статье
Когда у Вас разрешена регистрация на сайте, значит Ваши посетители имеют доступ к странице входа и тогда нужно контролировать вот таким методом. Но есть еще один способ.
Он хорошо подходит когда есть возможность регистрации и еще лучше когда ее нет. Тогда к странице входа будете иметь доступ только Вы. Суть способа в том, чтобы изменить те адреса доступа к странице входа, что указаны Выше, на свой, абсолютно уникальный.
Если разрешите регистрацию, то конечно посетители будут знать этот адрес, но боты, которые настроены на стандартные страницы, отпадут сразу. Если регистрации нет, кроме Вас никто не попадет на страницу 100%. Чтобы изменить адрес входа на сайт WordPress, нужно открыть файл .htaccess в корне сайта, потом в конце него добавьте код, который указан ниже.
# BEGIN Hide console URL <IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^custom_admin_url/?$ /wp-login.php?your_secret_key [R,L] RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$ RewriteRule ^custom_admin_url/?$ /wp-login.php?your_secret_key&redirect_to=/wp-admin/ [R,L] RewriteRule ^custom_admin_url/?$ /wp-admin/?your_secret_key [R,L] RewriteCond %{SCRIPT_FILENAME} !^(.*)admin-ajax\.php RewriteCond %{HTTP_REFERER} !^(.*)yoursite.com/wp-admin RewriteCond %{HTTP_REFERER} !^(.*)yoursite.com/wp-login\.php RewriteCond %{HTTP_REFERER} !^(.*)yoursite.com/custom_admin_url RewriteCond %{QUERY_STRING} !^your_secret_key RewriteCond %{QUERY_STRING} !^action=logout RewriteCond %{QUERY_STRING} !^action=rp RewriteCond %{QUERY_STRING} !^action=postpass RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$ RewriteRule ^.*wp-admin/?|^.*wp-login\.php /not_found [R,L] RewriteCond %{QUERY_STRING} ^loggedout=true RewriteRule ^.*$ /wp-login.php?your_secret_key [R,L] </IfModule> # END Hide console URL
Чтобы все заработало, нужно заменить несколько элементов. Они встречаются по несколько раз, так что будьте внимательны.
- custom_admin_url – это Ваш новый URL - адрес входа в админчасть и просто входа на сайт. Придумайте свой адрес. Например myadmin и тд.
- yoursite.com – адрес вашего сайта, без http://. Меняем на свой.
- your_secret_key – это нужно заменить на придуманный Вами секретный ключ. Это должна быть строка из букв и цифр написанных в случайном порядке.Например heirwzjzxeovs154ui и тд.
Теперь страница входа будет доступна по адресу ваш_сайт.com/custom_admin_url, в конце ваша новая ссылка, например - ваш_сайт.com/myadmin.
ОЧЕНЬ ВАЖНО! Иногда метод не работает. Я проверил на 2 разных хостингах, на одном сработало на втором нет. Пока что решить проблему, почему не везде работает, мне не удалось.
27.04.2016 Есть еще способ и суть его в том, чтобы изменить название самого файла. Сначала полностью закрываем доступ к wp-login.php. Чтобы этого сделать, добавьте в .htaccess следующий код:
<Files wp-login.php> Order Deny,Allow Deny from all </Files>
Теперь в корне сайта, найдите файл wp-login.php и сделайте его копию. Копию нужно переименовать, например mylog.php. Потом открываем новый mylog.php и внутри него везде где встречается wp-login.php меняем на mylog.php. Теперь чтобы войти, нужно вбивать в адресной строке - ваш_сайт.com/mylog.php.
Возможно, после обновления WordPress, если поменяется содержимое внутри - wp-login.php, придется повторить процедуру. Но пока код не поменяяется, все будет работать. Так же иногда нет возможности выйти из учетной записи.
Теперь когда, кто-то будет пытаться зайти по старым адресам ваш_сайт.com/wp-admin и ваш_сайт.com/wp-login.php, будет попадать на страницу с 404 ошибкой. Зайти можно только по новой ссылке.
Кому поможет, буду рад, у кого не получится, возможно Вы найдете решение и поделитесь своим достижением 🙂
На этом все, спасибо за внимание. 🙂