Digest
認証設定する機会があったので、備忘録も兼ねて手順を紹介して行きたいと思います。
Digest 認証を設定した時の環境
- OS : Amazon Linux AMI release 2017.09
- Webサーバ : Apache 2.4
今回は、 AWS
の EC2
で作成したサーバに Digest 認証
を設定しました。
本当はクライアント認証かけようとかと思ってたんですが、検証用に作った環境なので、とりあえず Digest
認証だけで逃げる感じで・・・。
では、早速 Digest
認証を設定する手順を説明していきたいと思います!
Digest 認証のファイルを作成する
下記コマンドを実行して Digest 認証ファイル
を作成します。
$ sudo htdigest -c /path/to/documentroot/.htdigest 'Digest Name' 【ID】
Adding password for 【ID】 in realm digest.
New password:【パスワード】
Re-type new password:【パスワード】
htdigest
コマンド実行時のパスはドキュメントルートを指定します。利用している環境によって適宜変更してください。
【ID】と【パスワード】には Digest
認証時に利用する ID
とパスワードを設定します。
Digest 認証に利用するモジュール【 mod_auth_digest 】が有効になっているか確認する
まず、 mod_auth_digest.so
というファイルが存在するかをチェックします。
/etc/httpd/modules
の中身を確認して mod_auth_digest.so
というファイルが存在するか確認します。
なければ、 apxs
を使って mod_auth_digest.so
をコンパイルしてインストールしたりしないといけないみたいですが、今回は Apache 2.4
インストール時にデフォルトでインストールされてたので、コンパイル〜インストールの方法については今回は説明を省きます。
次に、 mod_auth_digest.so
が LoadModule
されてるか確認します。
私の環境では、 /etc/httpd/conf.modules.d/00-base.conf
の中に LoadModule
の記述がありました。
なければ、 /etc/conf.d
の中に digest.conf
を作成するなりして、その中に下記の記述を行いましょう。
LoadModule auth_digest_module modules/mod_auth_digest.so
Apache の設定ファイルとして Digest 認証に関する設定ファイルを追加する
Digest
認証用の Apache
の設定ファイルを作成します。
$ sudo vim /etc/httpd/conf.d/digest.conf
<Directory "/var/www/html/">
Options FollowSymLinks
AllowOverride None
Order deny,allow
AuthType Digest
AuthName "Digest Name"
AUthUserFile "/path/to/documentroot/.htdigest"
Require valid-user
</Directory>
Apache を再起動する
Apache
を再起動しないと設定が反映されないので、忘れずに Apache
を再起動します。
$ sudo service httpd restart
ページにアクセスした時に、こんな感じにIDをパスワードが要求されて、 Digest
認証ファイル作成時に設定した【ID】と【パスワード】を入力して認証されれば設定完了です。
特定の IP アドレスからのアクセス時には Digest 認証をスキップする
例えば、社外からのアクセスは Digest
認証したいけど、社内からのアクセスの場合は Digest
認証なしでページを表示したい場合などに、この設定を行います。
Digest
認証をスキップしたい IP アドレスを設定していきます。
/etc/httpd/conf.d/digest.conf
の設定に下記を追加します。
Satisfy Any
Order deny,allow
deny from all
Allow from XXX.XXX.XXX.XXX NNN.NNN.NNN.NNN
設定の全文はこんな感じになります。
<Directory "/var/www/html/">
Options FollowSymLinks
AllowOverride None
Order deny,allow
AuthType Digest
AuthName "Digest Name"
AUthUserFile "/path/to/documentroot/.htdigest"
Require valid-user
Satisfy Any
Order deny,allow
deny from all
Allow from XXX.XXX.XXX.XXX NNN.NNN.NNN.NNN
</Directory>
Allow from
で IP
アドレスを指定すると、該当する IP
アドレスからのアクセスに対して Digest
認証をスキップさせることができるようになります。
最後に
Digest
認証を設定することで、お手軽にセキュリティ対応することができるようになります。社内で使ってるサイトとか、検証環境とかでそこまでのセキュリテイレベルが求められない場合や、あらかじめ利用者に ID
とパスワードとかを連絡できる場合とかには十分使えるんじゃないかと思います。
そうじゃないと、 SSH
にしてクライアント認証キーを配布してとか、かなり手間がかかるセキュリテイ対策しないといけなくなっちゃうんで...。
この辺は労力に見合った効果が得られるかなどを考慮して、どのようにアクセス制御をかけるのかを検討していけば良いかと思います。
コメント