セキュリティをより強固にするために、プラグインを使ってBitnami Redmineのログインを二要素認証にしてみました。
ログイン時に事前に登録しておいたメールアドレスにワンタイムパスワードが送信されます。そのパスワードを使ってログインする方法です。
以下の記事がとても参考になりました。Bitnami Redmineへの導入のためにいくらか調整しています。
前提条件
Microsoft Azureの仮想マシンを使って実装しました。環境は下記の通りです。
- CentOS 7.7
- Apatch 2.4.6
- Bitnami Redmine 4.1.1-7
- Redmine Out of Band Authentication plugin
Redmineからメール送信ができるように設定しておきます。以下の記事にまとめています。
プラグインのダウンロード
以下のリンクよりプラグインの情報を取得します。
以下の画面が表示されます。赤で囲ったリンクをメモしておきます。
Redmineがインストールされている仮想マシンにTera Termなどのターミナルエミュレータを使ってログインします。
root権限でログインしましょう。以下の記事でまとめています。
gitがはいっていない場合は、以下のコマンドでインストールしておきます。
# yum install git
Bitnami Redmineの場合、プラグインのインストールは「/opt/[ここはインストール時に設定します]/apps/redmine/htdocs/plugins/」になります。ダウンロード元は先ほどメモしたURLです。
# cd /opt/redmine/apps/redmine/htdocs/plugins/ インストールファルダは異なる場合があるので確認が必要です。
# git clone https://github.com/matsukei/redmine_out_of_band_auth.git
インストール
Bitnami Redmineにプラグインをインストールしましょう。
まず、以下のスクリプトを実行します。
cd /opt/redmine
./use_redmine
パスを通します。
bash-4.2# echo $PATH
インストールを始めます。
bash-4.2# cd /opt/redmine/apps/redmine/htdocs/.bundle/
bash-4.2# chmod 755 config
bash-4.2# bundle install
このままデータベースを更新するとrailsのバージョンの関係でエラーになるようです。それを回避するために以下のファイルを修正します。
bash-4.2# vim /opt/redmine/apps/redmine/htdocs/plugins/redmine_out_of_band_auth/db/migrate/001_create_auth_source_out_of_bands.rb
以下の通り、編集します。
- 編集前: class CreateAuthSourceOutOfBands < ActiveRecord::Migration
- 編集後: class CreateAuthSourceOutOfBands < ActiveRecord::Migration[4.2]
最後にデータベースを更新してインストールを完了させます。
bash-4.2# bundle exec rake redmine:plugins:migrate NAME=redmine_out_of_band_auth RAILS_ENV=production
動作確認
Bitnami Remineを再起動します。以下の記事にまとめています。
Bitnami Redmineに管理者でログインし「管理」をクリックします。
次に、「プラグイン」を選択します。正しくインストールされている場合は、「Redmine Out of Band Authentication plugin」が表示されています。
次に、「管理」-「ユーザー」を選択します。
ユーザー一覧が表示されるので、二要素認証にしたいユーザーを選択しすると下図のような設定画面が表示されます。
「アウトオブバンド認証を有効にする」にチェックを入れ、最後に「保存」ボタンをクリックしましょう。
いったんログオフします。さきほど二要素認証の設定をしたユーザーでログインすると以下の画面が表示されます。
登録されているメールアドレスに確認コードが送信されます。その確認コードを入力して「送信」ボタンをクリックします。ログインできたらOKです。
最初は、システム管理者以外のユーザーで二要素認証の設定をしたほうが良いでしょう。システム管理者に二要素認証を設定して不具合がある場合、システム管理者でログインできなくなる可能性があります。
では、今回はここまでです。