주식 Apache httpd-2.2.3으로 CentOS 5.5를 실행하고 있습니다.
Location / server-status에서 mod_status 를 활성화 했습니다. 다음과 같은 방법으로이 단일 위치에 대한 액세스를 허용하고 싶습니다.
- 모두 거부
- 서브넷에서 허용 192.168.16.0/24
- 192.168.16.0/24 서브넷에있는 IP 192.168.16.100에서 거부하십시오.
1과 2는 쉽습니다. 그러나 "192.168.16.0/24에서 허용"이므로 192.168.16.100에서 거부 할 수 있습니까?
192.168.16.100에 대해 Deny 문을 추가하려고 시도했지만 작동하지 않습니다. 관련 구성은 다음과 같습니다.
<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 매뉴얼에 따르면 :
거부 허용
먼저 모든 허용 지시문이 평가됩니다. 하나 이상이 일치해야합니다. 그렇지 않으면 요청이 거부됩니다. 다음으로 모든 거부 지시문이 평가됩니다. 일치하는 경우 요청이 거부됩니다.
IP 주소는 Deny 지시문과 일치하므로 요청을 거부해서는 안됩니까?
mod_authz_host 페이지의 표에 따르면이 IP 주소는 "허용 및 거부 둘 다 일치"와 "최종 일치 제어 : 거부"규칙이 적용되어야합니다.
일치 허용, 결과 거부 거부, 결과 허용 일치 허용 요청 만 허용 요청 허용 경기 거부 만 요청 거부 요청이 거부되었습니다. 일치하지 않음 기본-두 번째 지시문 : 거부 기본값-두 번째 지시문 : 허용 허용 및 거부 최종 경기 컨트롤 모두 일치 : 최종 경기 종료 컨트롤 : 허용
Allow from 192.168.16.0/24
. 설명서를 이해하면 192.168.16.0/24 네트워크의 모든 요청자 IP가이 Allow 문과 일치하므로 요청이 허용됩니다.