Apache HTTP Server Version 2.2

Apache > HTTP Server > Documentation > Version 2.2 > 모듈

# 아파치 모듈 mod_authz_host

가능한 언어: en | ja | ko

이 문서는 최신판 번역이 아닙니다. 최근에 변경된 내용은 영어 문서를 참고하세요.

설명: | 호스트 (이름이나 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>` 섹션안에 지시어를 사용하여 특정 메서드에만 제한할 수 있다.

### 지시어들

### 참고

- `Satisfy`
- `Require`

## 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 섹션이 동작하나 문서를 참고하라.

가능한 언어: en | ja | ko