Apache 웹서버에 Http Authentication 적용하기

Apache 웹서버에 Http Authentication 적용하기

작성시 참고한 자료 : How To Set Up Password Authentication with Apache on Ubuntu 14.04

https://www.digitalocean.com/community/tutorials/how-to-set-up-password-authentication-with-apache-on-ubuntu-14-04

일단 Http Authentication 개념을 알아보자.

0. 개념

HTTP 기본 인증 (HTTP basic authentication)
웹 클라이언트로부터 취득한 사용자 이름과 패스워드를 사용하여 웹 서버가 사용자를 인증하는 HTTP 기반의 인증 방법. 이 방법은 이름과 패스워드가 인터넷상에서 암호화되지 않은 텍스트로 전송되기 때문에 보안성이 없다.

출처 : 네이버 지식백과 (HTTP 기본 인증 (IT용어사전, 한국정보통신기술협회))

쉽게 설명하면, Http Authentication를 적용한 후 웹사이트에 접속하면 ID랑 PASSWORD 입력하라고 창이 뜬다.

1. 우분투에 apache2 랑 apache2-utils 를 설치한다.

$sudo apt-get update
$sudo apt-get install apache2 apache2-utils

2. 유저 패스워드 파일을 만든다.
아래와 같이 쓰면 .htpasswd 파일에 id와 password가 등록된다.
$sudo htpasswd -c /etc/apache2/.htpasswd testuser1

참고로 유저를 추가하려면 아래와 같이 쓰면 된다. (.htpasswd 파일에 로우 추가됨)

$sudo htpasswd /etc/apache2/.htpasswd testuser2

파일 읽었을 때 ($cat /etc/apache2/.htpasswd) 내용이 아래와 같이 나오면 된다.

testuser1:$apr1$lzxsIfXG$tmCvCfb49vpPFwKGVsuYz.
testuser2:$apr1$p1E9MeAf$kiAhneUwr.MhAE2kKGYHK.

3. 아파치 설정 세팅
sites-enabled 설정을 수정한다.

$sudo vi /etc/apache2/sites-enabled/000-default.conf

기존 내용이 아래와 같다면,

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

아래와 같이 수정하면 된다.

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    <Directory “/var/www/html”>
        AuthType Basic
        AuthName “Restricted Content”
        AuthUserFile /etc/apache2/.htpasswd
        Require valid-user
    </Directory>
</VirtualHost>

4. 접근 설정 세팅

4-1. /etc/apache2/apache2.conf 를 아래와 같이 수정한다.

(AllowOverride 뒤의 단어를 “All”로 고치는게 포인트다.)

$sudo vi /etc/apache2/apache2.conf

(전략)
<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>
(후략)

4-2. /var/www/html/.htaccess 를 아래와 같이 수정한다.

기존 내용이 있다면 아래 쪽에 붙여넣자.

$sudo vi /var/www/html/.htaccess

AuthType Basic
AuthName “Restricted Content”
AuthUserFile /etc/apache2/.htpasswd
Require valid-user

5. 다 됐으면 아파치 재기동(리부팅)한다.
$sudo service apache2 restart

웹사이트 재접속하면 적용되어 있을 것이다.