리눅스에서 Apahce의 웹사이트 접근제한을 설정하는 방법

Apache 웹 서버를 운영하다 보면 특정 디렉토리나 파일에 대해 접근을 제한해야 할 때가 있습니다. 이럴 때 많이 사용하는 방법이 .htpasswd.htaccess 파일을 이용하는 것입니다. 이 글에서는 htpasswd, htaccess 명령어와 각 옵션들을 다루며, 예제를 통해 설정 방법을 안내해드리겠습니다.


1. .htpasswd 파일: 사용자 인증 파일

.htpasswd 파일은 사용자 이름과 비밀번호가 암호화되어 저장된 파일입니다. Apache는 이 파일을 참조해 특정 사용자의 인증을 요구할 수 있습니다.

.htpasswd 파일 생성하기

가장 먼저 htpasswd 명령어를 사용해 .htpasswd 파일을 생성해보겠습니다. 다음과 같이 터미널에서 명령어를 실행하세요.

htpasswd -c /경로/.htpasswd 사용자이름
  • -c 옵션 : 새로운 .htpasswd파일을 생성합니다. 기존에 파일이 있다면 덮어씁니다.
  • 사용자이름 : 등록하고자 하는 사용자 이름입니다.

예를 들어 admin이라는 사용자를 /etc/apache2/.htpasswd 파일에 등록하려면 다음과 같이 입력합니다:

htpasswd -c /etc/apache2/.htpasswd admin

명령어를 실행하면 비밀번호 입력 프롬프트가 뜨며, 입력한 비밀번호가 암호화되어 파일에 저장됩니다. 추가 사용자를 등록할 때는 -c 옵션을 제외하고 사용합니다. 그렇지 않으면 기존 파일이 덮어씌워지므로 주의하세요.

htpasswd /etc/apache2/.htpasswd [newuser]

2. .htaccess 파일 : 접근 제한 설정 파일

.htaccess 파일은 Apache 웹 서버에서 디렉토리별 설정을 할 수 있게 해줍니다. .htpasswd 파일과 함께 사용하면, 웹사이트의 특정 경로나 파일에 대해 인증을 요구하는 설정이 가능합니다.

기본 .htaccess 파일 예제

AuthType Basic
AuthName "Restricted Area"
AuthUserFile /경로/.htpasswd
Require valid-user
  • AuthType Basic : 기본 인증 방식을 사용합니다.
  • AuthName : 인증 창에 표시될 메시지입니다.
  • AuthUserFile : .htpasswd 파일의 절대 경로를 지정합니다.
  • Require valid-user : .htpasswd에 등록된 모든 사용자에게 접근을 허용합니다.

예시 : /var/www/html/secure/.htacccess 파일에 다음 내용을 추가합니다.

AuthType Basic
AuthName "Secure Area"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user

이제 /var/www/html/secure/.htaccess 경로에 접근하려고 하면 사용자 인증을 거쳐야 합니다.


3. 추가적인 설정과 활용 방법

  • 특정 사용자에게만 접근 허용 Require user 옵션을 사용하면 특정 사용자만 해당 디렉토리에 접근할 수 있습니다. 예를 들어, admin이라는 사용자에게만 접근을 허용하려면 아래와 같이 설정합니다.
    AuthType Basic
    AuthName "Restricted Area"
    AuthUserFile /경로/.htpasswd
    Require user admin
    
  • IP 주소로 접근 제한
    Order Deny,Allow
    Deny from all
    Allow from 192.168.1.100
    

    이 설정은 192.168.1.100 IP 주소에서만 접근을 허용합니다.


4. Apache 설정 파일에서 .htaccess 사용 허용하기

.htaccess 파일이 제대로 작동하려면 Apache 설정 파일에서 AllowOverride 설정을 활성해야 합니다. /etc/apache2/apache2.conf 파일을 열어 해당 디렉토리 설정에 AllowOverride All 옵션을 추가합니다.

<Directory /var/www/html>
    AllowOverride All
</Directory>

이제 .htaccess 파일을 통해 디렉토리별 접근 제한을 적용할 수 있습니다.


마무리

이와 같이 Apache 서버에서 .htpasswd.htaccess 파일을 이용하면 웹사이트의 특정 디렉토리나 파일에 대해 간편하게 접근 제한을 설정할 수 있습니다. 서버 보안을 가오하하고, 특정 사용자에게만 접근 권한을 부여할 때 유용하게 사용하실 수 있습니다.