今日は,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 |