Содержание

Как защитить сайт паролем с помощью файла 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>


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

Файл .htaccess. Ограничение доступа, защита файлов, доступ по паролю

главная / web / статьи / файл .htaccess / часть 3

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

Чтобы запретить доступ ко всему сайту, необходимо в файле .htacces написать следующее:

deny from all

Запретить доступ только с конкретного ip-адреса:

deny from all
order allow deny
deny from all
deny from ip_адрес_пользователя

«ip_адрес_пользователя» необходимо заменить на конкретный ip-адрес.

Чтобы разрешить доступ только с конкретного ip-адреса, можно написать:

order allow deny
deny from all
allow from ip_адрес_пользователя

Так же с помощью файла .htaccess можно запретить доступ к конкретному файлу.

Например, запретим доступ пользователей к самому файлу .htaccess. При этом сервер сможет использовать инструкции, указанные в файле:

&lt Files .htaccess &gt
order allow,deny
deny from all

Наверное, всем пользователям интернета попадались одинаковые статьи на различных сайтах. Очень часто бывает, что эти статьи попросту сворованы с других ресурсов. Поисковые системы стараются бороться с дублированными страницами, но выбор ими первоисточника не всегда оказывается верным. И это является серьезной проблемой для копирайтеров и веб-мастеров, так как на написание качественного контента, порой, уходит большое количество сил и времени, и очень неприятно обзавестись штрафными санкциями поисковиков за то, что кто-то скопировал контент с Вашего сайта. А зачастую, вместе с текстом воруют так же и изображения. Причем, многие воры, чтобы не перегружать свой сервер, не скачивают изображение с чужих сайтов, а просто ссылаются на файлы, находящиеся на сайте-первоисточнике.

http(s)?://(www.)?bing. [NC]
RewriteRule \.(jpe?g|bmp|gif|png|css|zip|pdf|txt|doc)$ — [NC,F,L]

При помощи файла дополнительной конфигурации .htacces возможно установить пароль на директорию сайта, конкретный файл или группу файлов с одинаковым расширением. Чтобы установить пароль на директорию, в .htaccess необходимо написать:

AuthName «What do you want?«
AuthType Basic
AuthUserFile /home/сервер/ваш_сайт.ru/pass/.htpasswd
require valid-user

Файл .htaccess, содержащий эти строки необходимо поместить в директорию, доступ к которой мы хотим закрыть. При попытке пользователя зайти на соответствующий раздел сайта сервер отдаст код статуса 401 (требуется авторизация) и выведет окно с полями для ввода имени пользователя и пароля и сообщением «What do you want?», указанным в директиве «AuthName» (допускаются только латинские символы и цифры).

Имена пользователей и пароли хранятся в файле .htpasswd. Путь к этому файлу задается в директиве «AuthUserFile».

Важно: путь к файлу .htpasswd указывается абсолютный, от корневого каталога сервера.

Чтобы узнать путь к .htpasswd, который необходимо указать в .htaccess, можно создать файл php, содержащий:

&lt ?php echo $_SERVER[‘DOCUMENT_ROOT’]; ? &gt

Закачать этот файл на сервер туда же, где находится .htpasswd, и открыть его в браузере. В сгенерированной странице Вы увидите абсолютный путь к директории, указанный от корневого каталога сервера.

Установить пароль на конкретный файл можно следующим образом:

&lt Files file.txt &gt

AuthName «It’s not for all»
AuthType Basic
AuthUserFile /home/сервер/ваш_сайт.ru/pass/.htpasswd

Пароль на группу файлов:

&lt Files «\.(sql)$» &gt
AuthName » It’s not for all «
AuthType Basic
AuthUserFile /home/сервер/ваш_сайт.ru/pass/.htpasswd

В данном случае все файлы, имеющие расширение .sql будут доступны только по паролю.



← предыдущая статья ↑ к списку статей ↑

Настройка парольной аутентификации с помощью Apache в Ubuntu 18.

04