가끔 웹 사이트를 특정 사용자 그룹에게만 공개되게끔 만들어야 할 경우가 있습니다.
친구들에게만 공개하고 싶은 블로그라던가, 대학에서 같은 수업을 듣는 사람들에게만 공개할 필요가 있는 게시판 같은 경우가 이에 해당됩니다.
그러면서도 태터툴스 유저라면 한번은 겪어봤을 패키지 설치의 어려움이라던가 웹 프로그래밍 지식의 부족, 혹은 회원가입에의 거부감 때문에 때문에 거창한 회원가입형 방식보다는 간단한 인증만으로 웹 페이지를 볼 수 있게 만들 필요성이 있는 경우가 있습니다.
이 경우 간단하게 이용할 수 있을 법한 인증을 해야만 접속할 수 있게 설정된 웹 디렉토리를 어디선가 본 기억이 있어 찾아보았습니다.
일반적으로 웹 디렉토리나 특정 페이지를 인증해야만 볼 수 있게 만드는 인증방식은 세 가지가 있다고 하는데, 그 중 제가 본 것은 Apache Web Server 에서 서버가 인증하는 방식으로 분류되더군요.
웹 디렉토리의 인증을 서버인증방식으로 세팅하려 관련문서를 검색해 보았더니 전부 httpd.conf 파일을 이용하여 웹 서버 차원에서 세팅하거나 텔넷을 이용하여 .htaccess파일을 수정하고 .htpasswd파일을 생성하는 방식이었습니다.
자기 웹 서버를 운영하는 것도 아니고 텔넷 사용이 가능한 것도 아닌 무료 호스팅 사용자가 적용할 수 있는 방법은 아니더군요.
일전에 FTP를 이용하여 .htaccess 파일을 수정했던 방식으로 텔넷 사용이 불가한 무료 호스팅 이용자라도 사용할 수 있는 방법이 있겠다 싶어 구성을 해 봤습니다. (.htaccess의 사용과 편집은 이 곳을 참조하십시오.)
먼저, .htaccess파일을 수정하여 .htaccess가 있는 디렉토리와 그 하위 디렉토리를 인증을 받아야만 접근할 수 있는 방식으로 설정합니다.
FTP를 이용하여 .htaccess를 편집, 다음 내용을 추가합니다.
AuthName "*인증명*"
AuthType Basic
AuthUserFile /*디렉토리의 절대경로*/.htpasswd
AuthGroupFile /dev/null
ErrorDocument 401
require valid-user
AuthName "*인증명*" 에서 *인증명* 부분에는 id/pass를 입력하는 대화상자의 명칭을 입력합니다.
"인증테스트" 라고 입력하면 대화상자 제목 표시줄 부분에 인증테스트 라고 표시됩니다.
"Pax의 비밀페이지에 오신 것을 환영합니다" 라고 적으면
Pax 의 비밀페이지에 오신 것을 환영합니다 라고 나오겠지요.
AuthUserFile /
*디렉토리의 절대경로*/.htpasswd 에서 .htpasswd는 설정된 id/pass를 저장해두는 파일입니다. 이 파일은 기본적으로 ID와 암호화된 PASSWORD로 이루어져 있습니다.
텔넷이 사용가능한 유료 사용자라면 명령어를 이용해 쉽게 만들 수 있습니다만, 그것이 불가능한 경우를 상정하고 있으므로 사용자가 .htpasswd를 직접 만드는 방법을 뒤에서 설명하겠습니다.
여기에서 *디렉토리의 절대경로* 부분이 제일 중요합니다.
웹 서버에서의 디렉토리의 절대경로란 http:// 이하로 표시되는 URL과는 다른, 서버 내에서의 디렉토리 경로를 뜻합니다.
이 부분은 웹 호스팅사마다 설정이 다르므로 자신이 받는 웹 호스팅 서비스 제공사 게시판의 FAQ란이나 Q/A란을 통해 검색하거나 문의해 확인해보시기 바랍니다.
제가 테스트를 했던 경우, 절대경로는
/web/home/paxilus/html/test/.htpasswd
였습니다.
이것은 제가 이용하는 웹 호스팅 서버의 각 사용자의 개인 디렉토리 위치가 서버의 /web/home 디렉토리 이하에 있고 그 아래 제 개인 디렉토리인 /paxilus가 있으며 그 아래 웹페이지 구성 요소가 들어가는 /html 디렉토리가 있다는 의미입니다. 제가 개인 계정에서 test 디렉토리를 생성하여 테스트를 하였으므로 최종적으로 .htpasswd의 위치는
/web/home/paxilus/html/test/.htpasswd
로 표시되는 것입니다.
만약 test 가 아니라 secret 이란 디렉토리를 생성하여 만들었다면
/web/home/paxilus/html/secret/.htpasswd
로 표시될 것입니다.
여기서 주의할 것은,
.htaccess 파일과 .htpasswd 파일은 반드시 인증방식으로만 접근할 수 있게 만들고 싶은 디렉토리에 있어야 한다는 것입니다. 그리고 Apache Web Server와 .htaccess 파일의 특성상 대상 디렉토리를 포함한 하위 디렉토리 전체가 인증방식으로만 접근할 수 있게 됩니다.
그리고 .htpasswd 파일을 만들어 보겠습니다.
.htpasswd 라는 윈도우사용자에겐 낯선 이름의 암호화가 필요한 파일이라니 뭔가 거창한 바이너리 파일이 아닐까 생각하기 쉽습니다만, 사실 간단한 텍스트파일에 지나지 않습니다.
메모장등의 텍스트 편집기를 이용해 .htpasswd 라는 이름의 파일을 만들어 사용할 ID:PASS의 형태로 내용을 적어 넣습니다.
예를 들어, ID를 test로, PASS를 user로 하고자 한다면 PASS는 ID는 test로 PASS는 리눅스/유닉스에서 사용하는 암호화의 형태(이 암호화의 명칭을 모르겠습니다. 아시는 분은 댓글 부탁드립니다.)로 암호화해서 가운데 콜른(:)을 붙여 적어넣으면 됩니다.
이 때, 암호화 할 수단으로
.htpasswd Content Generator (
http://www.flash.net/cgi-bin/pw.pl) 같은 웹사이트를 이용합니다. 이런 웹사이트는 Google 에서 .htpasswd로 검색해보면 많이 나옵니다.
ID, PASSWORD를 입력 후 "Encrypt" 클릭
생성된 라인을 drag 하여 복사합니다
그리고 .htpasswd 에 붙여넣기합니다
여기서 만약 id/pass를 user:test 외에 여러 개 추가하고 싶으시다면 앞과 같은 방식으로 만들어진 id/pass를 각 줄마다 하나씩 입력해 넣으면 됩니다.
이후
.htpasswd 파일을 이전에 편집한 .htaccess 파일이 있는 디렉토리에 FTP를 통해서 업로드하면 이제 디렉토리 인증 설정은 끝난 것입니다.
*참고사항
이 인증방식은 사용자 로그아웃이 없으며 서버 설정에 따라 다르지만 일반적으로 로그아웃 타임이 30분정도로 설정되어 있습니다.
즉, 자신이 인증해 페이지를 열어본 그 PC로는 창을 닫고서도 30분 이내에 브라우저의 주소창에 그 인증이 필요한 디렉토리의 주소만 입력하면 누구라도 그 페이지의 내용을 인증없이 볼 수 있습니다. PC방 등의 다수가 이용하는 PC에서는 그 페이지를 이용하지 않거나 30분 이후 다시 ID/PASS 입력창이 뜨는 것을 확인하고 자리를 비우십시요.
사용자 로그아웃이 필요하다면 다른 방식의 인증을 이용하는 편이 좋습니다.
이 인증방식의 특성상 보안을 위해서는 ID/PASS를 주기적으로 바꾸고 메일링리스트를 구성해서 찾아오는 사람들에게 변경된 ID/PASS를 알리는 것이 중요합니다.
서버 관리자가 .htpasswd 파일의 사용을 제한해놓은 경우가 있습니다.
이 경우엔 위 방법을 이용할 수 없습니다.
자신의 웹 계정의 태터툴스가 설치된 디렉토리에 인증 설정을 해놓는다면 자신의 블로그 전체를 검색엔진에도 노출되지 않고 누군가가 파일링크를 빼가 트래픽을 뺏기는 일도 없는 블로그로 만들 수 있습니다.
다만, ID/PASS를 아는 지인들만 찾아오는 블로그가 되겠지요. :)
그리고, 당연히 Tistory 에서는 사용 불가능합니다.
꼼수로 사용할 수 있는 방법이 있을지도 모르겠지만, Tistory 의 운영방식에 반하므로 그러지 않는게 좋겠습니다.