Apache HTTP Server Version 2.2
아파치 모듈 mod_authz_host
설명: | 호스트 (이름이나 IP 주소)를 사용한 그룹 권한부여 |
---|---|
상태: | Base |
모듈명: | authz_host_module |
소스파일: | mod_authz_host.c |
지원: | 아파치 2.1 이후부터 |
요약
<Directory>
,
<Files>
,
<Location>
섹션과 .htaccess
파일에서 서버의 특정 부분의 접근을 제어하기위해
mod_authz_host
가 제공하는 지시어를 사용한다.
클라이언트의 호스트명, IP 주소, 환경변수에 기록된 요청의 특성에 따라
접근을 제어한다. Allow
와 Deny
지시어는 어떤
클라이언트가 서버에 접근할 수 있는지를 지시하고, Order
지시어는 기본적으로
접근을 허용할지 거부할지 여부와 어떻게 Allow
지시어와 Deny
지시어가 서로 영향을
미치는지 결정한다.
호스트기반 접근제한과 암호기반 인증을 동시에 사용할 수도
있다. 이 경우 Satisfy
지시어를 사용하여 어떻게 두 제한이 서로 영향을 미치는지
결정한다.
일반적으로 접근제한 지시어는 (GET
,
PUT
, POST
등) 모든 메서드에 적용되며,
이 행동은 대부분의 경우 바람직하다. 그러나 <Limit>
섹션안에
지시어를 사용하여 특정 메서드에만 제한할 수 있다.
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
을
사용하면, 아래에서 설명할 Deny
와 Order
지시어 설정에
따라 모든 호스트의 접근을 허가한다. 특정 호스트만 서버로
접근을 허용하려면 다음과 같은 형식으로 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
으로
시작하는 브라우저의 접근은 허용하고, 나머지는 모두 거부한다.
Deny 지시어
설명: | 서버 접근을 거부할 호스트를 지정한다 |
---|---|
문법: | Deny from all|host|env=env-variable
[host|env=env-variable] ... |
사용장소: | directory, .htaccess |
Override 옵션: | Limit |
상태: | Base |
모듈: | mod_authz_host |
이 지시어를 사용하여 호스트명, IP 주소, 환경변수에 따라
서버 접근을 제한할 수 있다. Deny
지시어의 아규먼트는 Allow
지시어와 동일하다.
Order 지시어
설명: | 기본적으로 접근을 허용할지 거부할지 여부와
Allow 와 Deny
처리순서를 정한다. |
---|---|
문법: | Order ordering |
기본값: | Order Deny,Allow |
사용장소: | directory, .htaccess |
Override 옵션: | Limit |
상태: | Base |
모듈: | mod_authz_host |
Order
지시어는 기본적으로 접근을
허용할지 거부할지 여부와 Allow
와 Deny
지시어 처리순서를
정한다. ordering은 다음 중 하나이다
Deny,Allow
Deny
지시어를Allow
지시어 보다 먼저 살펴본다. 그리고 기본적으로 접근을 허용한다.Deny
나Allow
지시어에 해당되지 않는 클라이언트의 접근을 허용한다.Allow,Deny
Allow
지시어를Deny
지시어 보다 먼저 살펴본다. 그리고 기본적으로 접근을 허용하지 않는다.Deny
나Allow
지시어에 해당되지 않는 클라이언트의 접근을 거부한다.Mutual-failure
Deny
목록에는 안나오고Allow
목록에만 나오는 호스트만 접근을 허용한다.Order Allow,Deny
와 같은 일을 하기때문에 사용하지 않는다.
키워드는 쉼표로만 구분한다; 사이에 공백이 있으면
안된다. 모든 경우 Allow
와 Deny
모두 살펴봄을
명심하라.
아래 예에서 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
반대로 위의 Order
를
Deny,Allow
로 변경하면, 모든 호스트의 접근을
허용한다. 설정파일에서 지시어가 나오는 순서와 관계없이
Allow from apache.org
를 제일 마지막에 처리하여
Deny from foo.apache.org
의 효과를 무시하기
때문이다. 또, 기본적으로 접근을 허가하므로
apache.org
도메인에 속하지 않는 호스트도 모두
접근을 허가한다.
Order
지시어는 기본적으로 접근을
허용할지 거부할지를 정하기때문에 Allow
나 Deny
지시어를 사용하지
않아도 접근가능 여부에 영향을 준다. 예를 들어,
<Directory /www>
Order Allow,Deny
</Directory>
는 기본적으로 접근을 거부하기때문에
/www
디렉토리에 대한 모든 접근을 거부한다.
Order
지시어가 정하는 접근 지시어
처리순서는 해당 서버설정 처리단계에만 영향을 준다. 즉,
Order
지시어 설정과 관계없이 <Location>
섹션 안에
있는 Allow
나
Deny
지시어는
<Directory>
섹션이나 .htaccess
파일에 있는 Allow
와 Deny
지시어를 모두 처리한
후에 처리한다. 설정 섹션들이 결합하는 방법에 대해서는 어떻게 Directory, Location, Files
섹션이 동작하나 문서를 참고하라.