22021
329

Как защитить админку Вордпресс…

Ричард Кларк: Если тратить больше времени на кофе, чем на IT-безопасность, ваш…

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

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

В данной статье мы рассмотрим лишь один аспект безопасности сайтов. Расскажем, как защитить сайт на Вордпресс от взлома путем подбора пароля администратора. Почему Вордпресс? Просто потому, что эта система управления контентом – одна из наиболее популярных. Что же касается других подобных систем – там следует действовать по аналогии с системой Вордпресс.

Отметим, что задача защиты административной панели особо актуальна лишь для различных CMS. А что же фреймворки, такие как Ларавель или Yii? Защищать административные ресурсы проектов, выполненных на фреймоворке, также не помешает. Но у этих систем есть очевидные преимущества по сравнению с CMS, речь идет о встроенных средствах защиты, например, защита от межсайтовой подделки запроса. Ну, а лендинг и сайт-визитка вообще не имеют админ-панели, там и защищать нечего.

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

Лучше всего для защиты сайта обратиться к программисту, который добавит необходимый код в тему Вордпресс. Но, если есть необходимость сэкономить, можно поставить готовый бесплатный плагин с требуемой функцией. Вот что мы рекомендуем сделать:

  • ограничить количество попыток ввода пароля за определенный интервал времени;
  • запретить короткие и простые пароли;
  • запретить использовать в паролях общеизвестные слова и транслитерации известных слов;
  • оснастить форму ввода пароля тестом Тьюринга (т.н. капча);
  • требовать в обязательном порядке периодически менять пароль, например, один раз в 6 месяцев.

Однако, все вышеприведенные меры требуют существенных усилий со стороны программиста и вебмастера, а любой труд имеет свою стоимость. Значительно проще, а, главное, дешевле, защитить админку сайта путем введения «белого» списка IP-адресов. Этот способ и называется «ограничение доступа по IP».

Этот метод основан на том, что все администраторы и менеджеры сайта пользуются административной панелью, как правило, с одних и тех же компьютеров и устройств. Эти устройства подключены к сети Интернет через сети провайдеров, у каждого из которых существует ограниченный перечень подсетей IP. В результате авторизованный персонал сайта посещает административные ресурсы с IP-адресов, находящихся в определенном списке подсетей. Список этот редко бывает длиннее 10 строк, а зачастую это вообще одна подсеть, если интернет-провайдер представляет собой небольшую компанию.

Здесь мы не будем вдаваться в технические подробности, и, если читатель не знаком с теорий, то мы порекомендуем ему просто выполнить необходимые манипуляции механически, не вникая в теорию. У вас получится!

Все, что нужно сделать – это добавить несколько строк кода в два файла, причем эти файлы имеют идентичное имя – «.htaccess». Точка в имени файла означает, что этот файл не видим для обычных команд просмотра папки. Кроме того, именно такое имя файла предусмотрено для управления сервером, на котором функционирует сайт. Один из двух файлов расположен в корневой папке сайта, второй – в папке «/wp-admin». Причем, если в этой папке нет такого файла, его нужно создать. Что же касается файла «.htaccess» в корне сайта, то он обязательно должен быть там, в противном случае сайт не будет работать правильно.

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

Исправлять содержимое файлов лучше всего с помощью подключения FTP-клиентом к серверу хостинга, на котором располагается сайт. Можно, конечно, воспользоваться редактором файлов, имеющимся в панели хостинга. Но этот способ менее безопасен.

Порядок действий по корректировке файлов следующий:

  1. Создать на локальном ПК четыре папки для бекапирования и обработки файлов «.htaccess»: «admin_save_area», «admin_work_area», «root_save_area», «root_work_area».
  2. Подключиться к серверу хостинга по протоколу FTP или SFTP. Сделать текущей корневую папку сайта.
    Скриншот экрана при корректировке файла с помощью FTP-клиента
  3. Поочередно скопировать файл «.htaccess» из корня сайта на сервере в две папки – «root_save_area» и «root_work_area».
  4. Поочередно скопировать файл «.htaccess» из папки «/wp-admin» в две папки – «admin_save_area», «admin_work_area».
  5. Отредактировать файлы в папках «root_work_area» и «admin_work_area» (о том, что именно редактировать, см. ниже).
  6. Закачать файлы из папок «root_work_area» и «admin_work_area» на сервер, в корневую папку и в папку «/wp-admin» соответственно.
  7. Проверить работоспособность сайта. Если сайт не работает, вернуться к п. 3. Если же после многократных попыток совсем ничего не получится, то лучше всего закачать на сервер файлы из папок «admin_save_area», «root_save_area» и обратиться к профессиональному веб-мастеру.

Теперь расскажем о том, какой именно код необходимо вписать в наши файлы. В этом коде будет указано разрешение на посещение админ-панели с определенной группы IP-адресов. Какой именно адрес или группу адресов необходимо включить в список разрешенных адресов и/или подсетей? Этот адрес легко узнать с помощью любого сервиса определения внешнего IP адреса, например, с помощью сайта 2ip.ua. Открываем этот сайт и видим наш внешний IP-адрес:

Скриншот экрана с внешним IP-адресом пользователя.

Существенно, что ссылку с сервисом определения внешнего IP должен открывать не веб-мастер, а тот, кому требуется открыть доступ. К примеру, если веб-мастер Сергей хочет открыть доступ в админ-панель оператору Владимиру, то открывать ссылку 2ip.ua должен не Сергей, а Владимир, после чего Владимир должен сообщить Сергею свой IP-адрес, в виде цифр или в виде скриншота, это уже не важно.

Теперь, когда мы знаем адрес, который следует добавить в список разрешенных IP-адресов, можно приступать к формированию кода. Опыт эксплуатации сайтов показывает, что открывать лучше не один адрес, а подсеть из 256 адресов, как минимум. Это связано с тем, что у многих провайдеров Интернета внешний IP-адрес постоянно меняется в пределах подсети. Поэтому, если мы откроем подсеть, а не один адрес, то количество корректировок значительно сократится. С другой стороны, особого ущерба безопасности мы не нанесем.

Итак, перед нами стоит задача разрешить доступ к админпанели сайта со всех IP-адресов, начиная с адреса «77.111.244.0» и заканчивая адресом «77.111.244.255». Вот какой код следует добавить в файл «.htacccess», расположенный в корне сайта:

Блок кода в корневом файле .htaccess

Order Deny,Allow
Deny from all
Allow from 77.111.244.0/24

Теперь займемся файлом «/wp-admin/.htaccess». Блок кода в этом файле следует дополнить исключением для особых запросов типа AJAX. Обсуждение этой технологии выходит за рамки данной статьи, поэтому просто разместите этот код:

Блок кода в файле /wp-admin/.htaccess

Order allow,deny
Allow from all
Satisfy any

Order Deny,Allow
Deny from all
Allow from 77.111.244.0/24

Итак, мы запретили доступ к админпанели сайта для всех адресов, за исключением тех, которые принадлежат одной подсети. А что же делать, если нам надо открыть много подсетей? Ответ прост: использовать несколько операторов Allow, по одному для каждой из требуемых подсетей.

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