タグ: redmineプラグイン Page 1 of 5

Redmine5.1のdmsfプラグインの脆弱性対応。(プラグインアップグレード)

概要

Redmineの文書管理プラグイン、dmsfに脆弱性が発表されたので、その対応を行います。

脆弱性概要

https://jvndb.jvn.jp/ja/contents/2024/JVNDB-2024-000055.html

当該プラグインを有効にしている場合、Redmineにログインしているユーザーによって、Redmineの実行権限で可能な範囲で、サーバー上の任意のファイルを取得されたり削除されたりする可能性があります。

脆弱性対象

バージョン3.1.4より前のバージョン

筆者環境

  • Ubuntu 22.04
  • Apache2.4
  • MySQL 8.0.3
  • Redmine 5.1
  • dmsf 3.1.3

注意事項

脆弱性に対応したバージョンは、2024年5月現在、Redmine 4.2には対応していません。

筆者のようにRedmine 4.2を単独ユーザーで運用していない限りは、以下のオプションを強く推奨します。

  • Redmine及びOS全体のバージョンアップを図る。
  • 本プラグインを無効化する。

さっくりとはならない手順

  1. DBのバックアップ
  2. Webサービス停止
  3. 既存プラグインディレクトリの退避
  4. git cloneによるプラグイン入手
  5. DBマイグレーション
  6. Webサービス起動
  7. プラグインアップグレード確認

DBのバックアップを行います。

  • 作業用ディレクトリに移動
cd /hoge && pwd

任意のバックアップディレクトリを指定します。

  • DBのバックアップ取得
 mysqldump -h localhost -u redmine -p --no-tablespaces --single-transaction redmine > redmine_backup.$(date +%Y%m%d).sql
  1. -u ユーザ オプション db名です。自分の環境に合わせます。
  2. パスワードはDBのユーザパスワードです。

Apacheの停止を行います。

※ 利用者への注意喚起も行ってください。

  • 停止前のステータス確認
systemctl status apache2.service

active (running)を確認します。

  • Apache停止
sudo systemctl stop apache2.service
  • 停止後のステータス確認
systemctl status apache2.service

inactive (dead)を確認します。

既存プラグインを退避します。

  • redmineプラグインディレクトリに移動
cd /redmine/root/directory/plugins && pwd

ディレクトリは自分の環境に合わせます。

  • dmsfプラグイン退避
sudo mv redmine_dmsf /path/to/backup/directory/redmine_dmsf.$(date +%Y%m%d)

任意のバックアップディレクトリを指定します。

  • dmsfプラグイン退避確認
ls -ld /path/to/backup/directory/redmine_dmsf.$(date +%Y%m%d)

ディレクトリがあることを確認します。

プラグインをgit cloneします。

  • git clone
sudo -u www-data git clone -b v3.1.4 https://github.com/danmunn/redmine_dmsf

脆弱性に対応したv3.1.4を指定します。

  • clone確認
ls -ld redmine_dmsf

ディレクトリがあることを確認します。

プラグインのアップグレードを行います。

  • Redmineのルートディレクトリに移動
cd /redmine/root/directory && pwd

自分の環境に合わせます。

  • bundle install
sudo -u www-data bundle install
  • DBマイグレーション
sudo -u www-data bundle exec rake redmine:plugins:migrate RAILS_ENV=production

Webサービスを再開します。

  • 再開前のステータス確認
systemctl status apache2.service

inactive (dead)を確認します。

  • Apache再開
sudo systemctl start apache2.service
  • 停止後のステータス確認
systemctl status apache2.service

active (running)を確認します。

バージョンアップを確認します。

  1. Redmineに管理者権限でログインします。
  2. 管理>プラグインに進みます。
  3. DMSFプラグインが3.1.4になっていることを確認します。
  4. 既存の動作(チケットの発行/編集など)に問題が無いことを確認します。

おまけ:切り戻し手順

このプラグイン、アップグレードの失敗や手順ミスで軽くRedmine全体が機能不全に陥ります。そのため、切り戻し手順を記しておきます。

通常の切り戻し

ディレクトリ移動

  • Redmineのルートディレクトリに移動
cd /redmine/root/directory && pwd

自分の環境に合わせます。

プラグインアンインストール

sudo -u www-data rake redmine:plugins:migrate NAME=redmine_dmsf VERSION=0 RAILS_ENV=production

ディレクトリ削除

sudo rm plugins/redmine_dmsf -Rf

Webサービス再起動

sudo systemctl restart apache2.service

それでもダメだった切り戻し(DBリストア)

cd /hoge
# mysqldumpを行ったディレクトリ

mysql -h localhost -u redmine -p redmine < redmine_backup.$(date +%Y%m%d).sql
# パスワードはredmineインストール時に設定したDBユーザのものです

sudo systemctl restart apache2.service

Redmineのプラグインをインストールするときに使うコマンド

概要

Redmineのプラグインを導入する際の基本的な手順をメモしておきます。

前提

こちらは筆者のメイン環境です。各自、自分の環境に合わせてください。

  • 既にRedmineがインストールされている状態
  • Ubuntu系OS
  • WebサーバとしてApache2を利用
  • Ruby on RailsでApacheと連携
  • RedmineはApacheの実行ユーザ(www-data)

インストールの基本

  1. A.プラグインを/redmine/root/directory/plugins配下に設置(必須)
  2. B.依存関係があるrubyプログラムをインストール(オプション)
  3. C.DBマイグレーション(オプション)
  4. D.Webサービス再起動(必須)
  5. E:動作確認(必須)

A-1:Zipファイルをダウンロードする場合の手順

A-1.1:作業用ディレクトリに移動します。

cd /hoge

任意のディレクトリを指定します。

A-1.2:ZIPファイルを入手します。

  • curl
  • wget
  • scpなどで転送
  • デスクトップを兼ねている場合はダウンロード

など、任意の手を用います。

A-1.3:ファイルを解凍します。

unzip plugin.zip

A-1.4:解凍されたファイル群のディレクトリの所有者を変更します。

sudo chown -R www-data:www-data plugin-hoge

バージョン番号が付与されているパターンが多いです

A-1.5:Redmineのプラグインディレクトリに配置します。

sudo mv plugin-hoge /redmine/root/directory/plugins/plugin

配置する際に、バージョン名などを消しておきます。

→ ここを行ったらB以降に進みます。


A-2:git cloneする場合の手順

A-2.1:Redmineのプラグインディレクトリに移動します。

cd /redmine/root/directory/plugins && pwd

自分の環境に合わせます。 (例:/var/lib/redmine)
筆者環境は/home/www-data/redmineです

A-2.2:git cloneを行います。

sudo -u www-data git clone git_repository 

大概はgithubのURLをそのまま(https://込み)です。

→ ここを行ったらB以降に進みます。


B: 依存関係があるrubyプログラムをインストールする場合の手順(オプション)

B-1: redmineのrootディレクトリに移動します。

cd /redmine/root/directory/ && pwd

自分の環境に合わせます。

B-2. Bundle installを行います。

sudo -u www-data bundle install

Bundle complete!と出たらOKです。

→ ここを行ったらC以降に進みます。


B-1: redmineのrootディレクトリに移動します。

cd /redmine/root/directory/ && pwd

自分の環境に合わせます。

C: DBマイグレーションを行う場合の手順(オプション)

C-1: redmineのrootディレクトリに移動します。

cd /redmine/root/directory/ && pwd

自分の環境に合わせます。

C-2: DBのマイグレーションを行います。

sudo -u www-data bundle exec rake redmine:plugins:migrate RAILS_ENV=production

エラーが出てこなければOKです。

→ ここを行ったらD以降に進みます。


D:Webサービスの再起動

  • Apache再起動
sudo systemctl restart apache2.service
  • サービス稼働確認
systemctl status apache2.service

active (running)を確認します。


E: 動作確認

  1. Redmineに管理者権限でログインします。
  2. 管理>プラグインに進みます。
  3. インストールしたプラグインがあることを確認します。
  4. 他の機能が動くことを確認します。

Redmine 5.xにknowlegebaseをインストール。

筆者にとってRedmineのキラーアプリだったknowlegebase。その5.x対応版が出たので導入を行います。

https://github.com/yzzy/redmine_knowledgebase

環境

  • Ubuntu 22.04
  • Apache 2.4
  • MySQL 8.0.3
  • Redmine 5.1

導入時

  • Gem追加:要
  • DBマイグレーション:要

※Redmine 4.2で実施した設定ファイルの退避や修正は不要でした。

さっくりとした手順

  1. SSHログイン後、Redmineプラグインに移動
  2. gitでレポジトリをダウンロード
  3. 新規ジェムをインストール
  4. DBマイグレーション
  5. Webサービス再起動

ディレクトリに移動します。

cd /home/www-data/redmine/plugins && pwd

自分の環境に合わせます。

プラグインを配置します。

  • git clone
sudo -u www-data git clonehttps://github.com/yzzy/redmine_knowledgebase
  • clone確認
ls -ld redmine_knowledgebase/

このディレクトリがあることを確認します

Gemをインストールします。

  • Redmineのルートディレクトリに移動
cd /home/www-data/redmine && pwd

自分の環境に合わせます。

  • bundle install
sudo -u www-data bundle install

DBのマイグレーションを行います。

  • Redmineのルートディレクトリに移動
cd /home/www-data/redmine && pwd

自分の環境に合わせます。

  • マイグレーション
sudo -u www-data bundle exec rake redmine:plugins:migrate RAILS_ENV=production

Webサービスを再起動します。

sudo systemctl restart apache2

動作後の確認

  1. Redmineに管理者アカウントでログインします。
  2. 任意のプロジェクトを選択して設定をクリックします。
  3. モジュール「knowledge」にチェックを入れて保存します。
  4. このように、プロジェクトにナレッジベースのタブが表示されていれば設定完了です。

Redmine: ガントチャートの見た目を調整。

https://atelier.reisalin.com/projects/ryza3/issues/gantt

メモ帳代わりのRedmineに『ライザのアトリエ3』のクエスト一覧を出しています。

ここのガントチャートが標準だと見切れてしまうので、プラグインで対応します。

プラグイン「redmine_gantt_tweak」

https://github.com/sk-ys/redmine_gantt_tweak

Redmineのプラグインディレクトリに移動します。

cd /home/www-data/redmine/plugins && pwd

自分の環境に合わせます。

git cloneを行います。

sudo -u www-data git clone https://github.com/sk-ys/redmine_gantt_tweak

www-dataはredmineの実行ユーザにします。

Redmine(Webサービス)の再起動を行います。

sudo systemctl restart apache2.service 

Redmineで設定を行います。

  1. プラグインを導入したRedmineサイトに管理者権限でログインします。
  2. 任意のプロジェクトに移動します。
  3. モジュール「Gantt Tweak」にチェックを入れて保存します。

保存後、「gantt teak」のタブが表示されるので、これをクリックします。

任意の幅(ここでは600)を指定して保存します。

保存後、ガントチャートに移動し、表示幅が広がっていることを確認します。

Redmineにダークモードを追加する。

概要

Redmineにダークモードを追加するプラグインを導入しました。

動作を確認した環境

  • Redmine 4.2
    • Ubuntu 20.04
  • Redmine 5.1
    • Ubuntu 22.04

ともにApache2.4 / MySQLです。

さっくりとした手順

  1. gitでリポジトリをcloneします。
  2. Webサービス(Redmine)の再起動を行います。
  3. 動作を確認します。

Redmineのプラグインディレクトリに移動します。

cd /home/www-data/redmine/plugins && pwd

自分の環境に合わせます。

git cloneをします。

sudo -u www-data git clone https://github.com/fraoustin/redmine_dark

サービス再起動を行います。

sudo systemctl restart apache2.service

動作確認

プラグインを入れたRedmineにアクセスすると、画面右上に「dark mode」が表示されるので、これをクリックします。

例:https://atelier.reisalin.com/

クリック後、画面が切り替わればOKです。

  • 再度「dark mode」をクリックすれば元に戻ります。
  • 本プラグインはブラウザから見た目を変更するため、全てのユーザ(未登録ユーザ含む)が利用可能です。

redmine5.1にインストールされているAdditilonals/Addtional_tagsプラグインをアップデート

概要

Redmineに強力なマクロをもたらすAdditonal Pluginsとタグ付けでチケット間の横断検索を可能にするAdditional_tagsプラグインをアップデートします。

環境

  • Ubuntu 22.04
  • Redmine 5.1
  • Apache2
  • MySQL
  • Ruby 3.0

で稼働しています。

※このプラグインの2024/04/30現在の最新バージョンは、Redmine 4.2には非対応です※

さっくりとした手順

  1. DBのバックアップを取ります。
  2. additonalsのバージョンアップを行います。
  3. additonal_tagsのバージョンアップを行います。
  4. 動作を確認します。

DBバックアップ

影響範囲が大きいので、DBのバックアップは取っておきます。

  • バックアップディレクトリに移動
cd /path/to/backup/directory && pwd

任意のディレクトリを指定します。

  • DBバックアップ
mysqldump -h localhost -u redmine -p --no-tablespaces --single-transaction redmine > redmine_backup.$(date +%Y%m%d).sql
  • u redmineのDBユーザー
  • --no-tablespaces --single-transaction DB名

です。自分の環境に合わせます。

  • DBバックアップ確認
less redmine_backup.$(date +%Y%m%d).sql

内容が閲覧できることを確認します。

Additonalsアップデート

  • プラグインディレクトリに移動
cd /home/www-data/redmine/plugins/additonals && pwd

Redmineのプラグインディレクトリは自分の環境に合わせます。

  • git pull
sudo -u www-data git pull
  • Redmineのルートディレクトリに移動
cd ../../ && pwd
  • bundle
sudo -u www-data bundle install
  • マイグレーション
sudo -u www-data bundle exec rake redmine:plugins:migrate RAILS_ENV=production
  • Redmine(apache)サービス再起動
sudo systemctl restart apache2.service

Additonal_tagsアップデート

  • プラグインディレクトリに移動
cd /home/www-data/redmine/plugins/additional_tags && pwd

Redmineのプラグインディレクトリは自分の環境に合わせます。

  • git pull
sudo -u www-data git pull
  • Redmineのルートディレクトリに移動
cd ../../ && pwd
  • bundle
sudo -u www-data bundle install
  • マイグレーション
sudo -u www-data bundle exec rake redmine:plugins:migrate RAILS_ENV=production
  • Redmine(apache)サービス再起動
sudo systemctl restart apache2.service

additonal_tagsがadditonalsに依存しているプラグインのため、安全策として1回ずつ再起動しています。

動作確認

Redmineに管理者権限でログインし、正常に動作することを確認できれば動作完了です。

Redmineサイトの区別。(Watermarkプラグイン)

家と公開用のRedmineで同じテーマを使っているので、「どちらのサイトにいるか」が少し分からなくなります。

そこで、こういうプラグインを付けてみました。

Redmine Watermark

https://github.com/witcan/redmine_watermark

その名の通り、サイト全体にウォーターマークをつけるプラグインです。

インストール

  • Redmineのプラグインディレクトリに移動
cd /var/lib/redminep/pugins && pwd

自分の環境に合わせます。

  • git clone
sudo -u www-data git clone https://github.com/witcan/redmine_watermark
  • サービス再起動
sudo systemctl restart apache2.service

アプリを動かしているサービスを再起動させます。

導入後の設定

Redmineに管理者権限でログイン後、

管理>プラグイン>Redmine Watermarkに進みます。

  • Enable watarmark :チェック
  • ユーザ名や現在日付、テキストなどを入力して保存します。

サイトの背景にすかしが表示されれば設定完了です。

Redmineにチケットの終了日を知らせるプラグイン。

概要

そのチケットがいつ閉じられたかを詳細に表示させます。

シンプルで便利なプラグインです。

動作を確認した環境

  • Ubuntu 20.04 / Redmine 4.2
  • Ubuntu 22.04 / Redmine 5.1

両方で動きました。また、両方ともApache環境です。

手順

  • ディレクトリ移動
cd /var/lib/redmine/plugins && pwd

自分の環境に合わせます。

  • git clone
sudo -u www-data git clone https://github.com/fraoustin/redmine_closed_date
  • マイグレーション
sudo -u www-data bundle exec rake redmine:plugins:migrate RAILS_ENV=production
  • サービス再起動
sudo systemctl restart apache2.service
  • 動作確認

クローズしたチケット詳細に「クローズしたチケット」とその日付が出てくればOKです。

再評価の全文検索プラグイン。(Redmine 5.1検証)

ほぼ一年前、涙を呑んでアンインストールした全文検索プラグイン。

事情が変わったので再評価です。

理由1:プラグインでの支障が無くなった

これを諦めた最大の理由は、knowlegebaseプラグインの存在。

各種文書を記録できるこのプラグインは、導入当初:このプラグインがRedmine 4.2までしか対応していないからバージョンを落として使っていたほどです。

ところが5.0以降では(githubでは)使えないということで開き直ることができました。

knogwlegebaseという足かせがなくなれば、

  • チケットを細かく検索できる
  • 設定によって類似したチケットを表示する

このプラグインは高評価となります。

理由2:文書の保管に適したツールを見つけた

Bookstackを見つけたのが思いのほか大きいです。これによって、Wiki形式の文書のストックをこちらに出すことができます。

こちらも全文検索機能付きでバージョン管理も容易。

「使った当初は諦めたけど、事情やバージョンにより評価が変わる」話でした。

Redmine5.1検証-4.2で使っていたプラグインの稼働可否(動いたプラグイン)-

概要

Ubuntu 20.04系のEOLに備えて、Redmineも5.1で動かし筒あります。そんな中で、「今まで使っていたプラグインが動くかどうかを確かめました。

動いたプラグイン

まずは動いたプラグインです。

プラグイン名機能URL備考
Redmine Logsログの表示や削除を行うhttps://github.com/haru/redmine_logs最初に入れます(障害切り分けのため)
Additionals様々なマクロを提供https://github.com/alphanodes/additionals使い勝手が大きく変わります
Additonal Tagsチケットのタグ付けを行うhttps://github.com/alphanodes/additional_tags/上記、Addtionalsが必須です
full_text_searchチケット全文検索https://github.com/clear-code/redmine_full_text_search逆に4.2で動かしていなかったものです
RedMica UI extensionMermaid対応/バーンダウンチャート追加などhttps://github.com/redmica/redmica_ui_extensionこれも最初の方に入れるプラグインです
DMSFファイル機能拡充https://www.redmine.org/plugins/redmine_dmsfRedmineが機能不全に陥る可能性がありますのでインストール時は要注意
Redmine Issue Badge割り当てられているチケットの数を表示https://github.com/akiko-pusu/redmine_issue_badgeモチベーション維持に有用です
Redmine Issue Templateチケットやコメントのテンプレート化https://github.com/agileware-jp/redmine_issue_templates4.2対応版とメンテナが変わっています。
Redmine Local Avatarsアカウントのアイコンを任意の画像に変えるhttps://github.com/ncoders/redmine_local_avatarsこれも個人で使っているならモチベーション維持につながります
Redmine Message Cutomize各種用語を変更しますhttps://github.com/farend/redmine_message_customizeローカライズされていないもの(誤訳)などに対応
Redmine View Customize見た目や機能の拡充など、Redmineにおけるアーミーナイフのような頼れる存在ですhttps://github.com/onozaty/redmine-view-customize非常に優先度が高いプラグインです

動かなかったプラグインやワークアラウンドは後日。

Page 1 of 5

Powered by WordPress & Theme by Anders Norén