뽀로

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

· 19년 전 · 1966
이번 강좌는 웹페이지에 인증을 하는 법을 해보려 한다. 특정 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,875
19년 전 조회 1,933
19년 전 조회 3,129
19년 전 조회 2,344
19년 전 조회 3,603
19년 전 조회 2,533
19년 전 조회 1,835
19년 전 조회 2,442
19년 전 조회 1,703
19년 전 조회 1,384
19년 전 조회 1,515
19년 전 조회 1,783
19년 전 조회 1,557
19년 전 조회 1,760
19년 전 조회 1,547
19년 전 조회 1,928
19년 전 조회 1,824
19년 전 조회 1,423
19년 전 조회 1,426
19년 전 조회 1,336
19년 전 조회 1,209
19년 전 조회 1,387
19년 전 조회 1,955
19년 전 조회 2,377
19년 전 조회 2,853
19년 전 조회 2,290
19년 전 조회 1,781
19년 전 조회 7,013
19년 전 조회 3,709
19년 전 조회 2,315
19년 전 조회 2,337
19년 전 조회 2,819
19년 전 조회 5,757
19년 전 조회 5,538
19년 전 조회 2,232
19년 전 조회 3,271
19년 전 조회 2,840
19년 전 조회 2,192
19년 전 조회 2,708
19년 전 조회 1,562
19년 전 조회 1,716
19년 전 조회 1,812
19년 전 조회 1,987
19년 전 조회 1,663
19년 전 조회 1,790
19년 전 조회 1,758
19년 전 조회 1,827
19년 전 조회 1,507
19년 전 조회 2,628
19년 전 조회 1,967
19년 전 조회 3,215
19년 전 조회 3,247
19년 전 조회 2,501
19년 전 조회 2,589
19년 전 조회 2,414
19년 전 조회 2,674
19년 전 조회 2,662
19년 전 조회 3,141
19년 전 조회 2,857
19년 전 조회 5,265
19년 전 조회 2,092
19년 전 조회 2,174
19년 전 조회 1,983
19년 전 조회 1,909
19년 전 조회 1,913
19년 전 조회 2,107
19년 전 조회 3,181
19년 전 조회 3,052
19년 전 조회 2,823
19년 전 조회 2,527
19년 전 조회 2,604
19년 전 조회 2,268
19년 전 조회 2,312
19년 전 조회 1,571
19년 전 조회 2,294
19년 전 조회 2,644
19년 전 조회 2,637
19년 전 조회 2,944
19년 전 조회 2,719
19년 전 조회 1,690
19년 전 조회 1,798
19년 전 조회 2,700
19년 전 조회 2,199
19년 전 조회 3,962
19년 전 조회 2,467
19년 전 조회 2,352
19년 전 조회 3,493
19년 전 조회 3,072
19년 전 조회 2,212
19년 전 조회 3,004
19년 전 조회 2,215
19년 전 조회 3,065
19년 전 조회 3,484
19년 전 조회 5,179
19년 전 조회 3,101
19년 전 조회 3,107
19년 전 조회 2,686
19년 전 조회 2,428
19년 전 조회 2,686
19년 전 조회 2,422
🐛 버그신고