Защитить сайт паролем с помощью htpasswd

Всем привет! Сегодня мы поговорим о том, как защитить сайт паролем с помощью htpasswd. Такая необходимость может возникнуть при разработке нового сайта или при любой другой ситуации, когда вам нужно закрыть доступ к сайту или директории паролем. Это может быть обусловлено необходимостью запретить индексирование контента поисковыми роботами в период разработки или может появиться необходимость закрыть доступ к определенным разделам, документам сайта.

Как защитить сайт паролем с помощью файла htpasswd

Как ограничить доступ к сайту

Доступ к содержимому любого каталога на сервере можно ограничить почти на всех web-серверах с помощью htpasswd файла. При обращении к каталогу через браузер пользователю будет выводиться диалоговое окно, для ввода логина и пароля.

Скриншот 1

Как создать файл паролей .htpasswd

На первом этапе придумайте новый логин и сгенерируйте новый пароль, воспользовавшись страницей c инструментом генератора паролей. Сохраните полученные пароли.

Затем, вам нужно сгенерировать содержимое для .htpasswd файла, воспользовавшись htpasswd генератором. В поле «Юзер(Логин)» укажите придуманный вами логин (только латинскими буквами), в поле «Пароль», — сгенерированный ранее пароль. После этого вы получите результат, что то наподобие этого:

   
   admin:$apr1$evskxt6q$p3RZUmYH.mVZn9nVMij850

Чтобы понять, что мы получили в результате, полученную строку можно представить как <login>:<password>, где admin — это наш «Юзер(Логин)», а $apr1$evskxt6q$p3RZUmYH.mVZn9nVMij850 это наш зашифрованный пароль.

Далее нам необходимо создать обычный текстовый файл с именем .htpasswd. И в этот файл нам необходимо вставить нашу строку admin:$apr1$evskxt6q$p3RZUmYH.mVZn9nVMij850 и сохранить файл. Если вам нужно сделать несколько учетных записей, то вам нужно повторить все шаги описанные выше еще раз и добавить еще одну запись в этот же файл, но уже с новой строки. Допустим если нам нужно 2 учетные записи, то содержимое файла будет выглядеть так:

   
   admin:$apr1$evskxt6q$p3RZUmYH.mVZn9nVMij850
   developer:$apr1$pngk7j62$Z/cOxoZMvrwUROGXrbMiY/

Где мы видим 2 учетные записи для логина admin и developer.

Внимание:

  • Содержимое файла должно быть только из строк сгенерированных с помощью генератора, если их несколько — то добавлять их с новой строки.
  • Пустых строк в файле не должно быть
  • Файл должен быть в кодировке UTF-8

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

Теперь нам осталось подключить .htpasswd файл к WEB-серверу. В этой статье мы рассмотрим подключение к Apache и Nginx.

Как подключить .htpasswd в Nginx

Чтобы защитить определенную директорию на сайте, вам необходимо обновить конфиг nginx вашего сайта, и добавить туда что то вроде этого:

   
   location /protect {
     auth_basic           "Admin Area";
     auth_basic_user_file /path/to/.htpasswd;
   }

  • location /protect — означает что мы будем защищать директорию /protect паролем.
  • auth_basic «Administrator’s Area»; — название диалогового окна в котором вам нужно будет ввести логин и пароль.
  • auth_basic_user_file /path/to/.htpasswd; — путь к .htpasswd файлу.

Чтобы проверить, что ваш контент защищен, попробуйте получить доступ к ограниченному контенту в браузере, для этого на нужно перейти по адресу www.example.com/protect (если вы указали location /protect, в противном случае вам нужно указать свой путь). Вы должны увидеть окно для ввода имени пользователя и пароля.

Также мы можем ограничить доступ ко всему сайту, но при этом сделать некоторые области сайта общедоступными. В этом случае укажите auth_basic off в определенной директории:

   
   server {
   ...
      auth_basic           "Admin Area";
      auth_basic_user_file /path/to/.htpasswd;

   location /public {
      auth_basic off;
     }
   }

Заметка! Как защитить сайт на WordPress от взлома. 17 способов защиты.

Как подключить .htpasswd в Apache

Сначала рассмотрим, как закрыть полностью весь сайт. Откройте файл виртуального хоста, в который вы хотите добавить ограничение и добавьте туда корневую директорию вашего сайта:

   
   <VirtualHost *:80>
     DocumentRoot /var/www/html
     ...
    
     <Directory "/var/www/html">
       AuthType Basic
       AuthName "Admin Area"
       AuthUserFile /path/to/.htpasswd
       Require valid-user
     </Directory>
   </VirtualHost>

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

А теперь давайте рассмотрим, как можно блокировать доступ к сайту, если у вас включена настройка:

   
   AllowOverride All

Эта настройка включает возможность использовать файлы .htaccess. Теперь перейдите в каталог, к которому хотим ограничить доступ по паролю, создаем файл .htaccess с такими директивами:

   
   AuthType Basic
   AuthName "Admin Area"
   AuthUserFile /path/to/.htpasswd
   Require valid-user

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

   
   <Files .htpasswd>
      deny from all
   </Files>

Надеюсь, что эта информация была полезна для вас.

Понравилась статья? Поделиться с друзьями:
Заметки IT специалиста
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:
Нажимая на кнопку «Отправить комментарий», я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.