Home » Безопасность » Защита админки WordPress

Защита админки WordPress

При первоначальной установке WordPress необходимо создать пользователя admin с паролем. Зная эти данные вы можете попасть в административную панель Вордпресса и управлять своим блогом.

Но не сможет ли кто-то другой без вашего ведома попасть в админку? Насколько надежна защита с помощью одного только пароля? Как показывает практика, лучше перестраховаться и усложнить жизнь потенциальным хакерам.

Предлагаю вашему вниманию способы защиты админки WordPress от взлома.

Вообще-то, до недавнего времени, я не заморачивался с дополнительной защитой. При установке Вордпресс я просто создавал надежный пароль из букв разного регистра и специальных символов длиной от 12 символов.

Несколько месяцев назад на новостных сайтах компьютерной тематики пробежала новость о ботнете, целью которого являются сайты на WordPress.

wordpress-attack-news
Скриншот новости на 3dnews.

Используя список самых популярных паролей, этот ботнет пытался войти в админки вордпресс-сайтов. Прочитав новость, я не стал волноваться, т.к. мои пароли не входят ни в какие списки популярных, а простой перебор займет тысячи лет.

Но через некоторое время я заметил, что один из моих сайтов на Вордпрессе стал работать медленнее. Заглянув в логи, я увидел много запросов странички логина в админку (/wp-login.php). Я сразу же вспомнил новость про ботнет и понял, что происходит попытка взлома моего сайта.

Конечно, шансов взломать мой сайт таким способом очень мало, но меня не устраивало, что возросла нагрузка на мой VPS и в результате сайты работают медленнее. С этим надо было что-то делать.

За последнее время активность ботнета не снизилась, а только возросла, поэтому предлагаю вашему вниманию несколько способов защиты админки WordPress.

Защита файла wp-login.php паролем

Для защиты от подбора пароля и уменьшения нагрузки на сервер существует простой способ: закрыть файл wp-login.php (вход в админку) паролем средствами веб сервера.

Для этого сначала надо создать специальный файл с паролем. Проще всего это сделать, перейдя по адресу http://www.htaccesstools.com/htpasswd-generator/ :

Создание файла с зашифрованным паролем

Введите имя пользователя и пароль (можно ввести пользователя и пароль от админки вордпресса, но лучше придумать другие). После нажатия на кнопку “Create .htpasswd file” будет сгенерировано содержимое нужного вам файла:

Vasya:$apr1$cBunF0ft$JA.tpq/nn68lGSOGVbUgr/

Вам надо его просто скопировать и вставить с помощью Notepad или другого текстового редактора в файл .htpasswd (с точкой в начале). Впрочем, имя файла может быть и другим.

Теперь надо загрузить этот файл по ftp на ваш сервер. Лучше всего его расположить в вашей домашней директории, т.е. не в корне вашего сайта, а выше.

В случае, если ваши сайты работают под управлением Apache (99.9% всех shared хостингов) создайте рядом с .htpasswd файл .htaccess (это имя должно быть именно таким):

Естественно, вы можете создать этот файл локально, после чего загрузить его на сервер по ftp.

Вместо “/home/username/.htpasswd“ надо прописать путь к месту расположения файла .htpasswd. В зависимости от хостига он может быть разным. Чтобы его узнать, создайте в корне своего сайта файл path.php с таким содержимым:

После этого введите в браузере http://url_вашего_сайта/path.php и вы увидите полный путь к файлу path.php (что-то типа /home/u/user34/site.ru/public_html/path.php). Вам надо взять левую часть этого пути (в приведенном примере это будет /home/u/user34/.htpasswd).

Вместо создания отдельного файла .htaccess можно добавить приведенный код к содержимому .htaccess из корня сайта. Но эту процедуру придется проделать с .htaccess каждого сайта.

А что делать, если у вас собственный VPS и вместо Apache установлен только nginx? В этом случае надо дописать в .conf файл сайта примерно следующее:

Собственно пароль устанавливают последние две строки, а строки перед ними зависят от вашей конфигурации (их можно скопировать из вашего nginx.conf).

Теперь при обращении к странице /wp-login.php будет появляться окошко для ввода логина и пароля:

Окно для ввода логина и пароля в браузере

После ввода корректных данных (логин и пароль, которые вы указали при создании файла .htpasswd) вы попадете на страницу входа в админку блога. Надо заметить, что один раз залогинившись, вы сможете попадать в админку, минуя wp-login.php и, таким образом, дополнительную форму логина вы будете видеть не часто.

Боты же при запросе страницы /wp-login.php будут получать код ошибки 401 и, либо уходить, если они достаточно умны, либо повторять запросы, но при этом важно то, что общением с ними занимается веб сервер, а не код на php, поэтому нагрузка на сервер значительно снижается.

Итак, описанный способ является наиболее надежным и эффективным способом защиты админки WordPress от взлома с помощью перебора паролей. Очень важно, что при этом существенно снижается нагрузка на сайт, создаваемая запросами ботов.

Если же вам этот способ не подходит (например, описанная процедура вам показалась слишком сложной, или у блога много пользователей, которым надо логиниться в админку), то для защиты блога можно воспользоваться другими методами.

Плагин Lockdown WP Admin

http://wordpress.org/plugins/lockdown-wp-admin/

Этот плагин меняет url админ панели блога и страницы логина, и является отличным способом борьбы с ботнетами. Бот, запросив url /wp-login.php или /wp-admin/ получит ошибку 404 (страница не найдена) и пойдет искать другую жертву.

Плагин Limit Login Attempts

http://wordpress.org/plugins/limit-login-attempts/

С помощью этого плагина можно ограничить количество неудачных попыток логина с одного IP. Благодаря этому подбор даже простого пароля будет очень затруднителен.

Плагин работает очень просто: после заданного в настройках количества неправильно введенных логина и пароля дальнейшие попытки входа с этого IP игнорируются на определенное время (также указывается в настройках плагина). Дополнительно можно задать более длинный временной интервал, на который будет заблокирован злоумышленник после нескольких коротких блокировок.

Плагин Better WP Security

http://wordpress.org/plugins/better-wp-security/

Это просто священный грааль безопасности WordPress, возможности которого включают функциональность двух предыдущих плагинов и еще много других полезных вещей.

Я планирую сделать подробный обзор этого плагина, а пока замечу, что любые вещи надо использовать с умом. Хотя Better WP Security и превосходит по возможностям своих конкурентов, это не значит, что он будет лучшим выбором в любой ситуации.

Дополнительные рекомендации по защите блога

Используйте длинные пароли, состоящие из букв разного регистра, цифр и спецсимволов. Длинные пароли (более 10-12 символов), состоящие из случайного набора символов, практически невозможно подобрать. Но и запомнить такой пароль непросто. Для этого используйте специальные менеджеры паролей.

В том случае, если вы предпочитаете придумывать запоминающиеся пароли, которые состоят из слов, необходимо использовать не менее 2-3 слов, вставляя между ними цифры или спецсимволы. Боты как раз проверяют пароли из общеупотребительных слов и их комбинаций.

Еще об одном способе запоминания паролей я уже писал в блоге.

По умолчанию в Вордпрессе создается пользователь с логином admin. Для надежности лучше создать другого пользователя с полными правами, а админа удалить.

 

Настоятельно рекомендую применить один или несколько описанных здесь способов защиты на своем блоге. Лучше потратить немного времени на защиту, чем потом разбираться с последствиями взлома.

  • Ольга

    Здравствуйте!
    можно уточнить?
    в файле .htaccess должно быть

    ErrorDocument 401 “Unauthorized Access”
    ErrorDocument 403 “Forbidden”

    AuthName “Authorized Only”
    AuthType Basic
    AuthUserFile /home/username/.htpasswd #Путь к файлу .htpasswd
    require valid-user
    ?

    у меня уже есть этот файл, но там прописаны редиректы с несуществующих страниц.
    Скажите, вышеуказанное Вами прописывать после #END WordPress?

    • Да, все верно, прописывайте эти строки после #END WordPress

    • P.S. Но проще создать новый файл .htaccess в домашней директории, тогда его действие будет распросраняться на все сайты.

      • Ольга

        спасибо!

        а не подскажете редиректы со временем надо убирать из .htaccess или они так и должны там быть?
        в свое время сделала редиректы со страниц которые были с рубриками. когда рубрики убрала, проиндексированные страницы остались, соответственно сделала редиректы.
        сейчас смотрю в статистике уже часть ненужных страниц сама по себе ушла, но редиректы стоят.

        • если на ваши старые урлы нет внешних ссылок, то можете убрать редиректы
          но если есть ссылки, то лучше оставить
          поскольку нет простого способа это проверить, то я бы просто оставил

          • Ольга

            не, ссылок нет. я тогда только начинала, много не знала, блог нулевой был.
            спасибо за ответ!

  • Ольга

    Еще вопрос:
    если у меня вот такой путь: /home/virtwww/w_site-ru_b5325637/http/path.php
    то должно получиться вот так: /home/virtwww/.htpasswd ?

    • да, верно

      • Ольга

        Больше спасибо за уделенное внимание и время!
        такие вопросы чайников наверно достают, а у Вас даже рекламы нет, чтобы отблагодарить)

        • В качестве благодарности можно твитнуть или лайкнуть понравившийся пост :-)
          А по рекламе надо кликать только в том случае, если она вас заинтересовала. Вы ведь, как рекламодатель, не будете в восторге от того, что по вашей рекламе кликают просто в качестве благодарности сайту?

  • Sergei

    Упрощаю проблему… Удаляем файл – wp-login.php. Ставим на место кода необходимо. На место стандартного можно поставить файл с другим кодом.
    Можно пофантазировать (картинку, ссылку, любой другой код )

    • Т.е. каждый раз, когда надо будет залогиниться, восстанавливать файл, а потом удалять? Мне кажется это сложнее получится.

  • Nurlan

    Здравствуйте. Ввожу логин и пароль правильно, но не могу зайти. Пробовал разные пароли и ставил файл в разные директории, т.е. в wp-admin и просто в public_html.

    • А пароль создавали, как написано, с помощью генератора?

      • Nurlan

        Да. Все делал по инструкции. Может быть неправильно указываю путь к файлу?

        • Честно говоря, не знаю, что будет, если указать неправильный путь к файлу.
          Попробуйте указать явно неверный путь и проверить, требуется ли пароль. Если требуется, то, возможно, проблема действительно в пути.