Как защитить сайт паролем с помощью файла htpasswd | Info-Comp.ru

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

Содержание

  1. Как ограничить доступ к сайту
  2. Как создать файл паролей .htpasswd
  3. Как подключить .htpasswd в Nginx
  4. Как подключить .htpasswd в Apache

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

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

Как создать файл паролей .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>


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

как закрыть директорию паролем. |Хостинг сайтов AvaHost.Ru.

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

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

AuthType Basic
AuthName "Some Name"
AuthUserFile /home/uXXXXX/.htpasswd
require valid-user 

Путь /home/uXXXXX/.htpasswd обозначает полный путь к файлу паролей на диске нашего сервера. Если, например, вы поместите файл .htpasswd (в нем будут пароли) в домашний каталог, куда вы попадаете зайдя на сервер по FTP, то путь к этому файлу будет иметь вид /home/uXXXXX/.htpasswd, где

uXXXXX — наименование вашей виртуальной площадки (например, u12345).

В директиве AuthUserFile указываем абсолютный путь к файлу с логинами/паролями, который мы создадим чуть позже. Если вы создаете файл .htaccess на своем компьютере, а не сразу на сервере при помощи текстового редактора, обратите внимание на то, что .htaccess должен передаваться по FTP строго в текстовом (ASCII) режиме.

Создаем файл паролей. Файл с паролями должен содержать строки вида login:password. Пароль должен быть зашифрован с использованием алгоритма MD5. Один из способов создать такой файл — воспользоваться программой, входящей в поставку Apache — htpasswd (на нашем сервере она находится в каталоге

/usr/local/bin/, полный путь — /usr/local/bin/htpasswd).

Рассмотрим как создать файл паролей в unix shell прямо на сервере. Зайдем в shell, и будем выполнять следующие команды:

  • htpasswd -mbc .htpasswd user1 sNQ7j9oR2w

    создаем новый файл .htpasswd, в который добавляем запись для пользователя user1 с паролем, указанным в командной строке. Просьба обязательно заменить sNQ7j9oR2w на любой собственный пароль — здесь этот пароль указан только для примера

  • htpasswd .htpasswd user2

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

Если вы используете Windows и не хотите пользоваться unix shell для генерации паролей, можно загрузить Windows-версию программы htpasswd здесь и создать файл с паролями на своем компьютере, после чего загрузить его на сервер. Если у вас уже установлена Windows-версия Apache, файл htpasswd.exe можно найти в каталоге Program Files\Apache Group\Apache\bin\.

Итак, получите htpasswd.exe и используйте его для генерации паролей таким образом:

  • htpasswd.exe -mc .htpasswd user1

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

  • htpasswd.exe -m .htpasswd user2

    добавляем пользователя user2 в существующий файл паролей htpasswd. exe, запросив пароль интерактивно

После окончания заведения всех логинов файл нужно загрузить на сервер.

Защита паролем в .htaccess не запрашивает пароль

спросил

Изменено 2 года, 10 месяцев назад

Просмотрено 761 раз

Я пытаюсь защитить паролем каталог под названием «тест». Это то, что я сделал до сих пор (внутри тестового каталога)

Файл .htpasswd:

 testuser:$apr1$qw60eHhx$14S4S2Mxx/26EgXqmb7Pw1
 

Файл .htaccess

 <файлы /var/www/html/test>
#Защитить каталог
AuthName "Диалоговое приглашение"
Основной тип авторизации
AuthUserFile /var/www/html/test/.htpasswd
Требовать действительного пользователя

 

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

  • .htaccess
  • защита паролем
3

Я только сейчас понял, что вы используете распределенный файл конфигурации («.htaccess»). Там такие блоки, как ... или ... , не имеют особого смысла. И на самом деле это задокументировано и , указанное в файле журнала ошибок http-сервера. Это оставляет нам два варианта:

Либо использовать реальную конфигурацию хоста http-сервера (которая всегда должна быть предпочтительной, если это возможно):

 DOCUMENT_ROOT /var/www/html/test
<Каталог /var/www/html/test>
  #Защитить каталог
  AuthName "Диалоговое приглашение"
  Основной тип авторизации
  AuthUserFile /var/www/html/test/.htpasswd
  Требовать действительного пользователя

 

Это работает, я перепроверил на одной из своих систем.

Или используйте распределенный файл конфигурации (. htaccess), что означает, что вам необходимо сначала предоставить права на изменение доступа в конфигурации хоста вашего http-сервера с помощью AllowOverride 9директива 0032. И вам нужно убрать закрывающий блок, который не имеет никакого смысла внутри этой папки. Таким образом, фактический файл стиля «.htaccess» должен выглядеть так:

 #Protect Directory
AuthName "Диалоговое приглашение"
Основной тип авторизации
AuthUserFile /var/www/html/test/.htpasswd
Требовать действительного пользователя
 

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


И общее замечание: вы всегда должны размещать такие правила в конфигурации хоста http-серверов, а не использовать распределенные файлы конфигурации (. htaccess). Эти распределенные файлы конфигурации добавляют сложности, часто являются причиной неожиданного поведения, их трудно отлаживать, и они действительно замедляют работу http-сервера. Они предоставляются только в качестве последнего варианта для ситуаций, когда у вас нет доступа к реальной конфигурации хоста http-серверов (читай: действительно дешевые поставщики услуг) или для приложений, настаивающих на написании своих собственных правил (что является очевидным кошмаром безопасности).

0

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.

security - Насколько надежна защита паролем .htaccess?

Несколько замечаний:

Добавление безопасности в .htaccess всегда можно выполнить без .htaccess, используя инструкции в основной конфигурации (или конфигурации виртуального хоста). Это будет работать быстрее (если вы полностью удалите поддержку .htaccess с помощью AllowOverride None ), и вы не рискуете, что кто-то изменит ваш .htaccess.

Существует несколько способов повысить безопасность файлов .htaccess, один из этих способов — использование базовой HTTP-аутентификации с файлами .htpasswd . Эти файлы .htpasswd не должны находиться в корневом каталоге веб-каталога. Еще одна возможность — использование дайджест-аутентификации HTTP с тем ограничением, что очень старые браузеры не будут ее поддерживать (например, IE6).

Обычно мы сталкиваемся с базовой аутентификацией HTTP. Это очень слабая защита, просто из-за того, как она работает. В 1-м запросе вы отклонены, затем ваш браузер запросит у вас пароль и логин и запомнит эту ассоциацию входа в систему с паролем для запрошенного веб-сервера. Затем для каждого запроса, отправленного на этот веб-сервер, пока вы не закроете браузер логин и пароль будут добавлены в заголовок запроса , в незашифрованном виде . К строке «Ваш логин: Ваш пароль» применяется кодировка base64, чтобы она выглядела как чистая строка ASCII7 и предотвращала проблемы с кодировкой.

Таким образом, любой, кто прослушивает ваш запрос (точка доступа Wi-Fi, человек посередине, локальная сеть, эхо-переключатель и т. д.), узнает ваш пароль и логин. Плохой. Правило ":

никогда не используйте Basic HTTP Аутентификация, если соединение не HTTPS (SSL).

Если ваш веб-сервер полностью использует HTTPS, нет проблем (см. редактирование внизу), открытый текст/пароль шифруются SSL.

Что касается проблемы грубой силы (и да, некоторые люди могут попытаться взломать логин/пароль, если только вы не настроите модуль mod_security, чтобы предотвратить это), соображения безопасности на странице htpasswd совершенно ясны:

При использовании алгоритма crypt() обратите внимание, что для формирования пароля используются только первые 8 символов пароля. Если предоставленный пароль длиннее, лишние символы будут автоматически отбрасываться

и:

На платформах Windows и MPE длина паролей, зашифрованных с помощью htpasswd, не может превышать 255 символов. Более длинные пароли будут усечены до 255 символов.

Так что используйте хэширование SHA-кодирования для паролей (даже если оно не с солью).

Другой способ позволить аутентифицированному пользователю просматривать содержимое каталога — это обрабатывать список каталогов и загрузку файлов в вашем приложении (PHP, Tomcat и т.