Модуль 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 host.
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. Для более точного ограничения по подсети.
Сеть/nnn CIDR-спецификация:
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-адреса для нахождения связанного имени хоста, а затем прямой DNS-поиск по имени хоста для подтверждения соответствия исходному IP-адресу. Доступ будет разрешен только в том случае, если прямой и обратный DNS-поиск согласованы и имя хоста совпадает.
Require forward-dns
Провайдер forward-dns позволяет контролировать доступ к серверу на основе простых имён хостов. Если указано Require forward-dns host-name, все IP-адреса, соответствующие host-name, получают доступ.
В отличие от провайдера host, этот провайдер не полагается на обратный DNS-поиск: он просто запрашивает DNS для имени хоста и разрешает доступ клиенту, если его IP-адрес совпадает. Вследствие этого он будет работать только с именами хостов, а не с доменными именами. Однако, так как обратный 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