뽀로

사용자가 만드는 파일을 이용한 인증

· 19년 전 · 1968
이번 강좌는 웹페이지에 인증을 하는 법을 해보려 한다. 특정 page를 가보면(특히 s*x site) ID와 Passwd를 묻는 창을 본 경험을 한 적이 있을 것이다. 이 창은 cgi나 java가 아닌 apache web server자체의 인증절차와 root의 권한이 없는 사용자가 인증절차를 하는 방법에 의해 인증을 걸치게 되는 방법이다. 먼저 두번째의 root권한이 없는 사용자가 할수 있는 인증절차를 먼저 다루겠다. 이 방법은 .htaccess라는 file과 .htpasswd라는 file로서 인증 절차를 거치게 하는 것이다. 이 방법은 NCSA나 apache등의 web server demon에서 사용가능하며 보안이나 다른 이유로 인하여 httpd의 설정 file중 하나인 srm.conf file에서 AccessFileName을 .htaccess에서 다른 이름으로 바꾼 경우 바구어준 이름을 access file로 사용해야 한다. 또한 access.conf에서 보안을 걸려는 directory에 설정을 해놓았다면 AllowOverride를 None으로 두면 .htaccess file을 인식하지 못한다.

1. .htaccess file

먼저 vi나 pico로 .htaccess라는 file을 만든다. 이 파일은 vi나 pico같은 Unix또는 linux의 editer로 만드는 것이 좋다. script로 읽혀 지는 것이기 때문에 web server에서 Server Error를 유발할 수도 있다. 물론 아무 편집기로 만들어도 상관은 없지만 만약 다른 편집기로 작성을 한다면 Upload시에 꼭 아스키 모드로 올려야만 한다.
이 file에는 AuthUserFile과 AuthType, AuthName의 세가지의 지시자를 지정해야 한다. AuthGroupFile은 선택적이기 때문에 신경을 쓰지 않아도 상관없다.

아래는 .htaccess file의 예이다.

AuthUserFile /home/nude/cgi-bin/.htpasswd
AuthGroupFile /home/nude/cgi-bin/.htgroup
AuthName N.etwork U.sers of D.evelopment & E.ducations
AuthType Basic

<Limit GET POST>
require valid-user
</Limit>

AuthUserFile은 .htpasswd file의 물리적 경로를 써준다. 즉 인증을 하기위한 directory에 .htaccess와 .htpasswd가 있어야 한다는 말이다.


AuthName은 인증 창이 뜰때 그곳에 나타내는 인증 그룹 Name정도라고 생각하면 된다. 주의 할것은 apache 1.3 version부터는

AuthName "N.etwork U.sers of D.evelopment & E.ducations"

의 형식처럼 따옴표를 꼭 붙여 줘야만 한다. 따옴표를 빠뜨리면 Internal server error가 발생을 하게된다.

AuthType은 Server가 사용하는 인증방식을 결정하는데 Basic과 Digest 두개의 option이 있다. Basic은 표준 Unix 암호화 패스워드 체계를 사용하며 AuthUserFile 지시자를 사용한다. Digest는 더 안전한 MD5암호화를 사용하지만 대부분의 브라우져에서 지원을 안하므로 intranet에서나 사용이 된다.

<Limit GET POST> ~ </Limit> 부분에서는 접근 제한을 지정할 수 있다. 위의 예제에 나와 있는 require valid-user는 .htpasswd file에 등록되어 있는 user만 허락한다는 의미이다. 이외에도 telnet 접근을 막을 때 사용하는 hostallow나 hostdeny file과 같은 용도로 사용할 수도 있다. .htpasswd file에 등록된 user중에 210.124.24.*의 IP address나 netusers.net이라는 domain을 사용하는 host에서만 접속을 하게 하려면 아래의 예와 같이 하면 된다.

AuthUserFile /home/nude/cgi-bin/.htpasswd
AuthGroupFile /home/nude/cgi-bin/.htgroup
AuthName "N.etwork U.sers of D.evelopment & E.ducations"
AuthType Basic

<Limit GET POST>
order deny,allow
deny from all
allow from 210.124.24 or netusers.net
require valid-user
</Limit>

여기서 약간 독특하게 id, password 또는 대역폭 접근중 하나만 통과하면 인증을 통과하게 하넌 법을 보겠다. 위의 경우에는 둘다 참이여야 하지만 이 경우는 둘중의 하나만 참이면 인증이 되는 것이다.

여기서 .htaccess에서 사용되는 새로운 지시자가 Satisfy를 설명한다. 이 지시자를 지정안했을 경우 Satisfy의 값은 default로 all 이 된다. 이 것은 위의 경우에 처럼 둘다 참이어야 인증이 되는 것이다. 그럼 둘중에 하나만 참 일경우 인증을 하기 위해서는 Satisfy의 값을 any로 지정을 한다. 그러면 id, password 나 지정된 대역폭에서 접근을 할경우 인증이 가능하게 되는 것이다. 아래의 예를 참 고하라.

Satisfy any
AuthUserFile /home/nude/cgi-bin/.htpasswd
AuthGroupFile /home/nude/cgi-bin/.htgroup
AuthName "N.etwork U.sers of D.evelopment & E.ducations"
AuthType Basic

<Limit GET POST>
order deny,allow
deny from all
allow from 210.124.24 or netusers.net
require valid-user
</Limit>

2. .htpasswd file 만들기

이 file은 /usr/bin/htpasswd 또는 /usr/sbin/htpasswd file을 이용해서 만든다. file의 이름을 .htpasswd로 할 필요는 없으나 만약 다른 이름을 사용한다면 .htaccess file의 AuthUserFile에 지정한 file이름과 동일하게 해 줘야 한다.
vi나 pico로 만든 또는 Upload를 한 내용이 없는 .htpasswd file을 password를 걸 directory에 위치시킨 후 아래의 명령을 실행을 한다.

htpasswd -c .htpasswd oops(User ID)

물론 여러분의 경우에는 root의 권한이 없기 때문에 자신의 directory로 /usr/sbin/htpasswd라는 file을 복사해 와야 한다. 그리고 .htpasswd file을 처음 만드는 것이기 때문에 반드시 -c option을 지정해야 한다.

3. .htpasswd file에 다른 user 추가하기

.htpasswd file에 다른 user의 ID와 password를 추가 하기 위해서는 아래의 명령을 수행한다. 주의 할 것은 한번 만들어진 .htpasswd file에 또 -c option을 주면 새로운 .htpasswd file을 생성하게 된다.

htpasswd .htpasswd toyer(User ID)

4. Error Message

인증시 server error가 나는 경우는 .htaccess file이 잘못 작성된 경우가 많다. vi나 pico가 아닌 다른 edit(Unix나 Linux의 edit가 아닌 것들)를 이용해서 만들어 Upload를 했을 경우 눈에 보이지 않는(vi에서 보면 ^M으로 나타나는) code가 들어가는 경우가 발생하는데 이것이 원인이 될수도 있다. 설치를 했는데 인증이 되지를 않고 해당 페이지가 바로 출력이 되는 경우는 /etc/httpd/conf/srm.conf file 또는 /usr/local/etc/httpd/conf/srm.conf file에서 AccessFileName의 이름이 .htaccess가 아닌 경우 또는 access.conf의 file에서 해당 디렉토리 관련 지정에서 AllowOverride를 None으로 둔 경우 이다.
인증 창이 뜨는데도 passwd가 적용이 안되는 경우에는 .htpasswd file을 다른 위치에 두었거나 .htaccess에서 경로 지정이 잘못 되었을 경우이다.

7. Enterprise Server

.htaccess file이 아니라 .nsconfig file을 사용하며 설정은 아래와 같이 하면 된다. 단 dynamic configuration 에서 디렉토리와 .nsconfig 파일, search 등을 설정을 해줘야 한다. 그렇지 않으면, .nsconfig file만 가지고는 소용이 없다. -박대권님 참조글 ^^

<Files *>
RequireAuth userfile=/home/nude/cgi-bn/.nspasswd realm="N.etwork U.sers of D.evelopment & E.ducations"
</Files><div class='small'>[이 게시물은 관리자님에 의해 2011-10-31 17:32:05 Linux에서 이동 됨]</div>
|
댓글을 작성하시려면 로그인이 필요합니다. 로그인

프로그램

+
제목 글쓴이 날짜 조회
19년 전 조회 1,877
19년 전 조회 1,935
19년 전 조회 3,130
19년 전 조회 2,346
19년 전 조회 3,604
19년 전 조회 2,534
19년 전 조회 1,837
19년 전 조회 2,445
19년 전 조회 1,706
19년 전 조회 1,386
19년 전 조회 1,517
19년 전 조회 1,786
19년 전 조회 1,559
19년 전 조회 1,764
19년 전 조회 1,549
19년 전 조회 1,930
19년 전 조회 1,826
19년 전 조회 1,425
19년 전 조회 1,428
19년 전 조회 1,338
19년 전 조회 1,212
19년 전 조회 1,389
19년 전 조회 1,958
19년 전 조회 2,380
19년 전 조회 2,855
19년 전 조회 2,292
19년 전 조회 1,782
19년 전 조회 7,013
19년 전 조회 3,712
19년 전 조회 2,317
19년 전 조회 2,338
19년 전 조회 2,821
19년 전 조회 5,759
19년 전 조회 5,540
19년 전 조회 2,234
19년 전 조회 3,273
19년 전 조회 2,843
19년 전 조회 2,194
19년 전 조회 2,710
19년 전 조회 1,563
19년 전 조회 1,718
19년 전 조회 1,813
19년 전 조회 1,989
19년 전 조회 1,665
19년 전 조회 1,792
19년 전 조회 1,760
19년 전 조회 1,828
19년 전 조회 1,508
19년 전 조회 2,631
19년 전 조회 1,969
19년 전 조회 3,216
19년 전 조회 3,248
19년 전 조회 2,503
19년 전 조회 2,591
19년 전 조회 2,417
19년 전 조회 2,675
19년 전 조회 2,663
19년 전 조회 3,143
19년 전 조회 2,858
19년 전 조회 5,267
19년 전 조회 2,093
19년 전 조회 2,174
19년 전 조회 1,984
19년 전 조회 1,909
19년 전 조회 1,914
19년 전 조회 2,109
19년 전 조회 3,183
19년 전 조회 3,054
19년 전 조회 2,825
19년 전 조회 2,527
19년 전 조회 2,605
19년 전 조회 2,270
19년 전 조회 2,313
19년 전 조회 1,573
19년 전 조회 2,296
19년 전 조회 2,646
19년 전 조회 2,639
19년 전 조회 2,945
19년 전 조회 2,721
19년 전 조회 1,691
19년 전 조회 1,800
19년 전 조회 2,700
19년 전 조회 2,201
19년 전 조회 3,962
19년 전 조회 2,468
19년 전 조회 2,353
19년 전 조회 3,495
19년 전 조회 3,075
19년 전 조회 2,215
19년 전 조회 3,007
19년 전 조회 2,217
19년 전 조회 3,065
19년 전 조회 3,484
19년 전 조회 5,179
19년 전 조회 3,103
19년 전 조회 3,109
19년 전 조회 2,687
19년 전 조회 2,430
19년 전 조회 2,687
19년 전 조회 2,422
🐛 버그신고