プロジェクト

全般

プロフィール

 

他の形式にエクスポート: PDF

Redmine4.2のファイルサーバ化。(Redmine_dmsf) ※脆弱性注意※

※注意事項※

2024/05/29現在、 Redmine 4.2に対応しているバージョンのDMSFプラグインはパストラバーサルの脆弱性があります。

https://jvn.jp/jp/JVN22182715/index.html

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

  • Redmineを単独ユーザーで運用していない限りは、以下のオプションを強く推奨します。
    • Redmine及びOS全体のバージョンアップを図る。
    • 本プラグインを無効化する。

はじめに

Redmine 5.1で運用したい場合は、以下を参照してください。

https://atelier.reisalin.com/projects/zettel/knowledgebase/articles/78

概要

Redmineをファイルサーバのように扱うプラグインをインストールします。

  1. Redmine 4.2でも動く環境でのインストール手順
  2. Redmine本体の設定を修正する手順
  3. Windows 11でのWebDAVを有効にする手順

をそれぞれ追加しました。

備考

  • この作業、下手すればRedmine全体が使えなくなる作業です。(実際にRedmineが使えなくなりました)
  • そのため、DBのバックアップとリストアによる切り戻し手順も込みです。
  • そもそも:WebDAVを有効化するかどうかは組織のセキュリティポリシーに関わる問題です。有効化すべきか否かは事前に了承を取ってください。
  • また、Redmineサーバ上のインターネット利用において、WebDavの使用は非推奨です。
    • 本サイトではWebDavを無効化しています。

2023/11/08追記

MicrosoftはWebDavを「非推奨」とする方針を打ち出しました。

https://forest.watch.impress.co.jp/docs/news/1544482.html

プラグイン名

動作を確認した環境

  • Redmine 4.2
  • mysql Ver 8.0.31
  • Windows 11 (WebDav設定)

WebDav接続の前提

  • Redmineがhttps化されていること。
  • 証明書をWindowsにインポートしていること。

導入時

  • 追加パッケージのインストール:要
  • 設定ファイルの修正:要
  • Gem追加:要
  • DBマイグレーション:要
  • Windows設定:要 (WebDav接続をする場合のみ)

さっくりとならなかった手順

  1. 念のためDBバックアップ
  2. SSHログイン後、追加パッケージをインストール
  3. 設定ファイルの書き換え
  4. Redmineプラグインに移動
  5. gitでレポジトリをダウンロード
  6. 新規ジェムをインストール
  7. DBマイグレーション
  8. Webサービス再起動
  9. Redmine設定変更
  10. WebDAVサービス有効化(Windows作業)
  11. 切り戻し手順(それでも失敗した場合)

mysqldumpによるバックアップ

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

任意のバックアップディレクトリに移動します。

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

それぞれ-h ホスト名 -u redmine -p ユーザオプションdb名`です。

パスワードはredmineインストール時に設定したDBユーザのものです

環境が許すなら、AWSのようにシステム全体のバックアップを取った方が後腐れがありません。

動作に必要な追加パッケージのインストールと設定

  • 追加パッケージをインストールします。
sudo aptitude install xapian-omega ruby-xapian libxapian-dev poppler-utils antiword  unzip catdoc libwpd-tools libwps-tools gzip unrtf catdvi djview djview3 uuid uuid-dev xz-utils libemail-outlook-message-perl

Redmineコンフィグファイルの修正

  • Redmineコンフィグ配置ディレクトリに移動
cd /home/www-data/redmine/config/ && pwd

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

  • additional_environment.rbの作成(この作業をしていないなら必要です)
sudo cp -pi additional_environment.rb.example additional_environment.rb

addtional_environment.rbの追記

cat <<- __EOF__ | sudo tee -a /home/www-data/redmine/config/additional_environment.rb
# Redmine DMSF's WebDAV
require File.dirname(__FILE__) + '/plugins/redmine_dmsf/lib/redmine_dmsf/webdav/custom_middleware'
config.middleware.insert_before ActionDispatch::Cookies, RedmineDmsf::Webdav::CustomMiddleware
__EOF__

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

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

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

任意の作業ディレクトリに移動し、そのディレクトリにいることを確認します。

  • パッケージ取得
wget https://github.com/danmunn/redmine_dmsf/archive/refs/tags/v3.0.5.zip
  • アーカイブ展開
unzip v3.0.5.zip
  • 所有者変更
sudo chown -R www-data:www-data redmine_dmsf-3.0.5
  • ディレクトリ移動&名前変更
sudo mv redmine_dmsf-3.0.5/ /home/www-data/redmine/plugins/redmine_dmsf

移動先のディレクトリは自分の環境のプラグイン配置ディレクトリです。ディレクトリ名から-3.0.5を取り除くのを忘れないでください。

  • ディレクトリ移動確認
ls -ld /home/www-data/redmine/plugins/redmine_dmsf

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

プラグインインストール

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

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

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

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

sudo systemctl restart apache2

以上でインストールは終わります。

Redmine設定変更

WebDAV有効化

  1. Redmineに管理者アカウントでログインします。
  2. 管理>プラグイン>DMSFの「設定」をクリックします。
  3. 以下のように修正します。
    1. WebDAV:有効 (デフォルト)
    2. WebDavアクセス制御:読み書き可能
  4. 任意のプロジェクトに移動します。
  5. 「設定」をクリックし、「文書管理」にチェックを入れます。
  6. また、Redmine管理画面の「ロールと権限設定」で、ユーザのアクセス権を忘れないようにしてください。(「文書管理」のセクションです)

Windows : WebDAVサービス有効化

  1. Windows 11のスタート画面からwindows featuresと入力。Windowsの機能の有効化または無効化を起動します。
  2. SMB 1.0/CIFS ファイル共有のサポート全てにチェックを入れます。
  3. OKをクリックして再起動します。

接続確認

  1. エクスプローラーを開きます。
  2. PCに移動し、右クリックから「ネットワークの場所を追加する」をクリックします。
  3. 次へ > カスタムネットワークの場所を選択 >次へと進みます。
  4. 「インターネットまたはネットワークのアドレスは以下のように指定します。
    1. https://[ドメイン名]/dmsf/webdav/[プロジェクト識別子]
  5. 「次へ」をクリック後、資格情報を確認されるので、Redmineのアカウントを入力します。
  6. エクスプローラーウィンドウが表示され、ファイルの読み書きができれば設定完了です。

おまけ:切り戻し手順

この作業、バージョン変更や設定ミスで軽くRedmine全体が機能不全に陥ります。そのため、切り戻し手順を記しておきます。

通常の切り戻し

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

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

  • プラグインアンインストール
sudo -u www-data bundle exec 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リストア)

  1. プラグインのアンインストールを行い
  2. プラグインを削除した

としても、不具合が発生します。筆者の具体例で言うと、 チケットの作成や詳細表示で500 Internal Errorが発生しました。

  • DBをバックアップしたディレクトリに移動
cd /hoge && pwd

mysqldumpを行ったディレクトリに移動します。

  • DBリストア
mysql -h localhost -u redmine -p redmine < redmine_backup.$(date +%Y%m%d).sql

パスワードはredmineインストール時に設定したDBユーザのものです。

  • Webサービス再起動
sudo systemctl restart apache2.service
クリップボードから画像を追加 (サイズの上限: 50 MB)