mod_authz_host - Apache HTTP Server Version 2.2

Apache Server 2.2

<-

아파치 모듈 mod_authz_host

이 문서는 최신판 번역이 아닙니다. 최근에 변경된 내용은 영어 문서를 참고하세요.
설명:호스트 (이름이나 IP 주소)를 사용한 그룹 권한부여
상태:Base
모듈명:authz_host_module
소스파일:mod_authz_host.c
지원:아파치 2.1 이후부터

요약

<Directory>, <Files>, <Location> 섹션과 .htaccess 파일에서 서버의 특정 부분의 접근을 제어하기위해 mod_authz_host가 제공하는 지시어를 사용한다. 클라이언트의 호스트명, IP 주소, 환경변수에 기록된 요청의 특성에 따라 접근을 제어한다. AllowDeny 지시어는 어떤 클라이언트가 서버에 접근할 수 있는지를 지시하고, Order 지시어는 기본적으로 접근을 허용할지 거부할지 여부와 어떻게 Allow 지시어와 Deny 지시어가 서로 영향을 미치는지 결정한다.

호스트기반 접근제한과 암호기반 인증을 동시에 사용할 수도 있다. 이 경우 Satisfy 지시어를 사용하여 어떻게 두 제한이 서로 영향을 미치는지 결정한다.

일반적으로 접근제한 지시어는 (GET, PUT, POST 등) 모든 메서드에 적용되며, 이 행동은 대부분의 경우 바람직하다. 그러나 <Limit> 섹션안에 지시어를 사용하여 특정 메서드에만 제한할 수 있다.

top

Allow 지시어

설명:서버의 일부에 접근할 수 있는 호스트를 지정한다
문법: Allow from all|host|env=env-variable [host|env=env-variable] ...
사용장소:directory, .htaccess
Override 옵션:Limit
상태:Base
모듈:mod_authz_host

Allow 지시어는 어떤 호스트가 서버의 일부에 접근할 수 있는지 지시한다. 호스트명, IP 주소, IP 주소영역, 환경변수에 기록된 다른 특성에 따라 접근을 조절할 수 있다.

이 지시어의 첫번째 아규먼트는 항상 from이다. 다음 아규먼트에는 세가지 형식이 있다. Allow from all을 사용하면, 아래에서 설명할 DenyOrder 지시어 설정에 따라 모든 호스트의 접근을 허가한다. 특정 호스트만 서버로 접근을 허용하려면 다음과 같은 형식으로 host를 지시할 수 있다:

호스트명 (일부)

예제:

Allow from apache.org

호스트명이 이 문자열과 같거나 이 문자열로 끝나면 접근을 허용한다. 그래서 이 경우 foo.apache.org는 해당되고, fooapache.org는 해당되지 않는다. 이 설정을 사용하면 아파치는 HostnameLookups 지시어 설정과 관계없이 클라이언트 IP 주소를 가지고 중복-역 DNS 검색을 한다. 즉, 호스트명을 찾기위해 IP 주소를 역DNS 검색을 한 후, 다시 호스트명으로 검색하여 원래 IP 주소와 일치하는지 확인한다. 결과가 같고 호스트명이 설정값에 해당하면, 접근을 허용한다.

IP 주소 전체

예제:

Allow from 10.1.2.3

접근을 허가하는 호스트의 IP 주소

IP 주소 일부

예제:

Allow from 10.1

서브네트워크로 제한하기위해 IP 주소 앞의 1에서 3 바이트.

네트워크/넷매스크 쌍

예제:

Allow from 10.1.0.0/255.255.0.0

네트워크 a.b.c.d와 넷매스크 w.x.y.z. 더 세밀하게 서브네트워크로 제한할때 사용한다.

네트워크/nnn CIDR 규약

예제:

Allow from 10.1.0.0/16

앞의 경우와 같지만, 상위 nnn개 비트 값이 1인 넷매스크를 사용한다.

마지막 세가지 예는 정확히 동일한 호스트들을 지칭한다.

다음과 같이 IPv6 주소와 IPv6 서브네트워크를 지정할 수도 있다:

Allow from 2001:db8::a00:20ff:fea7:ccea
Allow from 2001:db8::a00:20ff:fea7:ccea/10

Allow 지시어 아규먼트의 세번째 형식은 환경변수 유무에 따라 접근을 제어한다. Allow from env=env-variable을 사용하면, env-variable 환경변수가 정의된 경우 접근을 허가한다. mod_setenvif가 제공하는 지시어를 사용하여 클라이언트 요청의 특성에 따라 자유롭게 환경변수를 설정할 수 있다. 그러므로 이 지시어를 사용하여 클라이언트 User-Agent (브라우저 종류), Referer, 다른 HTTP 요청 헤더에 따라 접근을 허가할 수 있다.

예제:

SetEnvIf User-Agent ^KnockKnock/2\.0 let_me_in
<Directory /docroot>
Order Deny,Allow
Deny from all
Allow from env=let_me_in
</Directory>

이 경우 user-agent 문자열이 KnockKnock/2.0으로 시작하는 브라우저의 접근은 허용하고, 나머지는 모두 거부한다.

top

Deny 지시어

설명:서버 접근을 거부할 호스트를 지정한다
문법: Deny from all|host|env=env-variable [host|env=env-variable] ...
사용장소:directory, .htaccess
Override 옵션:Limit
상태:Base
모듈:mod_authz_host

이 지시어를 사용하여 호스트명, IP 주소, 환경변수에 따라 서버 접근을 제한할 수 있다. Deny 지시어의 아규먼트는 Allow 지시어와 동일하다.

top

Order 지시어

설명:기본적으로 접근을 허용할지 거부할지 여부와 AllowDeny 처리순서를 정한다.
문법: Order ordering
기본값:Order Deny,Allow
사용장소:directory, .htaccess
Override 옵션:Limit
상태:Base
모듈:mod_authz_host

Order 지시어는 기본적으로 접근을 허용할지 거부할지 여부와 AllowDeny 지시어 처리순서를 정한다. ordering은 다음 중 하나이다

Deny,Allow
Deny 지시어를 Allow 지시어 보다 먼저 살펴본다. 그리고 기본적으로 접근을 허용한다. DenyAllow 지시어에 해당되지 않는 클라이언트의 접근을 허용한다.
Allow,Deny
Allow 지시어를 Deny 지시어 보다 먼저 살펴본다. 그리고 기본적으로 접근을 허용하지 않는다. DenyAllow 지시어에 해당되지 않는 클라이언트의 접근을 거부한다.
Mutual-failure
Deny 목록에는 안나오고 Allow 목록에만 나오는 호스트만 접근을 허용한다. Order Allow,Deny와 같은 일을 하기때문에 사용하지 않는다.

키워드는 쉼표로만 구분한다; 사이에 공백이 있으면 안된다. 모든 경우 AllowDeny 모두 살펴봄을 명심하라.

아래 예에서 apache.org 도메인의 모든 호스트의 접근은 허용하지만, 다른 호스트는 모두 거부한다.

Order Deny,Allow
Deny from all
Allow from apache.org

아래 예에서 foo.apache.org 하위도메인에 있는 호스트만 거부하고, apache.org 도메인에 있는 호스트는 모두 접근을 허용한다. 기본적으로 접근을 거부하기때문에 apache.org 도메인에 속하지 않는 호스트는 접근을 거부한다.

Order Allow,Deny
Allow from apache.org
Deny from foo.apache.org

반대로 위의 OrderDeny,Allow로 변경하면, 모든 호스트의 접근을 허용한다. 설정파일에서 지시어가 나오는 순서와 관계없이 Allow from apache.org를 제일 마지막에 처리하여 Deny from foo.apache.org의 효과를 무시하기 때문이다. 또, 기본적으로 접근을 허가하므로 apache.org 도메인에 속하지 않는 호스트도 모두 접근을 허가한다.

Order 지시어는 기본적으로 접근을 허용할지 거부할지를 정하기때문에 AllowDeny 지시어를 사용하지 않아도 접근가능 여부에 영향을 준다. 예를 들어,

<Directory /www>
Order Allow,Deny
</Directory>

는 기본적으로 접근을 거부하기때문에 /www 디렉토리에 대한 모든 접근을 거부한다.

Order 지시어가 정하는 접근 지시어 처리순서는 해당 서버설정 처리단계에만 영향을 준다. 즉, Order 지시어 설정과 관계없이 <Location> 섹션 안에 있는 AllowDeny 지시어는 <Directory> 섹션이나 .htaccess 파일에 있는 AllowDeny 지시어를 모두 처리한 후에 처리한다. 설정 섹션들이 결합하는 방법에 대해서는 어떻게 Directory, Location, Files 섹션이 동작하나 문서를 참고하라.