Как надежно защитить админку сайта.

В первую очередь, давайте разберем самые элементарные методы, способные усложнить жизнь злоумышленника, имеющего виды на ваш сайт. Начнем, пожалуй, с авторизации. Я всем рекомендую использовать в качестве логина, при авторизации на сайте, адрес электронной почты, причем, не тот который указан на сайте в качестве контактного, а известный только вам (условно назовем его "технический"). Объясню почему, обычный логин пользователя злоумышленник может легко определить из подписи к публикациям, записям на форуме или найти в других разделах сайта, а почтовый адрес чаще всего скрыт от публичного просмотра. Следующий момент заключается в изменении стандартного пути к админке. Как это можно сделать? Самое простое и удобное, это переименование файла или папки админ-панели, но не все CMS это позволяют сделать. Например, DataLife Engine (DLE) очень просто позволяет изменить имя файла админки, по умолчанию он лежит в корне и называется admin.php, а путь до него выглядит как www.mysite.com/admin.php, вы можете изменить его название на adminochka_654321.php и в браузере это будет выглядеть уже так www.mysite.com/adminochka_654321.php. Вот еще пример, но уже с переименованием папки, для тех, кто знает такую CMS как PHP Melody. У этой CMS путь к админке по умолчанию выглядит следующим образом -www.mysite.com/admin/ , вы же можете изменить имя этой папки на сервере на свое www.mysite.com/upravlenie/. Для таких популярных CMS как Joomla и WordPress существуют специальные плагины, которые модифицируют путь до панели, добавляя в адрес специальное слово (ключ). В случае с Joomla, путь к админке меняется так: www.mysite.com/administrator/?SlovoKluch, вместо стандартного www.mysite.com/administrator/ (плагины jSecure, AdminExile, Backend Token и т.п.). У WordPress дело обстоит следующим образом, если стандартный путь к админке выглядит так: www.mysite.com/wp-admin/ и www.mysite.com/wp-login.php, то с помощью плагина "Protected wp-login" можно изменить адрес на такой www.mysite.com/wp-login.php?sk=my_secure_key, где my_secure_key любое ваше слово. Метод с плагинами, к сожалению, иногда может подвести, сбой в работе может произойти из-за конфликта с другим плагином или после обновления версии CMS, поэтому будьте внимательны. В любом случае делайте резервную копию перед подобными экспериментами. Конечно не у каждой CMS можно безболезненно переименовать путь к админке, иногда требуется дополнительно вносить изменения в файл конфигурации, а бывает и так, что это не целесообразно по трудозатратам, поэтому стоит использовать проверенный и универсальный метод - метод настройки сервера. Самыми распространенными являются web серверы Apache и IIS.
В этой публикации я затрону настройку именно Apache, так как он кросплатформенный и наиболее распространен. Для настройки мы будем использовать служебный файл сервера - .htaccess и вспомогательный файл пароля .htpasswd
Задачи, которые мы будем решать данным способом, две, первая, это дополнительная авторизация с альтернативным паролем и логином и вторая, это ограничение доступа по заданным IP адресам.
При создании дополнительной авторизации нам понадобится, для начала, создать сам файл .htaccess. Делается это довольно просто, открываем стандартный "Блокнот" Windows (можно использовать вообще любой другой текстовый редактор) и в нем записываем вот такой код:
для DLE подойдет вот такая запись, которая добавляется в имеющийся корневой файл .htaccess

#защита отдельного файла паролем
<files admin.php>
AuthType Basic
AuthName «Secure Zone»
AuthUserFile /home/user/public_html/.htpasswd
Require valid-user
</files>

вот такой вариант подойдет для Joomla, файл .htaccess помещается в папку administrator

<files index.php>
AuthType Basic
AuthName "Secure Zone"
AuthUserFile  /home/user/public_html/administrator/.htpasswd
Require valid-user
</files>

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

AuthType Basic
AuthName "Secure Zone"
AuthUserFile  /home/user/public_html/folder/.htpasswd
Require valid-user

Как надежно защитить админку сайта.
Хотелось бы обратить внимание на директиву AuthUserFile, которая указывает корневой путь до файла .htpasswd, так как он у всех будет различаться. Для того, чтобы правильно определить корневой путь, необходимо создать php скрипт с таким кодом:

<?php
echo $_SERVER['DOCUMENT_ROOT'];
?>

Назовем его root.php, загрузим в корень сайта и запустим, на странице в браузере (www.mysite.com/root.php ) вы увидите свой корневой путь, его и нужно использовать.
После создания файла .htaccess, нужно его дополнить файлом, содержащим логин и пароль - .htpasswd, в нем содержатся данные пользователя в следующем виде имя_пользователя:зашифрованный_пароль
Создать его можно с помощью утилиты htpasswd.exe, которая входит в состав Windows дистрибутива Apache. Утилита находится в директории C:/Apache2/bin (при условии установки в корень диска C).
Для создания файла .htpasswd с помощью утилиты htpasswd.exe необходимо выполнить командной строке следующее:

htpasswd -cm .htpasswd admin

*- admin, замените своим логином.
Для удобства я создал папку у себя на компьютере, в которую положил 3 файла:
Как надежно защитить админку сайта.
Как надежно защитить админку сайта.
после запуска файла pwd.bat, необходимо 2 раза ввести нужный пароль в появившемся окне
Как надежно защитить админку сайта.
получаем в результате (пароль был введен 123456)
Как надежно защитить админку сайта.

Существует так же утилита от стороннего разработчика, сильно упрощающая процесс, называется она Encode UNIX Password 1.2
Как надежно защитить админку сайта.

Если у вас есть необходимость дать доступ нескольким пользователям, то вы можете в файл .htpasswd внести каждого с новой строки:

SuperAdmin:Su6444x9P7MKc
SuperUser:Sutp8PUxn.w9U


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

Order Deny,Allow
Deny from all
Allow from 111.111.111.111 222.222.222.222


конструкция для файла с одним разрешенным IP адресом

<files "admin.php">
  Order Deny,Allow
  Deny from all
  Allow from 111.111.111.111
</files>


Чтобы узнать Ваш внешний IP, можно воспользоваться одним из сервисов:
YOIP.RU
SPEEDTEST.NET
Яндекс Интернетометр

В заключение хочу дать несколько советов:
1) Создавайте нормальные пароли, содержащие цифры, заглавные и строчные буквы, специальные символы и не меньше 8 символов.
2) Самый сложный пароль должен быть от панели хостинга.
3) Настройте периодическое создание резервных копий вашего сайта и БД (чем чаще, тем лучше)
4) поставьте chmod 444 для всех .htaccess и .htpasswd
5) не храните ваши бэкапы БД на хостинге в папках со стандартными названиями, типа backup / backups, либо закрывайте доступ с помощью .htaccess
+189


Добавить комментарий

Оставить комментарий

    • bowtiesmilelaughingblushsmileyrelaxedsmirk
      heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
      winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
      worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
      expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
      disappointedconfoundedfearfulcold_sweatperseverecrysob
      joyastonishedscreamtired_faceangryragetriumph
      sleepyyummasksunglassesdizzy_faceimpsmiling_imp
      neutral_faceno_mouthinnocent