Модуль Apache mod_authz_host
| Описание: | Группировка правил авторизации на основе имени хоста или IP-адреса |
|---|---|
| Статус: | Базовый |
| Идентификатор модуля: | authz_host_module |
| Исходный файл: | mod_authz_host.c |
| Совместимость: | Провайдер forward-dns добавлен в версии 2.4.19 |
Краткое описание
Провайдеры авторизации, реализованные в mod_authz_host, регистрируются с помощью директивы Require. На эту директиву можно ссылаться в секциях <Directory>, <Files> или <Location>, а также в файлах .htaccess, чтобы управлять доступом к определённым частям сервера. Доступ можно контролировать на основе имени хоста или IP-адреса клиента.
Как правило, директивы ограничения доступа применяются ко всем методам доступа (GET, PUT, POST и т. д.). В большинстве случаев это желаемое поведение. Однако можно ограничить некоторые методы, оставив остальные без ограничений, поместив директивы в секцию <Limit>.
Директивы Require
Директива Require Apache используется на этапе авторизации, чтобы определить, разрешён или запрещён пользователю доступ к ресурсу. mod_authz_host расширяет типы авторизации типами ip, host, forward-dns и local. Можно использовать и другие типы авторизации, но для этого может потребоваться загрузить дополнительные модули авторизации.
Эти провайдеры авторизации определяют, каким хостам разрешён доступ к области сервера. Доступ можно контролировать по имени хоста, IP-адресу или диапазону IP-адресов.
Начиная с версии 2.4.8, в директивах require для хостов поддерживаются выражения.
Require ip
Провайдер ip позволяет управлять доступом к серверу на основе IP-адреса удалённого клиента. Если указано Require ip ip-address, запросу разрешается доступ, когда IP-адрес совпадает.
Полный IP-адрес:
Require ip 10.1.2.3 Require ip 192.168.1.104 192.168.1.205
IP-адрес хоста, которому разрешён доступ
Частичный IP-адрес:
Require ip 10.1 Require ip 10 172.20 192.168.2
Первые 1–3 байта IP-адреса для ограничения подсети.
Пара сеть/маска подсети:
Require ip 10.1.0.0/255.255.0.0
Сеть a.b.c.d и маска подсети w.x.y.z. Для более точного ограничения подсети.
Спецификация CIDR сеть/nnn:
Require ip 10.1.0.0/16
Аналогично предыдущему случаю, но маска подсети состоит из nnn старших битов, равных 1.
Обратите внимание, что три последних примера выше точно соответствуют одному и тому же набору хостов.
Адреса IPv6 и подсети IPv6 можно указать, как показано ниже:
Require ip 2001:db8::a00:20ff:fea7:ccea Require ip 2001:db8:1:1::a Require ip 2001:db8:2:1::/64 Require ip 2001:db8:3::/48
Примечание. Поскольку IP-адреса анализируются при запуске, выражения не вычисляются во время обработки запроса.
Require host
Провайдер host позволяет управлять доступом к серверу на основе имени хоста удалённого клиента. Если указано Require host host-name, запросу разрешается доступ, когда имя хоста совпадает.
(Частичное) доменное имя
Require host example.org Require host .net example.edu
Доступ разрешён хостам, имена которых совпадают с этой строкой или оканчиваются на неё. Сопоставляются только полные компоненты, поэтому приведённый выше пример совпадёт с foo.example.org, но не с fooexample.org. Эта конфигурация заставит Apache выполнить двойной обратный поиск DNS для IP-адреса клиента независимо от значения директивы HostnameLookups. Сначала будет выполнен обратный поиск DNS по IP-адресу, чтобы найти связанное с ним имя хоста, а затем — прямой поиск по имени хоста, чтобы убедиться, что оно соответствует исходному IP-адресу. Доступ будет разрешён, только если прямой и обратный поиск DNS согласуются и имя хоста совпадает.
Require forward-dns
Провайдер forward-dns позволяет управлять доступом к серверу на основе простых имён хостов. Если указано Require forward-dns host-name, доступ разрешается для всех IP-адресов, соответствующих host-name.
В отличие от провайдера host, этот провайдер не использует обратный поиск DNS: он просто запрашивает в DNS имя хоста и разрешает доступ клиенту, если его IP-адрес совпадает. Поэтому он работает только с полными именами хостов, которые можно разрешить в DNS, но не с частичными доменными именами. Однако, поскольку обратный поиск DNS не используется, а запросы DNS выполняются во время обработки запроса (а не при запуске), этот провайдер работает с клиентами, использующими службу динамического DNS.
Require forward-dns dynamic.example.org
Клиенту, IP-адрес которого определён по имени dynamic.example.org, будет разрешён доступ.
Провайдер forward-dns добавлен в версии 2.4.19.
Require local
Провайдер local разрешает доступ к серверу, если выполняется хотя бы одно из следующих условий:
- адрес клиента соответствует 127.0.0.0/8
- адрес клиента — ::1
- адреса клиента и сервера в соединении совпадают
Это позволяет удобным способом отбирать соединения, исходящие с локального хоста:
Require local
Примечание о безопасности
Если вы проксируете содержимое на свой сервер, имейте в виду, что адресом клиента будет адрес вашего прокси-сервера, а не адрес клиента. Поэтому использование директивы Require в этом контексте может не дать ожидаемого результата. Возможное решение этой проблемы описано в mod_remoteip.
© 2018 The Apache Software Foundation
Licensed under the Apache License, Version 2.0.
https://httpd.apache.org/docs/2.4/en/mod/mod_authz_host.html