[OS]/Embedded&Linux

[TIP] apache 인증에 MD5 Digest 를 사용해보자.

하늘을닮은호수M 2007. 4. 10. 13:44
반응형

출처 : http://classpath.egloos.com/2052817

앞서 apache + subversion + trac 의 설치를 설명하면서 인증 방식을 basic 방식으로 설명했었습니다.

이방식은 정말 간단하고, 거의 대부분의 브라우져에서 문제없이 지원되지만 인터넷상을 항해해가는 패스워드가 해적질 당하기 쉬운 방식으로 출항합니다. 물론 완전한 Text 로 가는 것은 아니고 BASE64 인코딩을 통해 변환되기는 하지만, 쉽게 원 패스워드가 노출 될 수 있습니다. (참고 : HTTP 인증에서의 사용자명/패스워드 Snooping)

따라서, 원래의 패스워드가 무었인지를 알아 낼 수 없도록 암호를 MD5 Hash 함수를 통해 저장하는 방식인 digest 방식을 이용하면 보안 수준을 향상 시킬 수 있습니다. 게다가 요즘은 일반적으로 사용되는 대부분의 브라우져가 digest 인증 방식을 문제 없이 지원합니다. 다음 아파치 사이트(www.apache.org)의 2.2 문서에서 가져온 내용입니다.

Digest authentication is more secure than Basic authentication, but only works with supporting browsers. As of September 2004, major browsers that support digest authentication include Amaya, Konqueror, MS Internet Explorer for Mac OS X and Windows (although the Windows version fails when used with a query string -- see "Working with MS Internet Explorer" below for a workaround), Mozilla, Netscape 7, Opera, and Safari. lynx does not support digest authentication. Since digest authentication is not as widely implemented as basic authentication, you should use it only in environments where all users will have supporting browsers.
이정도면 거의 다죠. ^^ 사실 이런 말씀 드리면 좀 거시기 할지도 모르겠지만.. 아직까지도 "diget 방식을 지원하는 브라우저는 많지 않으므로 이번 글(강좌)에서는 넘어가겠습니다" 라는 글들을 어디선가 퍼 오셔서 올리는 분들이 많습니다. 안타까운 일이죠. 그보다는 "아직 실험적인 모듈이라 안정성을 보장할 수 없으므로.." 라고 하셨으면 더 좋았을 것 같다는 생각이 드네요. (어쩌면 2년이나 지난 이야기라.. 안정적인 모듈이 되었을 수 도 있습니다 ^^)

이제 앞서 basic 방식으로 인증 처리를 했던 것을 digest 방식으로 변경해 보도록 하겠습니다.




1. 모듈 설치

mod_auth_digest 라는 모듈이 필요합니다. 저 같은 경우 모듈 컴파일 옵션을 most 로 해서 왠만한 모듈들은 거의 다 컴파일 되어있습니다. 혹시 설치 안되신 분들은 아파치 소스 디렉터리에서 configure 스크립트를 --enable-auth-digest 와 함께 실행시키신 후 make && make install 하시면 됩니다.

2. 모듈 로딩

httpd.conf 파일에 다음의 내용을 추가합니다. 물론 안되어 있는 분만 추가합니다.

LoadModule auth_digest_module modules/mod_auth_digest.so

3. 인증 파일 생성

이전에는 htpasswd2(혹은 htpasswd)를 이용해 인증파일을 생성했었습니다만, digest 방식에서는 htdigest2(혹은 htdigest)를 이용해 인증파일을 생성합니다.

htdigest2 -c /data/www/localhost/trac/newface/apache-auth-digest newface testuser

* 역시나 경로 및 파일명은 편하신데로 하시면 됩니다.
* 두번째의 newface 라는 것은 realm 이라고 하는데 나중에 나올 AuthName 과 동일해야 합니다. 만약 공백이 들어간 문자열 이라면 'newface for new one' 이런식으로 하시고 AuthName 부분에도 같이 해주시면 됩니다. 마지막은 사용자 아이디입니다.
* -c 옵션은 처음에만 한번 해주시면 됩니다.

4. 설정 파일 변경

앞서 trac 권한 설정 한 부분을 보도록 하겠습니다.


AuthType Basic
AuthName "Trac"
AuthUserFile /data/www/localhost/trac/newface/apache-auth-file
Require valid-user


위의 내용을 아래와 같이 변경합니다.


AuthType Digest
AuthName "newface"
AuthDigestProvider file
AuthDigestQop auth
AuthUserFile /data/www/localhost/trac/newface/apache-auth-digest
Require valid-user


아파치를 재 기동하고 재 접속, 아까 추가한 사용자 아이디로 로그인 해보시기 바랍니다. ^^

참고로 서브버전 + apache 부분도 이렇게 변경하시면 같은 파일을 이용해 사용자 인증을 하실 수 있습니다.

p.s 하지만 이 방법도 매우 안전한 것은 아닙니다. 왜냐하면 인증 정보는 암호화 되어서 비트의 파도를 넘어다니지만, 그 외의 데이터 (사이트의 컨텐츠 데이터겠죠) 는 암호화 되지 않은 상태로 헤엄쳐 다니거든요. 역시나 완벽한 보안에 한발짝 더 다가가시려면 SSL 을 사용하셔야 합니다. 이건 또 올리도록 하죠. ^^
반응형