Всем привет! Сегодня мы поговорим о том, как защитить сайт паролем с помощью htpasswd. Такая необходимость может возникнуть при разработке нового сайта или при любой другой ситуации, когда вам нужно закрыть доступ к сайту или директории паролем. Это может быть обусловлено необходимостью запретить индексирование контента поисковыми роботами в период разработки или может появиться необходимость закрыть доступ к определенным разделам, документам сайта.
Как ограничить доступ к сайту
Доступ к содержимому любого каталога на сервере можно ограничить почти на всех 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>
Надеюсь, что эта информация была полезна для вас.