HTTP аутентификация позволяет ограничить доступ по http и https к содержимому любого каталога сайта или ко всему сайту. При обращении к каталогу через браузер пользователю будет выводиться диалог, запрашивающий логин и пароль. При неверном их вводе доступ предоставлен не будет — отобразится ошибка 403.
Ограничения можно задавать к веб-ресурсам или отдельным разделам сайтов.
Необходимые ограничения задаются в файле .htpasswd, который генерируется при помощи одноименной утилиты.
При создании файла обращение к утилите производится с ключом -c (create) который указывает на необходимость создания файла, затем указываются учетные записи, которые необходимо создать.
Команда для редактирования существующего файла .htpasswd аналогична за исключением отсутствия необходимости указывать ключ -c.
Для задания ограничения доступа в консоли от имени пользователя root необходимо выполнить следующую команду:
htpasswd -c /home/sites/mysite.ru/.htpasswd username
Создастся файл, в котором будет задан логин пользователя username, имеющего доступ к каталогу /home/sites/mysite.ru/ — пароль создается автоматически.
cat /var/sites/company.ru/.htpasswd
username:rZPmUqrK678LIc
Таким же образом можно добавить дополнительных пользователей:
htpasswd /var/sites/company.ru/.htpasswd anotheruser
Создания файла .htpasswd для ограничения доступа не достаточно, веб-серверу нужно дать указание на необходимость его использования.
В каталоге, доступ к которому требуется ограничить создадим файл .htaccess со следующим содержанием:
AuthType Basic
AuthName «Restricted Area»
AuthBasicProvider file
AuthUserFile /var/sites/company.ru/.htpasswd
Require valid-user
Возможные типы аутентификации:
Basic – базовый, данные передаются в открытом виде — чаще всего используется именно эта опция.
Digest – данные передаются в зашифрованном виде. Для создания digest-файлов может быть использована утилита htdigest (AuthType Digest);
Также в .htaccess задается расположение файла .htpasswd с паролями и условия прохождения http аутентификации.
Обычное значение — Require valid-user – обеспечит доступ любому пользователю, упоминающемуся в .htpasswd. Другой вариант — Require user nameuser — доступ получит только nameuser при условии ввода правильного пароля — остальные пользователи, упоминающиеся в .htpasswd содержимое закрытой при помощи формы ввода пароля страницы посмотреть не смогут.
HTTP аутентификация + ограничение доступа к сайту по IP-адресу
Также доступ можно разрешить или запретить по IP-адресу. Ограничения задаются в файле .htaccess, который размещается в корне сайта или любого каталога сайта (доступ будет ограничен на том уровне на который распространяется действие директив .htaccess).
Order указывает в каком порядке будут обрабатываться правила — в примере доступ сначала запрещается для всего Интернета, затем разрешается для адреса 123.123.123.123.
Order deny,allow
Deny from all
Allow from 123.123.123.123
Можно закрыть сайт по маске не для конкретного адреса, а для диапазона адресов, например таким образом:
Order deny,allow
Deny from all
Allow from 123.123.123.0/24
Также файл .htaccess используется для задания редиректов и для добавления определенных заголовков. При неверном синтаксисе файла возможно возникновение серверной ошибки 500.
Доступ можно ограничить и в случае если на сервере используется Nginx, потребуется тот же файл .htpasswd и директива в конфигурационном файле.