Для тех, кто использует WordPress, актуальным является вопрос защиты блога. Основной угрозой является взлом административной консоли блога. Это самый распространенный вид атаки, так называемый “брутфорс” – взлом учетной записи путем перебора.
Одним из самых простых, но весьма эффективным способом защиты административной консоли WP, является изменение адреса административной консоли с известного всем /wp-admin на что-то более сложное и известное лишь администраторам. Конечно, можно вообще предоставить доступ к админ. консоли только с определенных IP, но это не всегда удобно.
Изменить/скрыть URL административной консоли WP можно несколькими способами:
- Установить плагины – много ненужного функционала + замедление работы сайта
- Изменить файлы темы или CMS (переименование файла wp-login.php и т.п.) – надо помнить про все “ручные” изменения, необходимость повторять их при обновлении
- Изменить файл .htaccess web-сервера
Последний вариант показался мне самым предпочтительным, поэтому рассмотрим подробнее как необходимо модифицировать файл .htaccess. Честно признаюсь, что синтаксис и директивы, используемые ниже, сгенерированы плагином Better WP Security. Это хороший плагин для комплексной защиты блога, но лишь для скрытия URL админ. консоли, ставить его нецелесообразно.
В файл .htaccess необходимо вставить следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# 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 админ. консоли
yoursite.com – название вашего сайта, без http://
your_secret_key – секретный ключ, сложная последовательность букв и цифр. Например, 2le0snq3oiqpkl7w2frc. Секретный ключ следует придумать самому, запоминать его нет необходимости.
После добавления такого фрагмента в .htaccess:
- При попытке обратиться к yoursite.com/wp-admin ответом будет 404 ошибка
- При попытке обратиться к yoursite.com/wp-login.php ответом будет 404 ошибка
- Доступ к админ. консоли WP будет возможен лишь по следующему URL: yoursite.com/custom_admin_url
Цель достигнута!
Подскажите. У меня установлен плагин: BulletProof Security, он сам создаёт все необходимые файлы .htaccess, куда именно вставлять ваш код, там итак примерно 200 строк кода.
В заметке идет речь о файле .htaccess, расположенном в корневой директории сайта. Для редактирования этого файла через плагин BulletProof Security, в консоли WP выберите: BPS Security -> htaccess Core -> htaccess File Editor -> Текущий htaccess-файл корневой папки. Добавьте необходимые строки и нажмите Update File.
Приветствую.
Всё сделал как написано, но не пускает всё равно по новому адресу. Отдаёт 404 и всё, словно и нет админки, хоть по старому, хоть по новому адресу.
Добрый день! Сходу трудно сказать в чем именно проблема. Скорее всего Вы ошиблись в конфигурации .htaccess. Попробуйте поставить плагин Better WP Security и настроить доступ к админ консоли через него. Если будет работать, то просто скопируйте код, добавленный плагином, удалите плагин и вставьте обратно код в файл .htaccess. Если не получится, то готов помочь Вам в решении этой проблемы.
спасибо, благодаря этой заметке заработал свои первые 300 рублей на воркзиле, заказчику нужно было изменить ссылки на админ панель сразу на 3 блогах, он почему то подумал, что это очень сложная задача и отдал ее на фриланс, он даже поленился поискать в гугле. А ведь это элементарно делается с помощью вашего плагина, потребовалось только установить плагин, активировать, выбрать нужную опцию и сохранить добавленные строки в .htaccess, это для того что бы не устанавливать плагин на другие сайты, а сразу делать правки в хтацесс. Спасибо автору за заметку, хорошо что я ее прочитал.
Пожалуйста! Всегда рад помочь.
Здравствуйте! Я все также сделала как у вас написано и у меня выдает при входе в админку : Not Found
The requested URL /(тут мой ключ) was not found on this server.
что сделать чтоб исправить? подскажите плиз
Простите, Я кажется поняла свою ошибку .. не секретный ключ надо набирать после названия сайта. Все заработало.
А нет. всеравно не работает. я просто загрузила обычный нормальный .htaccess.txt и оно заработало как wp-admin. а как с того url что я придумала – оно всеравно выдает ошибку №404. Пооччееммууу? Подскажите пожалуйста.
Здравствуйте! Возможно, проблема в том, что браузер кэширует страницы и, после того как вы внесли изменения, он все равно пытается перекинуть вас на страницу wp-admin. Попробуйте обновить страницу используя Ctrl+F5. Проверьте еще раз содержимое .htaccess, возможно была допущена синтаксическая ошибка. Если не помогает, ставьте плагин Better WP Security и настраивайте доступ к админ консоли через него. Если будет работать, то просто скопируйте код, добавленный плагином, удалите плагин и вставьте обратно код в файл .htaccess.
Спасибо, работает.
А то уже на второй день опубликования сайта стали целенаправленно бомбить брутфорсом.
такой вопрос, а если сайт лежит в каталоге, сейчас путь такой yoursite.com/nomer/1/wp-admin и каждый месяц будет новый подсайт например yoursite.com/nomer/2/wp-admin Как лучше реализовать скрытие админок на всей сайтах разом ?
Подсмотреть доступ к админке можно через регистрацию на сайте. Как можно сделать динамическую ссылку в админку?
Здравствуйте!
Готовый код не предложу. Пока слабо себе представляю это, тем более, что Вы говорите: “Подсмотреть доступ к админке можно через регистрацию на сайте.”
Как же тогда пользователь будет заходить в админ консоль, если URL будет динамический?
в строке
RewriteCond %{HTTP_REFERER} !^(.*)yoursite.com/custom_admin_url
в конце не хватает $
RewriteCond %{HTTP_REFERER} !^(.*)yoursite.com/custom_admin_url$
в строке
RewriteCond %{QUERY_STRING} !^your_secret_key
в конце не хватает $
RewriteCond %{QUERY_STRING} !^your_secret_key$
PS: в передыдущем коменте неправильно скопировал
У меня без $ работает.
“Секретный ключ следует придумать самому, запоминать его нет необходимости.”
Тут у Вас ошибка в описании, потому как в админку сайта можно будет попасть по пути yoursite.com/wp-login.php?your_secret_key
Т.е. запоминать его очень даже нужно. Тем более что я так и не смог попасть через wp-admin, а только выше указанным способом.
Может кому и пригодится.
Ошибки в описании нет.
При данном способе вход в админку возможен двумя способами:
1. Простой и красивый через custom_admin_url.
2. Используя секретный ключ напрямую:
yoursite.com/wp-login.php?your_secret_key
При данном способе следует запоминать только custom_admin_url.
А секретный ключ запоминать не нужно, при необходимости его всегда можно посмотреть в файле .htaccess web-сервера.
Смысл предлагаемого способа именно в том, что бы “наружу” сделать красивый и нестандартный URL для обращения к админке, т.е. custom_admin_url, под которым будет скрыт wp-login + секретный ключ, защищающий стандартный wp-login.php
нормальная тема, но вы можете подробно объяснить в каком именно месте нужно менять переменные, а в каких нет
Если заменить тупо все переменные то не работает
Будьте добры, пожалуйста. а то уже сорок минут башкой бьюсь об стену.
Спасибо. Гениальное решение. Все просто и быстро.
Добрый день. Все сделал все хорошо работает, но на внутренние страницы сайта не переходит – 404 ошибка. В чем может быть дело?
Тоже самое и у меня!
Как угодно пробовал – сайт просто перестает работать.
Сам пользуюсь таким. Может вам надо руки лечить?
Все работает! Спасибо за статью! Тоже сразу ложился сайт но это было из-за моей невнимательности)
И без плагина все понятно, огромное человеческое спасибо!