Как мне потребовать диапазон IP вместо 1 IP?


20

Мои изменения IP делают другой класс D, поэтому я хочу установить диапазон:

123.123.123.xxx, где последний сегмент может быть 0-255.

Прямо сейчас, Apache говорит:

<RequireAny>
   Require ip 127.0.0.1
   Require ip ::1
</RequireAny>

Ответы:


22

Во-первых, я предполагаю, что вы имеете в виду 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


Так что это не будет работать на Apache 2.2? phpMyAdmin работает как на 2.2, так и на 2.4, и я только что проверил, работает ли этот сервер и работает ли он на 2.2
user281497

Если что-то не было перенесено для включения, я никогда не видел этот синтаксис в конфигурационных файлах 2.2.
fukawi2

@ fukawi2 - Да, конечно, ты прав. Для пользователя 281497: Хотя Requireограниченная поддержка в Apache 2.2, Apache 2.2 не поддерживает ни, Require ipни <RequireAny>. Как отмечено в Обзоре новых функций в Apache HTTP Server 2.4 , «теперь можно указывать расширенную логику авторизации, используя Requireдирективу и соответствующие директивы контейнера, такие как <RequireAll>». Первые входят в число улучшений, добавленных в Apache 2.4.
Кольт

14

В 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::? Оба не дают мне синтаксических ошибок, но работают только первые.
Джеремия

3
Это потому, что 2a02: 4126: 2aa4 :: = 2a02: 4126: 2aa4: 0000: 0000: 0000: 0000: 0000, тогда как 2a02: 4126: 2aa4 :: / 48 соответствует всем адресам, которые начинаются с 2a02: 4126: 2aa4?
Джеремия

1

Отмечая , что вы теперь подтвердили с помощью 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    

который получит весь указанный диапазон.


1

Примечание: я оставляю это здесь, поскольку другие могли бы извлечь из этого пользу; это не прямой ответ на вопрос.

Например:

Требуется IP 192.168.100.0/22

работает, пока

Требуется IP 192.168.100.0/22 ​​#localnetwork

терпит неудачу!

Перезапуск выводов httpd:

Не удалось выполнить задание для httpd.service, поскольку процесс управления завершился с кодом ошибки. Подробности смотрите в разделах "systemctl status httpd.service" и "journalctl -xe".

Таким образом, кажется, что комментарии к этой строке запрещены .


1
Комментарии не допускаются нигде в строке конфигурации, см. Httpd.apache.org/docs/2.4/configuring.html : «Строки, начинающиеся с хэш-символа« # », считаются комментариями и игнорируются. Комментарии не могут быть включены в та же строка, что и в директиве о конфигурации. "
Патрик Мевзек,

0

Директива 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.


5
Пожалуйста, не просто копируйте и вставляйте работы других людей. Это называется плагиатом.
Джеральд Шнайдер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.