bitnami RedmineにBasic認証を設定する


はじめに

bitnamiのredmineサーバー(Redmine Bitnami 認定 4.0.5)をAmazon Lightsailで利用しています。
サービスの特性上、ファイアウォールでポート制御はできるのですが、ソースIPの指定ができないため、Basic認証を設定することにしました。

環境

・AWSサービス:Amazon Lightsail
・イメージ:Redmine Bitnami 認定 4.0.5

Basic認証用のユーザーの発行

まずはhtpasswdコマンドを使ってユーザーを新規に発行します。

ユーザー作成
$ sudo htpasswd -c /opt/bitnami/apache2/.htpasswd <username>
New password: 
Re-type new password: 
Adding password for user <username>

オプション
-c:パスワードファイルを新規に作成します。すでにファイルが存在する場合は上書き保存されます。

Basic認証の設定

confのバックアップと修正
$ sudo cp -pi  /opt/bitnami/apps/redmine/conf/httpd-app.conf /opt/bitnami/apps/redmine/conf/httpd-app.conf.bk
$ sudo vim /opt/bitnami/apps/redmine/conf/httpd-app.conf
httpd-app.conf
<Directory "/opt/bitnami/apps/redmine/htdocs/public">
  ・・・
      AuthType Basic
      AuthName MyAuthName
      AuthUserFile "/opt/bitnami/apache2/.htpasswd"
      Require valid-user
  ・・・
  ・・・
    <IfVersion >= 2.3>
        #Require all granted
    </IfVersion>
  ・・・
</Directory>

まずは < Directory > 内にBasic認証の設定となる4行を追記します。
ディレクティブ
AuthType:認証方式
AuthName:認証領域
AuthUserFile:パスワードファイル
Require:アクセス制御についての設定

次に Require all granted をコメントアウトします。
(今回のredmineで使われているapacheバージョンが2.3以上のため。)

Requireディレクティブ
all granted:全てのアクセスを許可
valid-user:有効なユーザーの場合はアクセスを許可

apacheバージョンを確認したい場合は以下のコマンドで確認します。

apacheバージョン確認
$ httpd -v
Server version: Apache/2.4.41 (Unix)

apache再起動

編集が完了したらapacheを再起動して完了です。

apache再起動
$ apachectl configtest
Syntax OK
$ sudo /opt/bitnami/ctlscript.sh restart apache
Unmonitored apache
Syntax OK
/opt/bitnami/apache2/scripts/ctl.sh : httpd stopped
Syntax OK
/opt/bitnami/apache2/scripts/ctl.sh : httpd started at port 80
Monitored apache

確認

再起動したらアクセスしてみましょう。Basic認証が表示されたら設定完了です。

ユーザー追加

追加したい場合は-cオプションを外せばOKです。また、-bオプションを付けるとパスワードも一度に設定できます。

ユーザー追加
$ sudo htpasswd -b /opt/bitnami/apache2/.htpasswd <username> <password>

オプション
-b:コマンドラインからパスワードを引数として渡す際に指定します。

ただし、パスワードが見えてしまうので注意が必要です。

おわりに

Lightsailの場合、ポートだけでしかファイアウォールの制御ができないため、redmineなどをそのまま使うことに抵抗がある人は多いと思います。
Basic認証をかけることで少しでもセキュリティリスクを減らすことができます。