Я працюю CentOS 5.5 з запасом Apache httpd-2.2.3.
Увімкнено mod_status у статусі Location / server-status. Я хотів би дозволити доступ до цього одного місця таким чином:
- Заперечувати від усіх
- Дозволити з підмережі 192.168.16.0/24
- Заборонити від IP 192.168.16.100, що знаходиться в межах підмережі 192.168.16.0/24.
1 і 2 прості. Однак, оскільки я "Дозволити з 192.168.16.0/24", чи можна заборонити з 192.168.16.100?
Я спробував додати заяву заперечення для 192.168.16.100, але це не працює. Ось відповідна конфігурація:
<Location /server-status>
SetHandler server-status
Order Allow,Deny
Deny from all
Deny from 192.168.16.100 # This does not deny access from 192.168.16.100
Allow from 192.168.16.0/24
</Location>
Або:
<Location /server-status>
SetHandler server-status
Order Allow,Deny
Deny from all
Deny from 192.168.16.100 # This does not deny access from 192.168.16.100
Allow from 192.168.16.0/24
</Location>
Однак це не перешкоджає доступу до цієї конкретної сторінки, як показано в журналах доступу:
www.example.org 192.168.16.100 - - [11/Mar/2011:16:01:14 -0800] "GET /server-status HTTP/1.1" 200 9966 "-" "
Відповідно до посібника для mod_authz_host :
Дозволити заборонити
По-перше, оцінюються всі директиви Allow; принаймні один повинен відповідати, або запит буде відхилено. Далі оцінюються всі директиви заперечення. Якщо якісь збіги, запит буде відхилено
IP-адреса відповідає директиві заборонити, тому чи не слід відхиляти запит?
Відповідно до таблиці на сторінці mod_authz_host, ця IP-адреса повинна "відповідати як дозволити, так і заборонити", і, таким чином, має застосовуватися правило "Кінцевий контроль відповідності: Відхилено".
Матч Дозволити, Заборонити результат Заборонити, Дозволити результат Матч Дозволити лише Запит дозволений Запит дозволений Лише відмовити у відповіді Запит відхилений. Запит відхилений Не збігається За замовчуванням з другою директивою: Заборонено за замовчуванням на другу директиву: Дозволено Збігайте обидва елементи контролю дозволу та заборони фінального матчу: відмовлено у контролі фінального матчу: дозволено
Allow from 192.168.16.0/24
. Як я розумію документацію, будь-які IP-адреси запитувача в мережі 192.168.16.0/24 будуть відповідати цій заяві Дозволити, запит дозволений.