Apacheベーシック認証の設定手順とセキュリティ上の注意点について確認しました。
下記資料を参考にしました。
NSA(National Security Agency)の『Guide to the Secure Configuration of Red Hat Enterprise Linux 5』
セキュリティ上の注意点
・ベーシック認証は、ネットワーク越しに平文パスワードで処理されるので、ログイン時にパスワードスニッフィングされる危険性があります。
SSLなどのようなセキュアなチャネルを介した暗号化認証を使用する事が推奨されます。
ベーシック認証の設定手順
1)パスワードファイルをセットアップ
①既存のパスワードファイルがなく、新規に作成する場合
# htpasswd -cs パスワードファイル名 ユーザー名
-c:パスワードファイルを作成
-s:パスワードをSHA暗号を使用
既存のファイルがある場合は上書きしてしまうので注意
②既存のパスワードファイルが存在する場合
# htpasswd -s パスワードファイル名 ユーザー名
2)グループ認証を使用する場合はグループファイルを作成
グループファイル内は下記フォーマットでグループ名と所属するユーザー名を設定します。
group : user1 user2
group2 : user3
3)Apacheがグループファイルとパスワードファイルを読めるようにパーミッションを変更
# chgrp apache パスワードファイル名 グループファイル名
# chmod 640 パスワードファイル名 グループファイル名
4)Apache設定ファイルでベーシック認証の設定
①単一のユーザーを認証設定する場合の例
<Directory "directory "> # ... AuthName "Private Data" AuthType Basic AuthUserFile パスワードファイル名 require user ユーザー名 # ... </Directory>
②グループを使って複数のユーザーを認証する場合
<Directory "directory "> # ... AuthName "Private Data" AuthType Basic AuthUserFile パスワードファイル名 AuthGroupFile グループファイル名 require group グループ名 # ... </Directory>
③パスワードファイルにリストされている人であれば誰でも許可する場合
<Directory "directory "> # ... AuthName "Private Data" AuthType Basic AuthUserFile passwdfile require valid-user # ... </Directory>
※パスワードファイルとグループファイルは、リモートから不正にアクセスされるリスクを軽減するために、Webでアクセスできるドキュメントツリーの範囲外に置くようにします。
/etc/httpd/confディレクトリ内に置くことが推奨されます。