カテゴリー: PC Page 37 of 50

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、チケット数の一瞥。(redmine_issue_badgeプラグイン導入)

概要

プライベートのスケジュールやゲームの管理に使っている自宅ローカルのredmine。

ログインしたときに「自分が今どれだけのチケットがあるか」を把握するためのプラグインを導入しました。

Redmine Issue Badge 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/akiko-pusu/redmine_issue_badge.git redmine_issue_badge

インストール、設定反映

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

導入後の設定

  1. redmineに管理者権限でログインします。
  2. 管理>プラグイン>Redmine Issue Badge plugin(設定)に進み、以下のように設定します。
  • 全てのユーザにバッジを表示:チェック
  • 担当チケット数のポーリングを許可(60秒):チェック
  • ポップアップでの表示件数:10

設定後

上部「ログイン中」のところに赤い数字が出てきて、進行中のチケット数が表示されます。

ここをクリックすると、担当するチケットが表示され、リンクも表示されます。

まとめ

地味ではありますが、非常に有用なプラグイン。RPGやスマートフォンゲームでよくある「実行中のクエスト」をが表示されるのはモチベーション維持にもつながります。

redmine上のチェックリスト。(redmine_markdown_task_list導入)

Markdwon書式でのチェックリスト

TyporaなどのMarkdownエディタで

- [ ] やることA
- [x] やることB

と入力するとチェックリストとして表示されます。

これをredmine上で表現するためのプラグインを導入しました。

redmine_markdown_task_list インストール

参考:
https://qiita.com/EichiSanden/items/87ac4aaeb754341775a9

手順

cd /var/lib/redmine/plugins
# プラグインが格納されているディレクトリ
sudo -u www-data git clone https://github.com/eichisanden/redmine_markdown_task_list.git
systemctl restart apache2

DBのマイグレーション要らず、配置後に再起動するだけでした。

結果

画像

と入力したものが

画像

となりました。

redmine_checklistプラグインと異なり、チケットのコメント上でもknowledgebase上でも追加できるのが便利です。

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

本格運用一ヶ月経過

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

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

ディスク使用量

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

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

redmine サーバ

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

CPU 利用率

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

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

今後の展望

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

貴族の勝利、なしでの勝利。(アプリ版『宝石の煌めき』)

遊んでは見たものの自分の実力語りなさすぎてAIに全く勝てなかったSteamアプリ版『宝石の煌めき』。

その中で、いくつか興味深い勝利があったのでメモです。

Case 1

こちらは全ての貴族カードを取得して勝ちました。

Lv.3カードが0枚。安いLv.1の発展カードをバランスよく取得できたのが決め手となりました。

Case 2

逆に貴族カードを一切取らない状況下での勝利。目立つのがLv.2のカードを多く購入していること。

盤面的にオニキス(黒)が濃かったので、これを固めどりしていたのが勝因でした。

Case3

Case2 と同じような貴族カードなしでの勝利ですが、なんと、相手に帰属カードをすべて取られています。そんな中で最後に4点のLv.3カードを取得して勝利となったケース。

  • アプリならではの短い時間で終わる
  • 挑みがいのある難易度
  • 様々な戦略パターン

が噛み合った、「平日の隙間にやるには十分な」ゲームに昇格しました。

redmineサーバのウイルス対策。(ClamAV定期スキャン)

ClamAVでの動作確認が終わりましたので、定期スキャンをかけるようにします。

最初、リアルタイムスキャンを考えてはいたのですが

スキャン中のCPU使用率が相当高いと分かったので、cronで設定しました。

設定

参考:

https://www.yokoweb.net/2017/04/15/ubuntu-server-clamav/

バックアップ用のスクリプトを作成します。

redmine 用
vi /backup/execution/directory/clam-redmine.sh
#!/bin/sh

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin


echo =========================================
date
hostname
clamscan /var/lib/redmine/  \
     --infected \
     --recursive \
     --log=/var/log/redmine/clamav/clamscan.log \

     # redmineのログプラグインで見られるようにここにしています
     --remove \

if [ $? = 0 ]; then
  echo "ウイルス未検出."
else
  echo "ウイルス検出!!"
fi
date
フルバックアップ
vi /backup/execution/directory/clam-full.sh
#!/bin/sh

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin


echo =========================================
date
hostname
clamscan  / \
     --infected \
     --recursive \
     --log=/var/log/redmine/clamav/clamscan_full.log \
     --remove \
     --exclude-dir=^/boot \
     --exclude-dir=^/sys \
     --exclude-dir=^/proc \
     --exclude-dir=^/dev \
     --exclude-dir=^/home/manualmaton/nas \

     #NASは独自のウィルス対策があるため、重複を防ぎます
     --exclude-dir=^/var/log/redmine/clamav/

if [ $? = 0 ]; then
  echo "ウイルス未検出."
else
  echo "ウイルス検出!!"
fi
date

スクリプトに実行権限を付与します。

chmod +x clam-*.sh

cronを設定します。

crontab -e
以下、追加内容
# Virus Scan daily (redmine)
00 03 * * * /backup/execution/directory/clam-full.sh

# Virus Scan weekly (full)
00 04 * * 5 /backup/execution/directory/clam-redmine.sh

動作確認

スクリプトを実行して動作を確認。

----------- SCAN SUMMARY -----------
Known viruses: 8613098
Engine version: 0.103.5
Scanned directories: 2384
Scanned files: 11764
Infected files: 0
Data scanned: 858.21 MB
Data read: 649.00 MB (ratio 1.32:1)
Time: 222.074 sec (3 m 42 s)
Start Date: 2022:04:24 19:08:02
End Date:   2022:04:24 19:11:44
ウイルス未検出.

これで、多少はセキュリティ対策ができてきました。

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

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

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

redmineのファイルサーバ化。(dmsfプラグイン導入→ 別記事に2023/02/03時点での手順を記載)

要注意

2023/02/03時点での手順はこちらになります。

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

恐れ入りますが、上記を参照ください。

かつて以下に書かれていた手順はバージョンアップにより正常に動作しません。(なので消去しました)

導入のきっかけ

redmineの「ファイル」機能は便利ですが、以下の問題点がありました。

  • プロジェクトごとにファイルを探す必要がある。
  • ファイルをまとめてダウンロードできない。
  • 可能であれば宅内NWから直接やりとりをしたい。
  • 履歴管理はできるか?

そんな中で、うってつけのプラグインを発見しました。

動作確認環境

  • Linux Mint 20.03
  • redmine ver 4.2

redmine_dmsf概要

https://github.com/danmunn/redmine_dmsf

これ以降の手順は消去

Page 37 of 50

Powered by WordPress & Theme by Anders Norén