Как защитить сайт паролем с помощью файла htpasswd | Info-Comp.ru
Всем привет! Сегодня мы поговорим о том, как защитить сайт паролем с помощью htpasswd. Такая необходимость может возникнуть при разработке нового сайта или при любой другой ситуации, когда вам нужно закрыть доступ к сайту или директории паролем. Это может быть обусловлено необходимостью запретить индексирование контента поисковыми роботами в период разработки или может появиться необходимость закрыть доступ к определенным разделам, документам сайта.
Содержание
- Как ограничить доступ к сайту
- Как создать файл паролей .htpasswd
- Как подключить .htpasswd в Nginx
- Как подключить .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.
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, где
В директиве AuthUserFile указываем абсолютный путь к файлу с логинами/паролями, который мы создадим чуть позже. Если вы создаете файл .htaccess на своем компьютере, а не сразу на сервере при помощи текстового редактора, обратите внимание на то, что .htaccess должен передаваться по FTP строго в текстовом (ASCII) режиме.
Создаем файл паролей. Файл с паролями должен содержать строки вида login:password. Пароль должен быть зашифрован с использованием алгоритма MD5. Один из способов создать такой файл — воспользоваться программой, входящей в поставку Apache — 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
- защита паролем
Я только сейчас понял, что вы используете распределенный файл конфигурации («.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 и т.