Як мені потрібен діапазон 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, оскільки процес управління завершився кодом помилки. Докладніше див. "Statusctl status httpd.service" та "journalctl -xe".

Отже, здається, що жодні коментарі в цьому рядку не допускаються .


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

0

Директива Apache's Require використовується на етапі авторизації для того, щоб користувачеві було дозволено чи заборонено доступ до ресурсу. mod_authz_host розширює типи авторизації на ip, host, forward-dns та local. Також можуть використовуватися інші типи авторизації, але може знадобитися завантаження додаткових модулів авторизації.

Ці провайдери авторизації впливають на те, які хости можуть отримати доступ до області сервера. Доступ можна контролювати за допомогою імені хоста, IP-адреси чи діапазону IP-адрес.

Оскільки v2.4.8, вирази підтримуються в хості, що вимагає директив. Потрібен ip

Провайдер ip дозволяє контролювати доступ до сервера на основі IP-адреси віддаленого клієнта. Якщо вказано ip ip-адресу Require, тоді запиту буде дозволено доступ, якщо 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.