Я использую CentOS 5.5 со стандартным Apache httpd-2.2.3.
Я включил mod_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?
Я пытался добавить оператор Deny для 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 :
Разрешить, Запретить
Во-первых, все разрешающие директивы оцениваются; по крайней мере один должен соответствовать, или запрос отклонен. Затем оцениваются все директивы Deny. Если какие-либо совпадения, запрос отклоняется
IP-адрес соответствует директиве Deny, поэтому не следует ли отклонить запрос?
В соответствии с таблицей на странице mod_authz_host этот IP-адрес должен "совпадать как с разрешением, так и с запретом", и поэтому должно применяться правило "Окончательное совпадение элементов управления: отказано".
Матч Разрешить, Запретить результат Запретить, Разрешить результат Только совпадение Разрешить Запрос разрешен Запрос разрешен Только совпадение Запретить Запрос отклонен Запрос отклонен Нет соответствия По умолчанию для второй директивы: Запрещено По умолчанию для второй директивы: Разрешено Совпадают оба элемента «Разрешить и запретить». Элементы управления финальным матчем: Запрещено
Allow from 192.168.16.0/24
. Как я понимаю из документации, любые IP-адреса запрашивающей стороны в сети 192.168.16.0/24 будут соответствовать этому утверждению Allow, запрос разрешен.