タグ: redmine Page 11 of 14

療養時の“ロギング”。

本来、別の用途で作っていたこれがはからずも役立ちました。

外部からつながるredmine

上述したredmine、

スケジュールの他に「プロジェクト」に分け、様々なことを記録。Webアクセスできる環境ならばメモができる仕組みを整えていたのが幸いしました。

記録

ここに、以下のようにして、今回の療養について記録をしています。

日毎のチケット

「2022/07/11の記録」といったようにチケットを発行し、

  • 体温測定の記録
  • 食べたもの
  • 体調/症状
  • その他特記事項

を記していくという次第。

これなら、後で検索を行えますし、症状の改善/悪化を追うことができます。

なにより、この「療養」も立派なプロジェクトの一つ。成功と完遂を祈るばかりです。

Mod SecurityによるIPアドレスブロック。(ネガティブリスト型)

攻撃の兆候

Mod Securityを導入して一昼夜――

公表していないURLであるにも関わらず、しっかりと攻撃の予兆がログに現れました。

※この方法で、サーバにアクセスすることなく、redmineへのログを一元管理しています。

この、不正アクセスの予兆を示したアクセス元を調べると

Torから来ている望ましくないものまであり、昨今の驚異を嫌でも感じずにいられません。

そこで、Apacheの設定ファイルではなくMod Securityの機能を用いてIPアドレスを遮断していきます。

参考:

Apache×Mod SecurityでカンタンWAF構築

https://qiita.com/m0nch1/items/ac7255399366fb113a82

環境

  • Ubuntu 20.o4 (Linux Mintでも同様)
  • Apache 2.4
  • Mod Security導入済み

手順

すべて管理者権限で実施しています。

バーチャルファイル編集

vi /etc/apache2/sites-available/VIRTUALHOST.conf
# 使っているバーチャルファイルに読み替えます
追記内容
## Negativelist
SecRule REMOTE_ADDR "@pmFromFile negativelist.txt" "phase:1,id:2,deny,msg:'Negativelisted IP address'"

ネガティブリスト作成

vi /etc/etc/apache2/sites-available/negativelist.txt
ネガティブリストの内容
XXX.XXX.XXX.XXX
YYY.YYY.YYY.YYY
#ブロックしたいIPアドレスを記入していきます
# 設定確認のため、自分自身のアクセス元を記入しました

ネガティブリスト反映

cd /etc/apache2/site-enabled
ln -s ../sites-available/negativelist.txt negativelist.txt
# 設定ファイルの位置を明示していないのでシンボリックリンクを張ります

設定変更

apache2ctl configtest
#Syntax OK を確認します
systemctl restart apache2

設定確認

上記手順で、「自分自身をブロックする」設定を入れ、redmineにアクセスして「403」が返ってくることとエラーログにその旨が記録されていることを確認。(その後、このアドレスは削除しています)

今後の展望

  • 不正アクセスを検知したらそのIPアドレスを自動的に追記する
  • 数が増え続けるため、いっそのことポジティブリストに切り替える

などが必要になってきます。

Apache + redmine環境にMod Security導入。

インターネット環境に構築したredmineに不正アクセスが飛んでくるというエントリーを投稿したところ、

「Mod Security導入も一つの手」

というコメントをいただき、早速導入することにしました。

環境

  • Ubuntu 20.04 (Linux Mintでも動作確認済み)
  • Apache 2.4

参考

インストール方法

全て管理者権限で実施しました。

システム全体のアップグレード

aptitude update
aptitude upgrade

Ubuntu 20.04にMod Securityをインストールします。

aptitude install libapache2-mod-security2
systemctl restart apache2

ModSecurity 設定ファイル/ディレクトリをコピーしていきます。

cp -pi /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
cd /tmp
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git
cd /owasp-modsecurity-crs
cp -pi crs-setup.conf.example /etc/modsecurity/crs-setup.conf
cp -pir rules/ /etc/modsecurity/

ModSecurityの設定を行います。

vi /etc/apache2/mods-available/security2.conf
設定ファイル内容
<IfModule security2_module>
   # Default Debian dir for modsecurity's persistent data
   SecDataDir /var/cache/modsecurity

   # Include all the *.conf files in /etc/modsecurity.
   # Keeping your local configuration in that directory
   # will allow for an easy upgrade of THIS file and
   # make your life easier
   IncludeOptional /etc/modsecurity/*.conf
   Include /etc/modsecurity/rules/*.conf
</IfModule>

設定反映

systemctl restart apache2

redmine設定ファイル修正

vi /etc/apache2/sites-available/VIRTUALHOST.conf
# 各自のバーチャルホストファイルに読み替えます
追記内容
# Mod Security
SecRuleEngine On
## ModSecurity有効化
SecRequestBodyInMemoryLimit 524288000
SecRequestBodyLimit 524288000
## ファイルのアップロードをできるようにします。
SecRuleRemoveById 949110
SecRuleRemoveById 941310
SecRuleRemoveById 980130
SecRuleRemoveById 911100
SecRuleRemoveById 200002
SecRuleRemoveById 200003
## 上記を無効化しないとチケット更新時にエラーとなりました(偽陽性)ため、上記ルールを除外します。
    SecRule ARGS:modsecparam "@contains test" "id:4321,deny,status:403,msg:'ModSecurity test rule has triggered'"
## テスト用の検知パラメータを付け加えます。

設定反映

systemctl restart apache2

設定確認

ブラウザから

http://your-site-domain/redmine/?modsecparam=test

にアクセスし、「Forbidden」が表示されることを確認します。

また、

  • チケットの更新ができること
  • ファイルのアップロードができること

をそれぞれ確認しました。

redmineにショートカット機能を追加 。(プラグインredmine_shotrcutsを導入)

概要

「ありそうでなかった」というよりも「導入後、これなしでは考えられない」レベルに達したいいプラグインを手に入れました。

タイトルにあるように、Redmineにキーボードショートカットを追加するプラグインです。

環境

  • LinuxMint 21.03
  • Redmine 4.2
  • Apache 2.4

手順

全て管理者権限で実施しました。

プラグイン配置

cd /var/lib/redmine/plugins
# 各自のplugin配置ディレクトリに読み替えてください
sudo -u www-data git clone https://github.com/davidegiacometti/redmine_shortcuts.git

設定反映

systemctl restart apache2

導入後の設定

特にありません。導入後、redmineのトップページに

Redmine shortcuts

と表示されます。こちらをクリックすると

と、ショートカットのサマリーが表示されます。

特に便利だと思ったのがMarkdown記述をするときのショートカット。

強調したい文章を囲み、「Ctrl + B」すると

自動的にMarkdownを補完してくれます。さながら、redmineが高機能エディタとして使えるわけです。

redmineプラグイン起因のエラー解消。(プラグインアンインストール)

概要

redmineはプラグインによる機能追加が最大の魅力。ですが、導入後、

  • バージョンが合わない
  • 他のプラグインとの相性
  • DBやOSの環境

により、画像のようなエラーが多々発生して全てのページが閲覧できない事象が発生します。

今回、それらを解消する方法をメモとして記載します。

手順

全て管理者権限で実施しました。

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

cd /var/lib/redmine/plugins
# 各自のplugin配置ディレクトリに読み替えてください
 bundle exec rake redmine:plugins:migrate NAME=[プラグイン名] VERSION=0 RAILS_ENV=production

プラグインのディレクトリ削除

cd /var/lib/redmine/plugins
# 各自のplugin配置ディレクトリに読み替えてください
rm -rf [プラグイン格納ディレクトリ]
systemctl restart apache2

アンインストール後の確認

redmineのトップページにアクセスし、上記のエラー画像がないことを確認します。

ApacheによるredmineサイトのIPブロック。

事の発端

AWS Lightsailを利用して外部公開しているredmine。(Apache2.4/redmine 4.2)
アクセスログを確認すると以下の不審なIPからログインを試みている痕跡がありました。

これは無差別攻撃を仕掛けられているのでは? と思い、対処を行いました。

以下、その時のメモとなります。

IP アドレスチェック

https://www.abuseipdb.com/

こちらのサイトを利用して、アクセス元のIPアドレスが攻撃を意図しているものかを確認します。

ものの見事に「Confidence of Abuse is 100%」と出ました。

対処方針

ドメイン等を公称していなくても、この手の不正アクセスはついて回ります。
(自分が当初ローカルでredmineを構築したのは、これを避けるためだという明確な理由がありました)

本来なら「指定したIPのみ許可する」ポジティブリストにすべきですが、出先からでもアクセスしたいのでこの方法は使えません。

そこで、今回は対処療法と承知していても「不審なアクセスがあった元をブロックする」ネガティブリスト型で実施します。

参考:
https://notepad-blog.com/content/196/

手順

今回、以下の環境で動作確認をしました。

  • Linux Mint 20.3
  • Apache 2.4
  • redmine 4.2

全て管理者権限で実施しました。

confファイルのバックアップを取ります。

/etc/apache2/sites-available
mkdir ../old
cp -pi redmine.conf ../old/redmine.conf.yyyymmdd
# バーチャルファイルは適宜読み替えてください

confファイルを以下のように修正します。

修正前の箇所
<Location /redmine>
PassengerBaseURI /redmine
PassengerAppRoot /var/lib/redmine
Require all granted
</Location>
修正後の箇所
<Location /redmine>
PassengerBaseURI /redmine
PassengerAppRoot /var/lib/redmine
<RequireAll>
Require all granted
# 2022/05/23 from hoge
Require not ip xxx.xxx.xxx.xxx
</RequireAll>
</Location>
差分
 PassengerBaseURI /redmine
 PassengerAppRoot /var/lib/redmine
+<RequireAll>
 Require all granted
+# 2022/05/23 from hoge
+Require not ip xxx.xxx.xxx.xxx/xx
# ブロックしたいIPを指定
# 後のメンテナンスを考えて、NWアドレス単位で指定します
+</RequireAll>
 </Location>

構文確認後、apacheサービスを再起動します。

apache2ctl configtest
# syntaxOK を確認します
systemctl restart apache2

サービス再起動後、正常に表示されることを確認します。
(最初は自分がアクセスしているIPを指定して「redmineにアクセスできないこと」を確認した方が確実です)

まとめと今後の展望

AWSのACLならGUIでの設定は用意ですが、上述したように、今回の処置は対処療法にすぎません。また、ネガティブリスト型のブロックには限界があります。
他の効率的な方法や、アクセスされても被害の拡大を防ぐ手段を考えていくのが目下の課題です。

「リファレンス」の追加。(redmine_glossary_plugin導入)

概要

  • コマンド一覧
  • ツールの場所

など、50音順で参照して確認したい情報は多々あります。その情報を確認するため、以下のプラグインを導入しました。

redmine_glossary

このように、「用語集」を追加できるプラグインです。

環境

  • LinuxMint 21.03
  • Redmine 4.2
  • Apache 2.4

手順

全て管理者権限で実施しました。

プラグイン配置

cd /var/lib/redmine/plugins
# 各自のplugin配置ディレクトリに読み替えてください
sudo -u wwww-data git clone https://github.com/torutk/redmine_glossary.git
# オリジナルからForkした4.2環境でも動くバージョンです

設定反映

cd ../
bundle install
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
systemctl restart apache2

導入後の設定

  1. 各プロジェクトで「用語集」を有効にします。
  2. 用語を追加していきます。
  3. Wiki記法に沿って画像の挿入も可能です。 

「かんばん」によるスケジュールの可視化。(redmine kanban プラグインフィードバック)

AWSによって外部環境からアクセスできるようになったredmine。思った以上に威力を発揮してくれました。

redmineによるスケジュール管理方針

「1案件に付き1つのチケット」を発行しています。

例えば:ボドゲ会を執り行うスケジュールがあるとすれば

概要に主だった物(見切れているところに日時や場所)を記載し、

過程を書いておくことで「なぜその結論に至ったか」のフィードバックを行えます。

何より、外出先でも見られる/編集できるのは心理的な安心感ももたらしてくれました。

かんばん

これらチケット管理に特に役立っているのがこの「かんばん」プラグイン。

  • チケット(スケジュール)がどのぐらいあるか
  • 期日までどれぐらいか
  • 優先度

などを一瞥できるのはとても便利。

また、

リマインダーメールはこちらでも設定したので、「適切な期日を設定していれば」漏れることもありません。

この手のプロジェクト管理ツール、使い方次第で個人用途のツールとなると実感です。

redmine、添付ファイルのカテゴライズ。( redmine_attachment_categories プラグイン導入)

概要:redmine_attachment_categories

チケットに添付する添付ファイル。関連するものを放り込んでいくうちにどれがどれだか分からなくなるパターンが多々発生します。
それを解消するために添付ファイルそのものをカテゴライズします。

環境

  • LinuxMint 21.03
    • Ubuntu20.04でも動作確認済み
  • Redmine 4.2
  • Apache 2.4

手順

全て管理者権限で実施しました。

プラグイン配置

cd /var/lib/redmine/plugins
# 各自のplugin配置ディレクトリに読み替えてください
sudo -u wwww-data git clone https://github.com/HugoHasenbein/redmine_attachment_categories.git

設定反映

cd ../
bundle install 
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
systemctl restart apache2

導入後の設定

設定1

  1. redmineに管理者権限でログインします。
  2. 管理>プラグイン>Attachment Categoriesに移動します。
  3. 好みのスタイルに変更します。

設定2

  1. redmineに管理者権限でログインします。
  2. 管理> Attachment categoriesに移動します。
  3. カテゴリーの名称やタグの色を変えられます。 

導入後の動き

ファイルの添付時、カテゴリーごとにラベルを貼ることができます。

AWSのLightsailでredmineを構築。

ローカル環境で大いに役立っているredmine。

「いっそのこと、スケジュール管理をこっちに一任してしまおう」

と決めたはいいのですが、自宅からしかアクセスできないのがネックとなります。

そこで採用した手段がこちらです。

AWS Lightsail

AWSの従量課金が怖いなと思ったところで知ったLightsail

  • 月額USD10ほどで利用でき(最安はUSD5)
  • 定額
  • 簡略化されているとは言えDNSも容易
  • OSとWebアプリのバンドル版もあり

と、言うことなしの環境でした。

Redmine構築までの流れ

以下のようにしました。

  1. ドメインを取得(完全に私的に用いるためここでは非公開です)
  2. AWSアカウント取得
  3. LightsailでUbuntuのみを立ち上げ(redmineのバンドルもありましたけれど、バージョン5は愛用しているプラグインとの関係から一から作ります)
  4. Ubuntuインスタンスに静的IPを付与
  5. それを元にドメイン設定
  6. Ubuntuログイン後
    1. アクセス用のアカウント付与
    2. 秘密鍵認証できるように設定
    3. デフォルトのアカウントを実質的に無効化(公開鍵を所定の場所からずらしました)
    4. OSアップデート
  7. redmineインストール
  8. Let's Encryptで暗号化

暗号化チェック

無事、QualysのSSL強度チェックでも最高評価「A+」を撮ることが出来たので一安心。(この方法は別途記事に起こす予定です)

Page 11 of 14

Powered by WordPress & Theme by Anders Norén