Apache HTTP Server Version 2.2

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

#### Please note

This document refers to a legacy release (2.2) of Apache httpd. The active release (2.4) is documented here. If you have not already upgraded, please follow this link for more information.

You may follow this link to go to the current version of this document.

# 아파치 모듈 mod_authz_host

가능한 언어: en | fr | 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`

- Comments

## 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 | fr | ja | ko

## Comments

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.