'Digest認証'에 해당되는 글 2건

  1. 2016.12.02 Apache2でDigest認証の設定方法
  2. 2016.11.25 Apache2에서 Digest 인증 설정

今日は,Apache2でDigest認証を設定する方法について書きます.

日本語へたくそで少し分かりづらいところもあると思いますがご了解お願い致します.

HTTPでは,Basic認証,Digest認証の二つの認証方法があります.

Basic認証は暗号化されてなく,WireSharkのようなパケット分析プログラムではパスワードがそのまま漏洩される恐れがある反面,Digest認証はMD5で暗号化し,パスワードを転送するので,Basic認証よりもっと安全な認証方式だといえるでしょう.

Digest認証の詳しいところは検索するとすぐ出てくると思いますのでそっちの方を参照していただければと思います.(今後,時間があるとそれも書くかもしれませんね)

では,本格的にApache2でDigest認証の設定方法について説明していきたいとおもいます.

ちなみに,VirtualBoxにUbuntu 16.04をインストールし,その以外にはなにもインストールしてない状態に仮定します.

普段,初心者の方は(自分を含め)最初インストールから検索をすると思いますが,検索で出てくるウェブサイトは基本的に必要な情報が書いてないところが多いようですね.自分の検索能力の問題かもしれませんがw

さて,雑談はさておいてどんどん書きましょう.

まずは,UbuntuにApache2をインストールします.Apache2のインストールの場合には次のコマンドを書けばよいです.

# apt-get install apache2

このコマンドを実行後,出てくる質問にyを押すと自動にインストールが終了されます.

次に,今後よく使う予定であるvimをインストールします.vimもapache2と同じで,

# apt-get install vim

コマンドでインストールすればよいです. 同じ内容なのでスクリーンショットは省略...

では,モジュールを適用させることにします.Basic認証はなんのモジュールもいりませんがDigest認証をつかうにはモジュールが一つ必要になります.そのモジュールは

auth_digest_module というもので,これをapache2の設定ファイルの中に書かなければいけません.

/etc/apache2/ ディレクトリにあるapache2.confファイルの適当なところに

LoadModule auth_digest_module /usr/lib/apache2/modules/mod_auth_digest.so

これを書いとけばOKです.

ではapache2.confファイルを一度みてみましょう.

# cd /etc/apache2/ でApache2ディレクトリに移動し,

# vim apache2.conf コマンドでconfファイルに実際に書き込むようにします.

vimの使い方は検索するとすぐ出てくるので参照してご参照ください.

このように,空いているところに適当に書き込んであげればよいです.

自分は一番最後の行に書き込みました.

このファイルではもう一つ作業しなきゃいけませんが,ディレクトリの設定を変更させることです.

今後.htaccess というファイルをつかうことになりますが,このファイルを使うにはディレクトリの設定を一つ変更する必要があります.

ファイルの内容を調べてみると,

<Directory /var/www>

  Options Indexes FollowSymLinks

  AllowOverride None

  Require all granted

</Directory>

こんなところがあると思います.

ここでディレクトリとAllowOverride設定を変更させます. 下でDigest認証用のディレクトリを一つ作りますが,ここでそのディレクトリで設定を書き込まなければいけません.ここではDigestというディレクトリ名にしたいとおもいます. ではこんな風に変更してあげます.

<Directory /var/www/html/digest>

  Options Indexes FollowSymLinks

  Allow Override All

  Require all granted

</Directory>

こう変更して保存すると,今後出てくる.htaccessを使うことができるようになります.

ちょっとファイルを見てみるとこのようになっています.

ちなみに,Apache2の設定ファイルを修正するといつもサーバをリスタートしなければなりませんが.

サーバのリスタートコマンドは

# service apache2 restart

を打てばよいです.これでサーバをリスタートします.

次に, Digest認証を適用するディレクトリとファイルを作りたいと思います.

Apache2をインストールしたとき,基本のディレクトリは/var/www/html/であり,ここで適当にディレクトリとファイルを作って使っていただければよいです.

まずはディレクトリを一つ作ります.ディレクトリ名はさっき設定に使ったdigestにします.

# cd /var/www/html/ コマンドでディレクトリに入り,

# mkdir digest を打つとdigestディレクトリが作られます.そして

# cd digestでdigestディレクトリに入り,本格的に認証に必要なファイルを作ります.

最初に作るファイルはパスワードファイルです.

パスワードファイルはこんな形式です.

# htdigest -option filename "realm" username

こう見たらなんじゃこりゃ!と思われるかもしれませんね. 例を挙げましょう.

# htdigest -c digestpass "Sparta" kim

-c オプションは新しいパスワードファイルを作る時に使うオプションです.後でこのパスワードファイルに新しいユーザを加える時は省略してあげればよいです.ていうか,省略しなきゃいけないんですけど(笑)

.filenameがパスワードのファイル名です.

realmとは領域なんですが,後で作る .htaccess ファイルにあのrealmを使わなきゃいけません.それは後で説明します.

usernameがウェブページから認証を行う時使うIDです.

コマンドを入力すると,新しくパスワードを入力するところが出てきますが,

それが指定したIDに使うパスワードです.確認のために2回入力する形になっています.

では,まずユーザを一つ作って次のユーザも一人追加した状態を見てみましょう.

こんな風にパスワードファイルにユーザとパスワードを追加すればよいです.

ここで,話外れますがパスワードファイルの内容を見てみましょう.

ふむ...素晴らしい外界語ですね.どうやら暗号化がよくできたみたいです.IDとrealm名は残ってますが....

次に,.htaccessを作りたいと思います.

同じディレクトリの中でそのまま

# vim .htaccessを入力してファイルを作り,下のように入力します.

AuthType Digest

AuthName "Sparta"

AuthUserFile /var/www/html/digest/digestpass

Require valid-user

さっき設定しといたrealm名がAuthNameに入力しなければなりません.

AuthUserFileにパスワードファイルの経路を入力させるべきであります.

ここでちょっと,いつも絶対経路を使っていますが,相対経路を使ってもおそらくできるとは思います.

でも自分がそれをあんまりわからないので...^^;

とにかく,入力をするとこんな風になります.

次に,適当にhtmlファイルを作りましょ.認証に成功すると出力されるページです.index.htmlという名前で一つ作りたいと思います.

# vim index.html コマンドでファイルを作って,

適当にこんな風にソースコードを書きましょう.

これでDigest認証の設定が完了しました.

では,一回きちんと設定されているかどうか実際にウェブサイトにアクセスしてみたいと思います.

先作ったファイルの名がindex.htmlで,digestディレクトリに入っていたので,アクセスは 

http://ipアドレス/digest/index.htmlにすればよいです.現在自分のipアドレスは192.168.0.7ですね.

ではhttp://192.168.0.7/digest/index.htmlにアクセスしてみましょう.

韓国語でわからない!という方いらっしゃるかもしれませんがIDとパスワードを入力する画面が出てきます.ではここで先設定しておいたIDとパスワードを入力して転送すると

アクセスが良くできました. ちなみにIDとパスワードが間違えたら

再入力画面が3回出てきて最後にエラーが出てきます.

どうやらDigest認証がよく適用されたようですね.

こんな風に必要なウェブページにDigest認証を適用するとより安全な利用ができると思います.

ここで,ちょっとMD5暗号化がよくされているか確認させていただきたいと思います.

WireSharkを利用してウェブサーバのパケットをキャプチャーしてみると...

このように出てきます.ユーザ名とrealm名は表示されてますがパスワードはわからない外界語で,暗号化がよくできたみたいです.めでたいめでたい(笑)

では次のやつはおそらくBasic認証になりそうですね.

いつになるかはわかりませんが時間があれば書くようにします.

ではお大事に


参考ウェブサイト

http://ubuntu-1110.blogspot.kr/2012/01/ubuntu-1110htaccess.html

http://www.adminweb.jp/apache/allow/index8.html



'정보보안' 카테고리의 다른 글

Apache2에서 Basic 인증 방법  (0) 2016.12.30
Apache2에서 Digest 인증 설정  (0) 2016.11.25
Posted by 야마히코
,

블로그 첫 글입니다.

제가 학교에서 공부한 내용을 복습할 겸 하는 차원에서 하나씩 올려가도록 하겠습니다.

이번에 올리는 건 Apache2에서 Digest 인증 설정하는 방법입니다.

HTTP에서는 Basic 인증, Digest 인증 두 가지의 인증 방식이 있는데요.

Basic 인증은 암호화가 되어 있지 않아 와이어샤크와 같은 패킷 분석 프로그램에서 패스워드가 그대로 추출되는 위험성이 있는데 반해, Digest 인증은 MD5로 암호화해서 패스워드를 보내기 때문에 훨씬 안전한 인증 방식이라고 할 수 있습니다.

자세한 건 검색해보시면 많이 나오니 참조하시면 될 것 같습니다.(나중에 시간 있으면 그것도 업데이트할지도...?)

그러면 본격적으로 Apache2에서 Digest 인증을 설정하는 방법에 대해서 설명하도록 하겠습니다.

참고로 VirtualBox에서 Ubuntu 16.04를 설치한 상태이며, 그 외에는 아무것도 없는 깨끗한 상태로 가정한 후 설치하도록 하겠습니다.

보통 초보자분들은(저 포함)처음 설치할 때부터 검색을 하실 텐데 나오는 사이트들은 기본적으로 필요한 정보들이 안 써 있는곳이 많더라구요..

아무튼, 갈수록 잡설이 길어지는 것 같으니 이제 진짜로 쓰겠습니다.

우선은 우분투에 Apache2를 설치합니다.  Apache2를 설치할 때는 이 커맨드를 쓰시면 됩니다.

# apt-get install apache2

이 커맨드를 쓰신 후 나오는 질문에 y를 누르시면 자동으로 설치가 끝납니다.

일본어긴 하지만 딱히 신경 안 쓰셔도 됩니다. 어차피 나오는 건 다 똑같은지라...

그리고 앞으로 사용하게 될 vim을 설치하겠습니다. vim도 apache2와 마찬가지로 

# apt-get install vim

으로 설치하시면 됩니다. 똑같은 내용이니 스샷은 생략...

그러면 다음에는 모듈을 적용시키도록 하겠습니다. Basic 인증은 그냥 되는데 Digest 인증을 사용하기 위해서는 모듈이 하나 필요한데요. 그 모듈이란

auth_digest_module 이란 거구요.

이걸 apache2설정 파일에 써 넣으셔야 합니다.

/etc/apache2/ 디렉토리에 있는 apache2.conf 파일 적당한 곳에

LoadModule auth_digest_module /usr/lib/apache2/modules/mod_auth_digest.so

이걸 써 넣으시면 됩니다.

그러면 apache2.conf파일을 한번 보도록 하죠.

# cd /etc/apache2/ 로 아파치2 디렉토리로 이동 후

# vim apache2.conf 커맨드로 conf파일에 실제로 써넣도록 합니다.

vim 사용법은 검색하면 바로 나오니 참조하시길...

이렇게 빈 곳 아무곳에나 써 넣으시면 됩니다.

저는 맨 아래쪽에 끼워넣었습니다.

이 파일에서 한가지 작업할 것이 더 있는데, 디렉토리 설정을 변경해 주는 겁니다.

나중에 .htaccess 라는 파일을 사용하게 되는데, 이 파일을 사용하기 위해선 디렉토리 설정을 하나 바꿔줄 필요가 있거든요.

파일 내용을 찾아보시면, 

<Directory /var/www>

  Options Indexes FollowSymLinks

  AllowOverride None

  Require all granted

</Directory>

이런 곳이 있을 건데요.

여기서 디렉토리와 AllowOverride 설정을 바꿔줍니다. 아래에서 Digest 인증용의 디렉토리를 하나 만들건데요. 여기서 그 디렉토리로 설정을 써야 합니다. 여기서는 Digest라는 디렉토리 이름으로 하겠습니다. 그러면 이런 식으로 변경해줍니다.

<Directory /var/www/html/digest>

  Options Indexes FollowSymLinks

  Allow Override All

  Require all granted

</Directory>

이렇게 변경후 저장해주시면 앞으로 나올 .htaccess 를 사용 가능하게 됩니다.

잠시 파일을 살펴보면 이렇게 되어 있네요.

참고로 Apache2 설정 파일을 수정하시면 항상 서버를 재시작 하셔야 하는데요.

서버 재시작 커맨드는

# service apache2 restart

로 하시면 됩니다. 이걸로 서버를 재시작하시구요.

다음으로, Digest 인증을 적용할 디렉토리와 파일을 만들도록 하겠습니다.

Apache2를 설치했을시 기본 디렉토리는 /var/www/html/ 이며 여기에서 적당히 디렉토리와 파일을 만들어서 쓰시면 됩니다.

그러면 먼저 디렉토리를 하나 만들겠습니다. 디렉토리 이름은 digest로 하죠.

# cd /var/www/html/ 로 html디렉토리까지 들어간 후

# mkdir digest 를 실행하면 digest 디렉토리가 만들어집니다. 그리고

# cd digest 로 digest 디렉토리에 들어가서 본격적으로 인증에 필요한 파일을 만들도록 하죠.

먼저 만들 파일은 패스워드 파일입니다.

패스워드 파일은 이런 형식입니다.

# htdigest -option filename "realm" username

이렇게만 보면 뭔 소린지 잘 모르시겠죠. 예를 써보도록 하죠.

# htdigest -c digestpass "Sparta" kim

-c 옵션은 새로운 패스워드 파일을 만들 때 쓰는 옵션이구요. 나중에 이 패스워드 파일 안에 새로운 유저를 추가할 때는 생략하셔도 됩니다.

.filename이 패스워드 파일 이름이구요.

realm이라는건 영역인데 나중에 만들 .htaccess 파일에 저 realm을 이용해야 합니다. 그건 나중에 보시도록 하구요.

username이 나중에 페이지에서 인증할 때 쓸 아이디입니다.

커맨드를 저렇게 입력하시면 새롭게 패스워드를 입력하라고 나오는데요.

그게 지정한 아이디에 쓸 패스워드입니다. 확인을 위해 두 번 입력하도록 되어 있구요.

그러면 먼저 한번 유저를 만든 후 다음 유저도 하나 추가한 상태를 보도록 하겠습니다.

이런 식으로 패스워드 파일에 유저와 패스워드를 추가하시면 되구요.

여담으로 패스워드 파일의 내용을 훑어보도록 하겠습니다.

음...멋진 외계어군요. 암호화가 잘 된 듯 합니다. 아이디와 렐름명은 남아있긴 하지만...

그러면 다음으로 .htaccess 파일을 만들도록 하겠습니다.

같은 디렉토리에서 그대로

# vim .htaccess 를 입력해서 파일을 만든 후 아래와 같이 입력하시면 됩니다.

AuthType Digest

AuthName "Sparta"

AuthUserFile /var/www/html/digest/digestpass

Require valid-user

아까 설정한 렐름명이 AuthName에 입력되어야 합니다.

AuthUserFile에 패스워드 파일의 경로가 입력되어야 하구요.

여기서 잠시 항상 절대경로를 쓰고 있는데 상대경로를 쓰셔도 되긴 할 겁니다 아마...

그런데 제가 그걸 몰라서...;

아무튼, 일단 입력하시면 이런 모양이 됩니다.

다음으로 적당히 html 파일을 하나 만들어보죠. 인증에 성공하면 나오는 페이지입니다. index.html 이라는 이름으로 하나 만들겠습니다.

# vim index.html 커맨드로 파일을 만들고

적당히 이런 식으로 소스를 쓰도록 하죠.

이걸로 Digest 인증 설정이 완료됩니다.

그러면 한번 제대로 설정이 되어 있는지 실제로 사이트에 접속해보도록 하겠습니다.

아까 만든 파일 이름이 index.html이고 digest 디렉토리에 들어있었으니 접속은 

http://ip주소/digest/index.html로 하면 됩니다. 현재 제 ip주소는 192.168.0.7이네요.

그러면 http://192.168.0.7/digest/index.html에 접속을 해보도록 합시다.

이렇게 아이디와 패스워드 입력하는 화면이 나오네요. 그럼 여기에 아까 설정해둔 아이디와 패스워드를 입력하고 전송하면

접속이 잘 됐습니다. 참고로 아이디와 패스워드가 틀리다면

재입력 화면이 세 번 뜬 후 이렇게 접속 에러가 뜹니다.

아무래도 Digest 인증이 잘 적용된 모양이군요.

이런 식으로 필요한 웹페이지에 Digest 인증을 적용하시면 보다 안전한 이용이 가능하실 겁니다.

여기서 잠깐 MD5 암호화가 잘 됐는지 확인해보도록 하겠습니다.

와이어샤크를 이용해서 웹서버의 패킷을 캡처해보면...

이렇게 나옵니다. 유저명과 렐름은 표시가 되지만 패스워드는 알 수 없는 외계어로 암호화가 잘 된 모양입니다. 다행이네요 ㅎㅎ

그러면 다음 포스팅은 아마 Basic 인증이 될 것 같군요.

언제가 될진 모르겠지만 시간이 되면 올리도록 하겠습니다.

그럼 안녕히...


참고 사이트

http://ubuntu-1110.blogspot.kr/2012/01/ubuntu-1110htaccess.html

http://www.adminweb.jp/apache/allow/index8.html


'정보보안' 카테고리의 다른 글

Apache2에서 Basic 인증 방법  (0) 2016.12.30
Apache2でDigest認証の設定方法  (0) 2016.12.02
Posted by 야마히코
,