タグ: Linux Page 22 of 24

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. カテゴリーの名称やタグの色を変えられます。 

導入後の動き

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

Let’s EncryptによるSSL証明書取得と暗号化の強化。

宅内オンプレだけではなくAWSでの運用も始めたredmine。こちらではドメインを取得するためmkcertではくLet's Encryptで証明書を取得します。

環境

  • OS:Ubuntu 20.04
  • Apache 2.4

手順

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

Let's Encryptのcertbotをインストールします。

aptitude install certbot python3-certbot-apache

botの指示に従って証明書を取得します。

certbot --apache

ウィザードに従って設定するだけの非常に簡単な作業。その後、以下のファイルが作成されます。

/etc/apache2/sites-available/redmine-le-ssl.conf
# 既に作成しているバーチャルファイルの内容をコピーしてSSLの設定が追加されていました

SSL接続強化準備

以下のモジュールを有効にして再起動します。

a2enmod headers
a2enmod rewrite

ファイル編集

vi /etc/apache2/sites-available/redmine-le-ssl.conf
ファイルの内容
<VirtualHost _default_:80>
 RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# http通信を強制的にhttpsにリダイレクト
</VirtualHost>

<VirtualHost _default_:443>
servername servername
CustomLog /var/log/redmine/access.log combined
ErrorLog /var/log/redmine/error.log
# アクセスログ格納ディレクトリ
Alias /redmine /var/lib/redmine/public
<Location /redmine>
PassengerBaseURI /redmine
PassengerAppRoot /var/lib/redmine
Require all granted
</Location>

# redmineの設定

  SSLEngine on
    SSLProtocol All -SSLv2 -SSLv3  -TLSv1
     SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
SSLHonorCipherOrder On 
SSLOptions +StrictRequire
Header set Strict-Transport-Security: "max-age=31536000; includeSubDomains; preload"

# 弱いSSLを無効化し、HSTSを有効化しています

SSLCertificateFile /etc/letsencrypt/live/serverdomain/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/serverdomain/privkey.pem

# let's encryptの設定通りです
#Include /etc/letsencrypt/options-ssl-apache.conf

# バーチャルファイル上で用いる暗号化強度を明示しているのでlet's encryptの設定はコメントアウトしています
        RewriteEngine On
        RewriteCond %{HTTP_HOST} ^server\.domain
        RewriteRule ^/$ https://server.domain/redmine/ [R]

# https://server.domainをhttps://server.domain/redmine にリダイレクトします
</VirtualHost>

設定を反映します。

cd /etc/apache2/sites-enable
unlink redmine.conf
# 既存のconfファイルを無効化
apache2ctl configtest
# syntax OKを確認
systemctl restart apache2

この設定後、SSL強度チェックで

A+を獲得しました。

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+」を撮ることが出来たので一安心。(この方法は別途記事に起こす予定です)

redmine、サムネイルの改善。(redmine_lightbox2プラグイン導入)

概要

この記事に続き、「見た目は地味だけど便利なプラグイン」導入です。

導入のきっかけ

ゲームの進捗状況をスクリーンショットに残していますが、

  • べた貼りだとスクロールが重畳
  • かといってサムネイルは画像内テキストが読めない
  • ダウンロードは面倒

という問題がありました。それを以下のようにして解決です。

Redmine lightbox2 plugin

環境

  • Redmine 4.2
  • Linux Mint 20.03
  • apache2.4

手順

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

ファイル配置

cd /var/lib/redmine/plugins
#redmineのpluginディレクトリ
sudo -u www-data git clone https://github.com/paginagmbh/redmine_lightbox2.git

インストール、設定反映

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

導入後の設定

ありません。

導入後の結果

チケットのコメントに登録された画像をクリックすると

lightboxがモーダル表示。これで

  • 必要なときだけ画像拡大
  • 参照したいときはチケット内に起こしたテキストを読めばいい

の多段階での運用が可能になりました。

自室内サーバの監視・運用状況。

本格運用一ヶ月経過

「検証機ではなく、redmine専用サーバを作る。そのバックアップサーバも用意して監視する」を初めて一ヶ月。

そこで少し見えてきたことを報告です。

ディスク使用量

バックアップサーバ兼Zabbixサーバ

写真アルバムもあるので/home領域は結構利用しています。場合によってはSSDの差し替えも考慮に入れます。

redmine サーバ

redmine は余裕の容量。ただ、データは確実に膨れ上がるので、注視する必要があります。

CPU 利用率

夜中の3時に少し上昇。これは

ClamAV でウイルススキャンを行っている状態。逆に言えば、この上昇率があることで定期スキャンは動いていると判断できます。

今後の展望

  • バックアップサーバの容量不足は今年中に考えておく。
  • redmine は予定通り。
  • 各種障害に対する備えを決めておく。

redmineサーバのウイルス対策。(ClamAVインストール)

redmineをファイルサーバ化したことでセキュリティ対策が更に重要となりました。

そこで、アンチウィルスソフトを入れることにします。

参考:
https://qiita.com/kannkyo/items/1cc32231afad88c11d8e

環境

  • Linux Mint 20.03
    • 2022/04/24時点でのアップデート完了済み
  • インストールしたClamAVのバージョン:0.103.5

インストール

必要なパッケージをインストールします。

aptitude install clamav clamav-daemon

サービスを起動します。

systemctl start clamav-daemon
systemctl start clamav-freshclam
systemctl enable clamav-daemon
systemctl start clamav-freshclam

動作チェック

cd /tmp
wget http://www.eicar.org/download/eicar.com
#Eicarテストファイルのダウンロード
clamscan --infected --remove --recursive /tmp
# tmp配下をスキャンし、ウィルスを取り除きます
動作後のログ
/tmp/eicar.com: Win.Test.EICAR_HDB-1 FOUND
/tmp/eicar.com: Removed.

----------- SCAN SUMMARY -----------
Known viruses: 8613020
Engine version: 0.103.5
Scanned directories: 21
Scanned files: 8
Infected files: 1
Data scanned: 0.35 MB
Data read: 0.17 MB (ratio 2.02:1)
Time: 36.374 sec (0 m 36 s)
Start Date: 2022:04:24 14:42:12

動くことを確認しました。

次はこれを定期スキャンするように設定していきます。

VNCを利用したLinuxへのリモートデスクトップ

概要

普段、宅内サーバにはSSHでログインしているものの、デスクトップで確認したいときがあります。そのため、リモートデスクトップ環境を整えました。

前提

Linuxデスクトップが動いていること。

接続先(Linux側)の手順

一般のユーザで行います。(root環境でリモートデスクトップ接続できてしまうため

VNCサーバのインストールを行います。

sudo aptitude install tigervnc-standalone-server 

インストール後の設定と起動を行います。

vncpasswd
#接続用のパスワードを設定します
vncserver -localhost no
起動確認を行います。
vncserver -list

TigerVNC server sessions:

X DISPLAY #     RFB PORT #      PROCESS ID
:1              5901            13062
# この:1は接続元で用います

のように表示されれば大丈夫です。

接続元(Windows)の手順

適当なVNCクライアントをダウンロード&インストールします。

RealVNCを用いました。

接続を行います。

  1. RealVNC(VNCビューア)を起動します。
  2. 接続先のホスト名/IPアドレス:(vncserver -listで出てきた番号)を入力します。
  • 例 hoge.hogehoge:1
  1. vncpasswdで設定したパスワードを入力します。(ユーザパスワードでないことに注意してください)

デスクトップ画面が出てくることを確認します。

rsyncdとlsyncdによるリアルタイム同期。

自宅サーバのredmineの耐障害性を高めるため、

flowchart LR Redmine -- rsyncによる転送--> Backup

を仕込みました。

環境

  • バックアップ元(Linux Mint 20.03)
  • バックアップ先(Kubuntu 20.04)

共にrsyncdはインストールされています。

参考:
https://www.server-world.info/query?os=Ubuntu_18.04&p=rsync
https://www.server-world.info/query?os=Ubuntu_18.04&p=lsync

バックアップ先の設定:

vi /etc/rsyncd.conf
ファイル内容
[backup]
path = /home/backup/redmine
hosts allow = [バックアップ元のIPアドレス]
hosts deny = *
list = true
uid = www-data
gid = www-data
read only = false

バックアップディレクトリ作成

mkdir /home/backup/redmine
chown -R www-data:www-data /home/backup/redmine

systemctl restart rsync.service

バックアップ元の設定:

rsyncのテストを行う。

rsync -avz --delete /home/hoge/test.txt バックアップ先::backup

バックアップ先にtest.txtが格納されることを確認しました。

lsyncdのインストール

aptitude install lsyncd
mkdir /etc/lsyncd
vi /etc/lsyncd/lsyncd.conf.lua

ファイル内容

settings{
    logfile="/var/log/lsyncd/lsyncd.log",
    statusFile = "/tmp/lsyncd.stat",
    statusInterval = 1,
}
sync{
    default.rsync,
    source="/var/lib/redmine/",
    # redmine配下をまるごとバックアップします。
    target="[バックアップ先]::backup",
}

lsyncdのログ設定

mkdir /var/log/lsyncd
vi /etc/logrotate.d/lsyncd
ローテーションファイルの内容
/var/log/lsyncd/*.log {
        missingok
        notifempty
        copytruncate
        compress
}

サービス反映

systemctl restart lsyncd
systemctl status lsyncd
systemctl enable lsyncd

リアルタイムの設定確認

tail -f /var/log/lsyncd/lsyncdlog
#別ウィンドウで開きます
cd /var/lib/redmine
touch test.txt

ファイル追加後、ログに以下を確認。

Fri Apr 15 20:38:41 2022 Normal: Calling rsync with filter-list of new/modified files/dirskup/ finished.
/test.txt
/
Fri Apr 15 20:38:41 2022 Normal: Finished a list after exitcode: 0
rm test.txt

ファイル削除後、ログに以下を確認しました。

Fri Apr 15 20:39:51 2022 Normal: Calling rsync with filter-list of new/modified files/dirs
/test.txt
/
Fri Apr 15 20:39:52 2022 Normal: Finished a list after exitcode: 0

まとめ

により、要のDBのバックアップとリストアができたことは確認済み。

後は復旧できるかどうかを試してみます。

ローカルredmineのSSL化。-ローカル証明書のインストールと常時SSL化-

この記事の続きです。

ここでは、mkcertで作成したローカル証明書をredmineサーバに入れておきます。

また、

  • httpを強制的にhttpsにリダイレクト
  • http://ip or DNS名 のアクセスをhttps://ip or DNS名/redmineへとリダイレクトする

設定も同時に入れ込みます。

redmineサーバ上での設定

必要なモジュールの有効化

a2enmod ssl
a2enmod rewrite
systemctl restart apache2
ss -lntp
# 443ポートがLISTENされていることを確認します

証明書ペアの格納

mkdir /etc/certs/
mkdir /etc/private/

その後、

/etc/certs → SSL証明書

  • corn.wall.crt.202204

/etc/private/ → 秘密鍵

  • corn.wall.key.202204

をそれぞれ格納します。

証明書ペアのシンボリックリンク化

後々のメンテナンスを考えて、証明書をシンボリックリンク化します。

cd /etc/certs/
ln -s corn.wall.crt.202204  corn.wall.crt
cd /etc/private/
ln -s corn.wall.key.202204 corn.wall.key

Virtualファイル記載

cd /etc/apahce2/site-available/
cp -pi redmine.conf /path/to/backup/redmine.conf.org
vi redmine.conf
redmine.confの内容
<VirtualHost _default_:80>
 RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
        #http通信を強制的にhttpsにリダイレクト
</VirtualHost>

<VirtualHost _default_:443>
  SSLEngine on
    SSLProtocol All -SSLv2 -SSLv3  -TLSv1
    SSLCertificateFile /etc/certs/corn.wall.crt
    # 証明書
    SSLCertificateKeyFile /etc/private/corn.wall.key
    # 秘密鍵

        RewriteEngine On
        RewriteCond %{HTTP_HOST} ^penzance\.corn\.wall
        RewriteRule ^/$ https://penzance.corn.wall/redmine/ [R]
        # https://penzance.corn.wallへのアクセスをhttps://penzance.corn.wall/redmine/にリダイレクト

Alias /redmine /var/lib/redmine/public
CustomLog /var/log/redmine/access.log combined
ErrorLog /var/log/redmine/error.log
<Location /redmine>
PassengerBaseURI /redmine
PassengerAppRoot /var/lib/redmine
Require all granted
</Location>

</VirtualHost>

設定反映

apache2ctl configtest
# SyntaxOKを確認
systemctl restart apache2

再起動後、

  • redmineの通信がhttpsで行えること
  • ホスト名でアクセスしても/redmine/に移動すること

を確認しました。

補足とまとめ

  • セキュリティソフトによっては、このローカル認証局を「信頼できない」としてブロックする場合があります。その時はその設定を解除します。
  • また、mkcertsは開発用途なので外に出ていけないローカル環境での運用が前提です。
  • そのためか証明書の有効期限は3ヶ月。この運用をもっと楽にするのが今後の目標です

ローカルredmineのSSL化。-mkcertのインストール-

また、やりたいことに一歩近づきました。

  • 外に出ていけないローカルドメインでもSSL通信はしたい
  • 自己証明書と違った形でSSLを発行したい

という希望を求めていたら、「mkcert」なるものを発見したので、導入してみました。

redmineのSSL化

homebrewのインストール(検証機で実施する)

参考:
https://tdomy.com/2021/12/how-to-install-homebrew-on-ubuntu/

必要パッケージ取得

rootでは実行しないこと

sudo aptitude install libnss3-tools git curl

homebrewインストール

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
test -d ~/.linuxbrew && eval "$(~/.linuxbrew/bin/brew shellenv)"
test -d /home/linuxbrew/.linuxbrew && eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
test -r ~/.bash_profile && echo "eval \"\$($(brew --prefix)/bin/brew shellenv)\"" >>~/.bash_profile
echo "eval \"\$($(brew --prefix)/bin/brew shellenv)\"" >>~/.profile
brew --version
brew install hello
hello
brew uninstall hello

mkcertインストール

https://www.hivelocity.co.jp/blog/46149/

brew install mkcert
mkcert -install
mkcert -CAROOT
# ~/.local/share/mkcert配下にルート証明書とルート秘密鍵を確認
cd ~/.local/share/mkcert

mkcertで証明書発行

ここでは、自宅redmineに用いている

penzance.corn.wall

の証明書を発行します。

mkcert -key-file corn.wall.key.202204 -cert-file corn.wall.crt.202204 corn.wall penzance.corn.wall "*.corn.wall" 
openssl x509 -text -noout -in ./corn.wall.crt.202204 |grep DNS
# DNS:corn.wall, DNS:penzance.corn.wall, DNS:*.corn.wall と、入力したDNS名があることを確認します

次のエントリーでは、redmineにSSLを入れ込んでいきます。

Page 22 of 24

Powered by WordPress & Theme by Anders Norén