Używam CentOS 5.5 ze standardowym Apache httpd-2.2.3.
Mam włączone mod_status w miejscu / stan serwera. Chciałbym zezwolić na dostęp do tej jednej lokalizacji w następujący sposób:
- Odmowa od wszystkich
- Zezwalaj z podsieci 192.168.16.0/24
- Odmów z adresu IP 192.168.16.100, który znajduje się w podsieci 192.168.16.0/24.
1 i 2 są łatwe. Jednak skoro „Zezwalam na 192.168.16.0/24”, czy można odmówić z 192.168.16.100?
Próbowałem dodać instrukcję Deny dla 192.168.16.100, ale to nie działa. Oto odpowiednia konfiguracja:
<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>
Lub:
<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>
Jednak nie uniemożliwia to dostępu do tej konkretnej strony, jak pokazano w dziennikach dostępu:
www.example.org 192.168.16.100 - - [11/Mar/2011:16:01:14 -0800] "GET /server-status HTTP/1.1" 200 9966 "-" "
Zgodnie z instrukcją dla mod_authz_host :
Pozwalają zaprzeczyć
Po pierwsze, oceniane są wszystkie dyrektywy Allow; co najmniej jeden musi być zgodny lub żądanie zostanie odrzucone. Następnie oceniane są wszystkie dyrektywy Deny. Jeśli którykolwiek pasuje, żądanie jest odrzucane
Adres IP jest zgodny z dyrektywą Deny, więc czy nie należy odrzucić żądania?
Zgodnie z tabelą na stronie mod_authz_host ten adres IP powinien „Dopasować oba Zezwalaj i Odrzuć”, a zatem powinna obowiązywać reguła „Kontrola końcowego dopasowania: Odmowa”.
Dopasuj Zezwól, Odrzuć wynik Odrzuć, Zezwalaj na wynik Dopasuj Zezwól tylko Żądanie dozwolone Żądanie dozwolone Dopasowanie Odrzuć tylko Żądanie odrzucone Żądanie odrzucone Brak dopasowania Domyślnie do drugiej dyrektywy: Odmowa Domyślnie do drugiej dyrektywy: Dozwolone Dopasuj zarówno Zezwól, jak i Odrzuć kontrole dopasowania końcowego: Odmowa Kontrolki dopasowania końcowego: Dozwolone
Allow from 192.168.16.0/24
. Jak rozumiem dokumentację, każdy adres IP osoby żądającej w sieci 192.168.16.0/24 będzie pasował do tej instrukcji Allow, żądanie jest dozwolone.