Ограничение доступа с помощью .htaccess

Материал из Энциклопедия хостинга
Перейти к: навигация, поиск


В случае использования для работы сайтов веб-сервера Apache, есть возможность ограничения доступа с помощью файла .htaccess, действие которого распространяется либо на одну директорию, либо на все вложенные поддиректории. Существует несколько видов ограничения доступа, которые могут пригодиться в разных случаях. Рассмотрим эти возможные варианты:

Содержание

Ограничение по IP-адресу

Конструкция подобного ограничения очень проста:

order allow,deny
deny from 1.1.1.1
deny from 2a01:230::6d0a:8406:c4e4:9e19
deny from 10.10
deny from 192.168.0.0/24
deny from domain.dom
allow from all

Системные требования для работы этих правил: Веб-сервер Apache 2.2.x с подключенным модулем mod_authz_host.

В этом примере я привел все возможные вариации ограничения доступа. И ниже разберем каждую строку в отдельности.

Первая строка задает логику работы последующих правил. В каком порядке будут выполняться блокирующие и разрешающие правила.

Вторая и третья строки блокируют доступ по конкретным IP-адресам (ipv4 и ipv6 соответственно).

Четвертая строка показывает, что можно указывать частично IP-адрес и в таком случае (как указано в примере) будет обрабатываться как подсеть /16.

Пятая строка - можно блокировать целыми сетями и подсетями, указывая диапазон.

Для работы вариантов блокировки как в шестой строке потребуется включить параметр HostnameLookups.

И, наконец, последняя строка allow from all говорит о том, что всем остальным доступ разрешен.

Ограничение по паролю

Рассмотрим простейший вариант ограничения доступа с авторизацией по логину и паролю

AuthType Basic
AuthName "Доступ ограничен паролем"
AuthUserFile /path/to/.htpasswd

Системные требования для работы такой конструкции: Веб-сервер Apache 2.2.x с подключенными модулями auth_basic, authn_file.


Генерация пароля

Создание пары "логин-пароль" происходит с непосредственным участием приложения htpasswd, которая входит в дистрибутивную поставку Apache. При запуске без параметров данная утилита выведет справку, перевод которой я располагаю ниже

Использование:
        htpasswd [-cmdpsD] passwordfile username
        htpasswd -b[cmdpsD] passwordfile username password

        htpasswd -n[mdps] username
        htpasswd -nb[mdps] username password

 -c  Создать новый файл.
 -n  Не обновлять файл, вывести результат на экран.
 -m  Зашифровать пароль с помощью [[MD5]].
 -d  Зашифровать пароль с помощью [[CRYPT]] (по умолчанию).
 -p  Не шифровать пароль (открытый текст).
 -s  Зашифровать пароль с помощью [[SHA]].
 -b  Указать пароль в параметре командной строки.
 -D  Удалить указанного пользователя.
На [[Windows]], [[NetWare]] и [[TPF]] системах флаг '-m' используется по умолчанию.
На всех остальных системах флаг '-p' может не работать.


Примеры работы htpasswd

Таким образом, чтобы создать файл с логином и паролем для авторизации с зашифрованным паролем в MD5, потребуется выполнить команду:

  • htpasswd -bcm /path/to/.htpasswd sampleuser samplepass

Adding password for user sampleuser


Результатом будет файл .htpasswd со строкой

sampleuser:$apr1$i5Kx715D$qkWbaZLztXohMGOdfCUy5/


Для того, чтобы добавить пользователя к уже существующим в файл, выполните команду

  • htpasswd -bm /path/to/.htpasswd sampleuser1 samplepass1

Updating password for user sampleuser1


В случае, если в файле указано больше одного пользователя и вам требуется удалить какого-либо, то команда будет выглядеть так:

  • htpasswd -D /path/to/.htpasswd sampleuser2

Deleting password for user sampleuser2


Полезные ссылки

Личные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты

Заметили ошибку?

Выделите ее и нажмите CTRL+ENTER