WEBサーバにパスワード認証を設定してみた
こんにちは。本日は先日構築したWEBサーバにパスワード認証機能を設定していきたいと思います。
基本認証を使うディレクトリを作る
今回は/var/www/html/passwordというディレクト配下にアクセスする為にパスワードを求められるようにしようと思います。
最初にディレクトリを作ります。
この時rootユーザーでないといけません。
mkdir /var/www/html/password
/var/www/html/password配下にpass.htmlという名前のHTMLファイルを作成しておきます。
このファイルを閲覧するのにパスワードが必要になる設定をしていきます。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>テストページ</title>
</head>
<body>
<p>パスワード認証を設定する為のテスト用のページです。</p>
</body>
</html>
認証用のアカウントとパスワードの作成
指定のWEBサーバにログインするためのユーザーとパスワードを作成していきます。
次のコマンドを使用します。
htpssswd -c パスワードファイル ユーザー名
-c オプションはパスワードファイルを新規に作成する際に指定します。
パスワードファイルとユーザー名は作成者の自由に付けて問題ないです。
今回はパスワードファイルを/etc/httpd/conf.dに作成します。ここなら忘れないだろうと思っているからです。(多分、、、)
パスワードは2回確認され入力すると設定完了です。
パスワードファイル内を確認すると暗号化されたパスワードが記されています。
私も詳しくはわからないのですが、簡単に解析できるらしいです。
なので、ファイルの格納場所には注意が必要です。
このファイルはApacheのみ接続する為、
オーナーとグループをapacheに変更しほかのユーザは読み書きを出来ない様にします。
これで少しは安全になると思います。
chown apache /etc/httpd/conf.d/htpasswd
chgrp apache /etc/httpd/conf.d/htpasswd
chmod 600 /etc/httpd/conf.d/htpasswd
認証が必要になるページを指定する
認証を必要にするページの範囲を設定する為に/etc/httpd/conf.d配下に「set.conf」と名前の設定ファイルを作成し、
設定を記述していきます。
<Directory "/var/www/html/secret">
#基本認証を使用する
AuthType Basic
#今回基本認証の名前
AuhtName "Secret Page"
#パスワードファイルの配置場所
AuthUserFile /etc/httpd/conf.d/htpasswd
#認証されたユーザーすべてのアクセスを許可する
Require valid-user
</Directory>
AuthUserFileで指定する場所を間違えると認証されないので、
気を付けましょう。
私は間違えました。。。
設定を有効にするために再読み込みをする必要があるので、
以下のコマンドを実行ます。
systemctl reload httpd.setvice
ブラウザで認証画面を確認
ここまで設定を行うとブラウザ上で認証画面が表示されるので、
確認しましょう。
「http://localhost/password/pass.html」にアクセスしてみます。
すると下の画像のように表示されます。
以上で今回は終了です。
パスワードなどがわからなくてもパスワードファイルを他人に知られてしまうと意味がないという事が今回一番勉強になった内容ですね。