Создание .htpasswd для 401-авторизации
Укажите данные для создания .htpasswd и .htaccess файлов:
Данный пароль сгенерирован при помощи htpasswd и подходит для Linux и Windows
Скопируйте эту строку в ваш .htpasswd файл: Помните, только одна запись может быть в строке!
Для ограничения доступа к выбранной директории скопируйте эти строчки в ваш .htaccess файл:
Для запрета доступа только к файлу private.zip скопируйте эти строчки в ваш .htaccess файл:
Обратите внимание что файлы .htaccess и .htpasswd должны быть сохранены в unix-формате. Например, в Far Manager этого можно достичь если в режиме редактирования файла нажать комбинацию Shift+F2 и в появившемся меню выбрать “в формате UNIX (LF)”.
Директивы и описание файла .htaccess, используемые для ограничения доступа
- AuthType — Тип используемой аутентификации. Для базовой аутентификации эта директива должна иметь значение: Basic
- AuthName — Имя области действия аутентификации. Текст, помогающий посетителю понять, куда он пытается получить доступ. Например, может быть написано: «Private zone. Only for administrator!»
- AuthUserFile — полный путь к файлу с паролями (.htpasswd). Относительные пути работать не будут.
- AuthGroupFile — путь к файлу групп, если он существует.
- Require — Одно или несколько требований, которые должны быть выполнены для получения доступа к закрытой области.
- require valid-user — разрешен доступ всем прошедшим проверку
- require user admin alex mango — разрешен доступ только посетителям с именами admin, alex, mango. Естественно, они должны пройти аутентификацию.
- require group admins — разрешен доступ всем пользователям из группы admins
Файлы групп
Если к защищаемой области сайта должна иметь доступ группа людей, то удобно объединить людей в группы, и разрешать доступ, определяя принадлежность пользователей к группе.
Формат файла групп — это текстовый файл, каждая строка, которого описывает отдельную группу. Первым в строке должно идти название группы с двоеточием. А затем через пробел перечисляются посетители, входящие в группу.
Пример файла групп:
В группу Admins входят посетители с именами admin, alex, mango. А группу Users входят посетители с именами guest, user, max23.
Пример файла .htaccess для доступа всем пользователям, прошедшим авторизацию:
Пример файла .htaccess для доступа только пользователям admin и root:
Доступ только пользователей из группы admins:
Утилита htpasswd, с помощью которой Вы можете самостоятельно генерировать пароли описана в оригинальной документации (на английском). Здесь Вы можете скачать утилиту htpasswd.exe для Windows.
C остальными директивами и возможностями файла .htaccess Вы можете ознакомиться в статье .htaccess
Как создать .htpasswd
.htpasswd — файл, содержащий пароли для доступа к ресурсу у веб-сервера Apache. Метод авторизации с использованием такого файла носит название базового. Некоторые другие веб-серверы, например, nginx, также могут работать с этим файлом.
Для создания нового файла .htpasswd
Можно воспользоваться online генератором или сгенерировать в консоле.
В командной строке набираем команду:
Для изменения существующего файла .htpasswd
В командной строке набираем команду:
Dir — каталог где будет лежать файл
username — имя с которым будем заходить в закрытую .htaccess область
PassWord — пароль с которым будем заходить в закрытую .htaccess область
Полный список ключей :
-c Create a new file.
-n Don’t update file; display results on stdout.
-m Force MD5 encryption of the password.
-d Force CRYPT encryption of the password (default).
-p Do not encrypt the password (plaintext).
-s Force SHA encryption of the password.
-b Use the password from the command line rather than prompting for it.
-D Delete the specified user.
On-line журнал o Linux
.htaccess и .htpasswd — защита доступа
Используем файлы .htaccess и .htpasswd и для установки пароля на доступ к определенным страницам или разделам вашего сайта.
Для начало создаем в нужном подкаталоге файл .htaccess, в который пишем следующее:
AuthType Basic
AuthName «Access is Denied. Enter password»
AuthUserFile /path_to_file/.passwords
Далее создаем файл с паролями, путь к которому указывается в качестве параметра к директиве AuthUserFile.
Пароли в этом файле должны быть шифрованными, чего можно достигнуть с помощью программы htpasswd, входящей в поставку Apache.
Подробную информацию об использывании можно почитать Manual Page: htpasswd или покурить man, так же достаточно запустив htpasswd в unix shell:
$ htpasswd
Usage:
htpasswd [-cmdpsD] passwordfile username
htpasswd -b[cmdpsD] passwordfile username passwordhtpasswd -n[mdps] username
htpasswd -nb[mdps] username password
-c Create a new file.
-n Don’t update file; display results on stdout.
-m Force MD5 encryption of the password.
-d Force CRYPT encryption of the password (default).
-p Do not encrypt the password (plaintext).
-s Force SHA encryption of the password.
-b Use the password from the command line rather than prompting for it.
.
Итак, у нас еще нет файла с паролями и нам нужно его создать :
$ htpasswd -c .passwords test
New password:
Re-type new password:
Adding password for user test
После этого создастся файл .passwords, в котором окажется пользователь test и его пароль в зашифрованном виде:
$ cat .passwords
test:WE.MwmyNsIG76
А теперь мы хотим добавить еще одного пользователя. Так как файл с паролями у нас уже есть, мы просто не будем использовать ключ ‘-c’ :
$ htpasswd .passwords test1
New password:
Re-type new password:
Adding password for user test1
$ cat .passwords
test:WE.MwmyNsIG76
test1:Eeg7zFPfq32BM
В качестве параметра к директиве require мы указали valid-user. Это означает, что любой пользователь, который есть в используемом файле с паролями, может иметь доступ к защищенному ресурсу. Однако, согласитесь, удобно иметь все пароли в одном файле, а права на конкретные ресурсы давать только определенным пользователям.
Для этого покажем на напримере, даем доступ только пользователю test:
AuthType Basic
AuthName «Access is Denied. Enter password»
AuthUserFile /path_to_file/.passwords
Еще можно объединить пользователей в группы и давать доступ не конкретным юзерам, а группам.
Это можно сделать с помощью директивы AuthGroupFile:
В файле groups создаем группы примерно так :
group1: user1 user3
group2: user2 user4
group3: user1 user3
Соответственно, директиву require будем использовать так :
AuthType Basic
AuthName «Access is Denied. Enter password»
AuthGroupFile /path_to_file/groups
AuthUserFile /path_to_file/.passwords
Require user test
Require group group1
Linux Apache: базовая защита сайтов (хостов)
Всех категорически приветствую!
Это предпоследняя заметка из цикла о базовой настройке web-сервера, и в ней разберем такие инструменты, как .htaсcess и .htpasswd.
Вариантов и целей использования этих инструментов множество, я разберу лишь следующие (которые нужны чаще всего мне, во всяком случае):
- ограничения доступа по IP-адресам (подсетям);
- редирект;
- авторизация на странице.
Что такое .htaccess и .htpasswd
.htaccess – это файл дополнительной конфигурации Apache, при помощи которого дифференцированно можно задавать дополнительные правила или точечно снимать глобальные ограничения; располагается в требуемой директории сайта; распространяет правила на все вложенные файлы и каталоги; путь к начальному каталогу задается в конфиге хоста;
.htpasswd – файл, говорящий сам за себя; хранит авторизационные данные, а именно логин (в открытом виде) и пароль (в виде хеша MD5); генерируется при помощи утилиты «htpasswd»; располагать его желательно в месте, закрытом от чужих глаз (например, где-нибудь в директории «/var/www/myhtpasswd/.htpasswd»).
.htaccess и .htpasswd – это просто общепринятые названия файлов. На самом деле, обозвать их можно как душе угодно ( только придется немного подправить конфиг apache, что позволяет далеко не каждый хостинг, если вы пользуетесь услугами таковых ). Точку в начале имени тоже желательно оставить – все-таки лучше, чтобы файлы с описанием параметров безопасности были скрытыми. Почему скрытыми? Ну, вы же не вывешиваете на стену пароли от своих соц.сетей, когда к вам приезжают гости… да и в ином случае вряд ли вывешиваете, потому что это просто тупо.
Настройка Apache и хостов для работы с .htaccess
Если вы решили использовать имя файла, отличное от .htaccess (например, .myhtrules), то нужно сходить в конфиг apache «/etc/apache2/apache2.conf» и поменять параметры:
- «AccessFileName .htaccess» на «AccessFileName .myhtrules»
- « » на « »
Первый параметр определяет имя файла с дополнительными правилами, а второй – запрещает показ всех файлов, имя которых начинается с «.myht».
После изменения конфига apache надо перезапустить:
Я имена файлов и конфигурацию не меняю, и далее буду работать с классическими .htaccess и .htpasswd.
Теперь поднастроим конфиг хоста.
Пусть у нас это будет первый хост с сайтом test-site1.ru (если непонятно откуда взялся test-site1.ru, то читайте статью о настройке виртуальных хостов ).
Открываем конфиг хоста «/etc/apahce2/sites-available/tsite1ru.conf» (готовый конфиг взять можно ТУТ ) и наблюдаем следующий раздел, отвечающий за работу с файлом .htaccess:
Используя директиву «Directory», задавайте путь относительно корня файловой системы сервака. Еще имеется директива « », которая задает путь относительно корня виртуального хоста (таковым в конфиге хоста является значение директивы «Document Root»)
В моем конфиге задан путь к корню виртуального хоста «/var/www/html/tsite1ru». Это говорит о том, что Apache будет искать файлик .htaccess начиная именно с корневого каталога хоста. Это нужно далеко не всегда, и путь можно указать, например, для какой-нибудь субдиректории (админки сайта).
Про директиву «Options» можно почитать ТУТ . Разжевывать не буду.
Директива «AllowOverride» имеет значение «All» — это значит, что Apache будет считывать все директивы из файла .htaccess. Если директива «AllowOverride» будет иметь значение «None», то директивы в .htaccess будет игнорироваться.
Эксперименты с .htaccess
Хотелось бы оговориться: под выражением «запретить/разрешить доступ к сайту, или к отдельным страницам сайта, или к отдельным файлам сайта» имеется ввиду «запретить/разрешить доступ к определенным директориям и файлам хоста (виртуального или физического – не важно)». Правила применяются именно к директориям и файлам, а не к какой-то хреновине, под названием «сайт».
Эксперимент первый. .htaccess в корне хоста (сайта)
1) разрешить доступ на сайт только с двух IP-адресов;
2) разрешить доступ на сайт с определенных подсетей;
3) запретить доступ на сайт только с двух IP-адресов;
4) запретить доступ на сайт только с определенных подсетей;
Формализуем первые две задачи: необходимо запретить доступ всем, кроме допущенных.
Формализуем вторые две задачи: догадались, думаю – разрешить доступ всем, кроме нежелательных.
Для реализации этих двух блоков задач имеются следующие наборы директив:
Логика работы такая:
- серверу сказано, что правила нужно обработать в порядке сначала Deny (отказать), потом Allow (разрешить);
- следом идет правило «Deny from all», которое означает «отказать всем» и которое сервер, согласно установленному порядку, обработает первым; иными словами – «все, кто, пришел, сначала будут забанены»;
- затем идет правило перечисления допущенных «Allow from значение», которое сервер будет обрабатывать уже после правила «Deny»; по-русски — «из забаненных пустить только избранных».
Итак, в корне хоста (сайта) создадим файлик .htaccess: