Basic認証をかける
Ubuntuサーバーでのベーシック認証
I. .htpasswd ファイルの作成
Linuxサーバーでは、htpasswd コマンドで .htpasswd ファイルを作成できる。
新規作成の場合は、-c オプションを付けて、ファイルパスとユーザー名を添える。
$ sudo htpasswd -c /var/www/siteurl.com/.htpasswd foo
.htpasswd ファイルに保存するBasic認証パスワードを暗号化する方式としては、MD5、bcrypt、CRYPT、SHAがある。
CRYPTはパスワードが8桁までという制限があるし、SHAもセキュリティに問題あり。
Ubuntuでは、htpasswd コマンドを実行した場合、デフォルトは MD5 になる。
より強力な bcrypt を使用する場合は、-B オプションを付ける。
bcrypt の場合、暗号作成時の計算時間を指定できる(デフォルトは 5)。計算時間が長いほど、セキュリティは高くなる。-C オプション。
2021年3月に確認したところ、-Cオプションの選択範囲は4~31。以前の記憶より数値が上方偏移している気がする。デフォルトの数値よりも大きい数値を設定しておいた方が好ましいかもしれない。
$ sudo htpasswd -c -B /var/www/siteurl.com/.htpasswd foo
$ sudo htpasswd -c -B -C 10 /var/www/siteurl.com/.htpasswd foo
すると、パスワードの入力を促されるので
New password:
パスワードを入力。もう一度入力を求められるので、
Re-type new password:
再入力。これで当該パスに .htpasswd ファイルが作成されている。
II. .htaccess ファイルやサーバー設定ファイルでBasic認証を指定
あとは、.htaccess ファイルか、nginx や Apache2 の設定ファイルに、当該ディレクトリにBasic認証をかけることを指定すればよい。
III. ユーザーの削除
特定のユーザーを削除するのは、-D オプション。
$ sudo htpasswd -D /var/www/siteurl.com/.htpasswd foo