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