Wednesday, March 21, 2012

Apache에서 특정 디렉토리 및 파일에 접근 제한 걸기


서버를 운영하다보면 특정 디렉토리나 파일에 대해서는 인증된 유저나 특정 대역의 IP에 대해서만 접근하게 할 필요가 생기게 된다.

디렉토리에 대해서 접근을 제어하고자 할때에는
1. .htaccess
2. httpd.conf의 <Directory>
를 사용할 수 있으며
파일에 대해서 접근을 제어하고자 할때에는
1. .htaccess
2. httpd.conf의 <Location> 또는 <Files>
을 사용하면 된다.

다음은 접근관련에 사용되는 예제이다. <Directory> 설정만 직접 사용하고 있을뿐
다른 제어방법은 보장은 못하지만 잘될것이라고 본다. ^^;;
보다 자세한 방법은 아파치 How-to를 참고하시길...

1. .htaccess 방법
htpasswd를 사용하여 .htaccess또는 임의의 파일에 접근을 허락할 사용자(id,pw)를 생성한다. (인증관련된 보다 자세한 정보는 여기)

AuthName "접근제한 디렉토리 또는 파일입니다."
AuthType Basic
AuthUserFile /htpasswd/파일있는/경로/.htpasswd
Require valid-user

2. Directory/Location/Files 방법
현재 예제에서는 IP로 접근을 제한하였지만 IP대신에 .htpassed관련 내용을 삽입하면 htpasswd를 사용하여 접근을 제어 할 수 있다.

<Directory "/접근제한을/설정하고자하는/디렉토리/이름">
    AllowOverride AuthConfig
    Order deny,allow
    Deny from all
    Allow from 192.168.0.1
</Directory>


<Location "/접근제한을/설정하고자하는/디렉토리/이름">
   AllowOverride AuthConfig
   Order deny,allow
   Deny from all
   Allow from 192.168.0.1
</Location>


<Files "접근제한을 설정하고자하는 파일이름">
   Order deny,allow
   Deny from all
   Allow from 192.168.0.1
</Files>
Files를 사용하는 경우 아무런 제한없이 "접근제한을 설정하고자하는 파일이름"으로 했을 경우 디렉토리와 상관없없이 모든 동일한 이름을 가지는 파일의 접근을 제한하게 된다. <Directory>와 함께 사용하면 특정 위치의 파일에 대해서만 접근을 제어하게 된다.


htpasswd 사용 예
.htpasswd를 처음 생성하는 경우
htpasswd –c /저장할/디렉토리/경로/.htpasswd username
.htpasswd에다가 사용자를 추가하는 경우
htpasswd /저장할/디렉토리/경로/.htpasswd username

.htpasswd로 예를 들었지만 사용자 임의로 파일이름을 생성하여도 무관하다.

No comments: