Apache | 액세스(Access) 권한 | IP 주소 제한 및 사용자 인증의 조합


“Require"를 사용하여 IP 주소 및 도메인의 제한을 설정하는 방법과 사용자명과 비밀번호를 사용하는 사용자 인증을 수행하는 방법을 하나의 디렉토리에 모두 지정할 수 있다.

<Directory "${SRVROOT}/htdocs/admin">
    Require all granted
    Require ip 192.168.1.0/24
		
    AuthType Basic
    AuthName "사용자명과 비밀번호를 입력하세요."
    AuthUserFile "C:/apache/passwd/passfile"
    Require valid-user
</Directory>

이렇게 두 방식으로 액세스 제한이 설정되어 있으면, 기본적으로 두 조건을 모두 만족하는 경우에만 액세스가 허용된다. 즉, IP 주소도 지정 주소에서 접근이면서, 사용자 인증을 통과한 경우를 말한다.

Apache에서는 어느 하나의 조건만 맞다면 액세스를 허용하도록 설정하는 것도 가능하다. 즉, IP 주소가 조건에 맞는다면 무조건 접근을 허용하고 지정된 IP 주소가 아니라면 사용자 인증해야 한다. 이는 사내에서 자유롭게 볼 수 있지만, 외부에서 볼 경우에 액세스 인증이 해야만 하는 경우를 생각할 수 있다.

설정하려면 “<RequireAny>“으로 설정한다.

<RequireAny>
....
</RequireAny>

그리고 “<RequireAll>“로 설정하면, 특별히 아무것도 지정되지 않은 경우와 동일하게 두 조건이 충족된 경우에만 액세스가 허용된다.

<RequireAll>
...
</RequireAll>

이는 다음과 같이 작성한다.

<Directory "${SRVROOT}/htdocs/admin">
    <RequireAll>
    Require all granted
    Require ip 192.168.1.0/24
		
    AuthType Basic
    AuthName "사용자명과 비밀번호를 입력하세요."
    AuthUserFile "C:/apache/passwd/passfile"
    Require valid-user
    </RequireAll>
</Directory>