Мои изменения IP делают другой класс D, поэтому я хочу установить диапазон:
123.123.123.xxx, где последний сегмент может быть 0-255.
Прямо сейчас, Apache говорит:
<RequireAny>
Require ip 127.0.0.1
Require ip ::1
</RequireAny>
Мои изменения IP делают другой класс D, поэтому я хочу установить диапазон:
123.123.123.xxx, где последний сегмент может быть 0-255.
Прямо сейчас, Apache говорит:
<RequireAny>
Require ip 127.0.0.1
Require ip ::1
</RequireAny>
Ответы:
Во-первых, я предполагаю, что вы имеете в виду Apache 2.4, несмотря на тег «apache-2.2», поскольку синтаксис, который вы опубликовали, основан на 2.4.
Из документации Apache:
ip.address - это IP-адрес, частичный IP-адрес, пара сеть / маска сети или спецификация CIDR сеть / nnn.
Я предполагаю, что вы имеете в виду, что вы хотите разрешить / 24, так как класс D - это адреса многоадресной рассылки, а в 90-х классная сеть исчезла. Чтобы разрешить / 24, вы можете использовать любое из следующего:
Require ip 123.123.123
Require ip 123.123.123.0/255.255.255.0
Require ip 123.123.123.0/24
Лично я считаю, что последнее менее однозначно, чем первое, и его легче читать, чем второе.
Этот раздел документации может оказаться полезным: http://httpd.apache.org/docs/2.4/howto/access.html#host
Require
ограниченная поддержка в Apache 2.2, Apache 2.2 не поддерживает ни, Require ip
ни <RequireAny>
. Как отмечено в Обзоре новых функций в Apache HTTP Server 2.4 , «теперь можно указывать расширенную логику авторизации, используя Require
директиву и соответствующие директивы контейнера, такие как <RequireAll>
». Первые входят в число улучшений, добавленных в Apache 2.4.
В Apache 2.2 и ниже вы можете работать с:
Order deny,allow
Deny from all
Allow from 24.18 # allow access from home
Allow from 162.12 # allow access from work
в вашем .htacess, непосредственно на базовом уровне (не в любом <directive>
).
Начиная с Apache 2.4 и выше, вы идете:
<RequireAny>
#IPv4 range at my work
Require ip 207.100
#IPv4 range I usually get through my mobile provider
Require ip 29.11
#IPv6 from home
Require ip 2a02:4126:2aa4::/48
</RequireAny>
(все цифры вымышленные, не беспокойтесь ;-).
Я использую это уже много лет, чтобы защитить свои внутренние папки от 99% потенциальных пользователей. (Работает очень хорошо, если вы не являетесь заядлым блоггером во время путешествий. Если вы являетесь пользователем gmail: «последнее действие в аккаунте», ссылка в самом низу - удобный способ выяснить ваши собственные «привычки IP»).
Require ip 2a02:4126:2aa4::/48
а Require ip 2a02:4126:2aa4::
? Оба не дают мне синтаксических ошибок, но работают только первые.
Отмечая , что вы теперь подтвердили с помощью Apache 2.2 , Apache 2.2 не поддерживает ни Require ip
или <RequireAny>
. Как отмечено в Обзоре новых функций в Apache HTTP Server 2.4 , «теперь можно указывать расширенную логику авторизации, используя Require
директиву и соответствующие директивы контейнера, такие как <RequireAll>
». Первые входят в число улучшений, добавленных в Apache 2.4.
Чтобы справиться с этим в Apache 2.2, вам, вероятно, потребуется сделать что-то вроде:
Order allow,deny
Allow from 123.123.123
который получит весь указанный диапазон.
Примечание: я оставляю это здесь, поскольку другие могли бы извлечь из этого пользу; это не прямой ответ на вопрос.
Например:
Требуется IP 192.168.100.0/22
работает, пока
Требуется IP 192.168.100.0/22 #localnetwork
терпит неудачу!
Перезапуск выводов httpd:
Не удалось выполнить задание для httpd.service, поскольку процесс управления завершился с кодом ошибки. Подробности смотрите в разделах "systemctl status httpd.service" и "journalctl -xe".
Таким образом, кажется, что комментарии к этой строке запрещены .
Директива Apache Require используется на этапе авторизации, чтобы гарантировать, что пользователю разрешен или запрещен доступ к ресурсу. mod_authz_host расширяет типы авторизации с помощью ip, host, forward-dns и local. Другие типы авторизации также могут использоваться, но могут потребовать загрузки дополнительных модулей авторизации.
Эти поставщики авторизации влияют на то, какие хосты могут получить доступ к области сервера. Доступ можно контролировать по имени хоста, IP-адресу или диапазону IP-адресов.
Начиная с версии 2.4.8, выражения , поддерживаемые в хосте, требуют директив. Требовать 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
Сеть abcd и маска сети wxyz Для более детального ограничения подсети.
Спецификация сети / 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-адреса анализируются при запуске, выражения не оцениваются во время запроса.
Источник: https://httpd.apache.org/docs/trunk/mod/mod_authz_host.html.