カテゴリー: PC Page 35 of 58

Redmine脆弱性対応。(4.2.x→4.2.10へのバージョンアップ)

これを行うきっかけ

こちらの記事:

https://blog.redmine.jp/articles/redmine-security-scanner/

で運用中のRedmineに既知の脆弱性がないかをチェックできるWebサービスの存在を知ったからでした。

で、現在のRedmineのURLを調べてみたら

E。

何度見てもEです。多少自信はあったので、この結果はその鼻っ柱を打ち砕くものでした。

そこで、現在運用中のRedmineのバージョンアップを図り脆弱性に対応します。

環境

  • Ubuntu 20.04 (AWS Lightsailで稼働中)
  • 動かしていたRedmine:4.2.9
  • Apache 2.4 / mod-passangerでRubyアプリを使用(Ruby 2.7系)
  • MySQL 8.0.3

作業に備えての前提

  • 本手順では「使用するDBの削除」を伴います。作業の際には慎重に行って下さい。
  • Webサービスを止める/何も入っていないRedmineが途中でできるため、ユーザアクセスができない状況が発生します。
  • また、筆者環境はfiles配下をクラウドストレージにマウントしています。手順は自身の環境に合わせてください。

さっくりとした手順

  1. スナップショットのバックアップ
  2. DBのバックアップ
  3. redmineのディレクトリを一度mvでリネームしてバックアップ。
  4. apache停止
  5. redmineのDBを消す。
  6. redmineのDBを新たに作る。(ユーザは全て権限があるので問題なし)
  7. apache再開
  8. ディレクトリを再作成し、新しい空のRedmineを作る。
  9. themesとpluginを再配置。filesのシンボリックリンクを貼り替える。
  10. themesとpluginを再配置した状態でDBマイグレーション。
  11. DBリストア。

データバックアップ

万一に備え、AWSからインスタンスのスナップショットを取得します。

mysqlによるDBバックアップ

mysqldump -h localhost -u redmine -p --no-tablespaces --single-transaction redmine > redmine_backup.$(date +%Y%m%d).sql
# DB名やDBユーザは自信の環境に合わせます

データ退避

cd /var/lib
# Redmineが格納されているディレクトリの親ディレクトリに移動します

ls -ld redmine
# 退避対象のディレクトリがあることを確認します

sudo mv redmine redmine_$(date +%Y%m%d)

ls -ld redmine_$(date +%Y%m%d)

apache停止

ここでWebサービスを停止するのは、DBを削除するためです。

systemctl status apache2.service

sudo systemctl stop apache2.service

systemctl status apache2.service

DB削除

慎重に行って下さい。

sudo mysql -u root -p
show databases;
/* redmineのDBがあることを確認 */

drop database redmine;

show databases;
/* redmineのDBがないことを確認 */

CREATE DATABASE redmine character set utf8mb4;

show databases;
/* redmineのDBがあることを確認 */

exit

Redmine再インストール

ソースダウンロード

sudo mkdir /var/lib/redmine

sudo chown -R www-data:www-data /var/lib/redmine

sudo -u www-data svn co https://svn.redmine.org/redmine/branches/4.2-stable /var/lib/redmine
# 4.2系の最新安定版をダウンロードします

退避させたディレクトリからconfigファイルコピー

sudo cp -pi /var/lib/redmine_$(date +%Y%m%d)/config/database.yml /var/lib/redmine/config/database.yml

cat /var/lib/redmine/config/database.yml
#中身確認

sudo cp -pi /var/lib/redmine_$(date +%Y%m%d)/config/configuration.yml /var/lib/redmine/config/configuration.yml

cat /var/lib/redmine/config/configuration.yml
#中身確認

Redmineインストール

cd /var/lib/redmine

sudo -u www-data bundle install --without development test --path vendor/bundle

sudo -u www-data bundle exec rake generate_secret_token

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

sudo -u www-data RAILS_ENV=production REDMINE_LANG=ja bundle exec rake redmine:load_default_data

apache再開

systemctl status apache2.service

sudo systemctl start apache2.service

systemctl status apache2.service

再開後の仮パスワード作成

対象のRedmineにアクセスします。

IDとパスワードがadmin / admin に戻っている状態のため、仮パスワードを発行します。

退避したディレクトリからデータを再配置

cd /var/lib/redmine_$(date +%Y%m%d)/plugins

sudo cp -pir ./* /var/lib/redmine/plugins/
# プラグイン一式をコピーします

cd /var/lib/redmine_$(date +%Y%m%d)/public/themes

sudo cp -pir ./* /var/lib/redmine/public/themes/
# テーマ一式をコピーします

シンボリックリンク貼り替え

これは筆者の環境が

  • logディレクトリとfilesディレクトリを別の場所にリンクを張っているための措置です。
  • それ以外の場合は上述した /var/lib/redmine_$(date +%Y%m%d)からfilesやlogをコピーして下さい。
cd /var/lib/redmine

sudo rm -rf files

sudo rm -rf log

sudo ln -sf /mnt/wasabi/redmine/files files
# wasabiクラウドストレージを利用しています。

sudo chown -h www-data:www-data files

sudo ln -sf /var/log/redmine log
# ログは/var/log配下で一括管理しています。

sudo chown -h www-data:www-data log

データ再マイグレーション

プラグイン再マイグレーション

cd /var/lib/redmine

sudo -u www-data bundle install

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

apacheリスタート

systemctl status apache2.service

sudo systemctl restart apache2.service

systemctl status apache2.service

DBリストア

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

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

apacheリスタート

systemctl status apache2.service

sudo systemctl restart apache2.service

systemctl status apache2.service

動作確認

この状態でRedmineに管理者権限でログインします。手順通りなら

  • テーマ
  • 添付ファイル
  • プラグイン

などが正常に動いていると思います。

バージョンアップ後の診断

2023/03/18現在のRedmine4.2系の最新安定版:4.2.10がインストールされ、A+ と診断されました。

AWS LightsailからNextcloudをアンインストール。

AWS Lightsailで検証したNextcloudをアンインストールします。

導入していた環境

以下の環境で動かしていたNextcloudをアンインストールします。

  • Ubuntu 20.04
  • Apache 2.4
  • PHP 8.1
  • MySQL 8.0.3

そもそも:なぜアンインストールを行ったか?

スペック不足。

外部公開を目指しAWSのLightsailインスタンスで立ち上げましたが、

  • 表示速度
  • 処理能力

その他が納得いくものではありませんでした。

機能が被っている

  1. タスク管理/文書管理としてRedmine
  2. フォトアルバムとしてPiwigo

をインストールしているため、これらと機能が被るものを同一サーバにインストールするには望ましくありません。

ローカル環境との混同

これが一番の問題でした。ローカル(自宅環境)で既に運用しているNextcloudにはかなりのセンシティブ情報が含まれています。これが外部環境に誤ってアップロードされてしまうのはセキュリティポリシー上問題があると判断。

実施した手順

さっくりとした手順

  1. 本当にアンインストールしていいかいったん深呼吸します。
  2. クライアントからアカウントを削除します。(PCを利用している場合)
  3. バーチャルファイルを無効にします。
  4. DBを削除します。
  5. バーチャルファイルを削除します。
  6. ファイルを削除します。

アンインストールでも残すもの

  • PHPは既に他のサービスで動かしているので残します。
  • MySQL/Apacheについても同様です。

削除対象の確認

  1. 深呼吸する
  2. お茶を入れて飲みながらじっくり考え

削除を決意。

重要なファイルがあるかを確認

もう一度確認します。

PCクライアントから設定削除

WindowsなどでNextcloudのアカウントを設定していたので、こちらを削除します。

バーチャルファイル無効化

  • バーチャルファイル無効化
cd /etc/apache2/sites-available && pwd

sudo a2dissite nextcloud.conf
# 自分が設定した環境に合わせます。
  • 無効化反映
sudo systemctl restart apache2.service

この時点でアクセスできないことを確認です。

DB削除

mysql -u root -p
# mysqlのrootパスワードでログイン
SHOW DATABASES;
/* 削除対象を確認します */

DROP DATABASE nextcloud;
/* DB名を再度確認します */
/* 容赦なく削除されるので慎重に行ってください */

SHOW DATABASES;
/* DBがないことを確認します */

EXIT

プログラム一式を削除

  • nextcloud配置ディレクトリ削除
cd /var/www/html && pwd
# nextcloudが格納しているディレクトリ

ls -ld nextcloud
# ディレクトリがあることを確認します

sudo rm -rf nextcloud

ls -ld nextcloud
# ディレクトリがないことを確認します
  • nextcloudバーチャルファイル削除
cd /etc/apache2/sites-available && pwd
# 対象ディレクトリにいることを確認します

sudo rm nextcloud.conf 

後始末

  • 独自ドメインで運用していたのであれば、Nextcloudのために設定していたDNS情報を削除します。
  • 削除されたことを確認します。

最後に

スペックや機能の面でほぼほぼ「こうなるだろうな」という予感はありました。
ですが、一応、やってみるだけの価値はありました。(ローカル環境と比べ著しく遅いと体感でき、後の未練を断つことができました)

ChatGPTによるシェルスクリプト。(プロセスごとに消費メモリを表示)

検証中のLinuxサーバで

  • 外部公開する際にどのぐらいリソースを消費するのか?
  • 現在のサーバスペックで大丈夫か?
  • けど、Zabbix等の設定はめんどい

という状況は多々発生します。そこで、またもやChatGPTに

Linuxのメモリ使用量を調べるためのシェルスクリプトを書いてください。 要件は以下の通りです。

1. 稼働中のプロセスをpsで調べる
1. 複数のプロセスがあればそのRSSの合計値を足す
1. RSSの合計値を昇順で表示する としてください。

と聞いてみました。幾ばくかの質疑応答を繰り返し、以下、できあがりです。

Script内容

  • スクリプト: rsstotal.sh
#!/bin/bash

# 現在の日時を取得
now=$(date +"%Y/%m/%d %H:%M")

# 全てのプロセスのRSSの合計をKBで取得
processes_rss=$(ps -e -o rss=,comm= | awk '{a[$2]+=$1;} END {for(i in a) if(a[i]>0) printf("%d %s\n",a[i],i);}' | sort -rn)

# 全てのプロセスのRSSの合計をMBに変換して取得
total_rss_kb=$(echo "$processes_rss" | awk '{s+=$1} END {print s}')
total_rss_mb=$(echo "scale=2;$total_rss_kb/1024" | bc -l)

# メモリ使用量と各プロセスのRSSを表示
echo "$now 現在のメモリ使用量は $total_rss_mb MB です"
echo "各プロセスのRSSの使用量は:"
while read -r rss process; do
  rss_mb=$(echo "scale=2;$rss/1024" | bc -l)
  printf "%.2f MB - %s\n" $rss_mb "$process"
done <<< "$processes_rss"

記述後、

chmod +x rsstotal.sh

として実行権を付与します。

実行結果

2023/03/15 20:11 現在のメモリ使用量は 2238.71 MB です
各プロセスのRSSの使用量は:
738.42 MB - java
738.33 MB - node
101.75 MB - mongod
81.71 MB - Xorg
71.31 MB - slick-greeter
43.44 MB - npm
38.82 MB - sshd
38.53 MB - systemd-journal
30.06 MB - systemd
29.48 MB - pulseaudio
23.67 MB - nginx
22.06 MB - lightdm
20.05 MB - networkd-dispat
19.09 MB - NetworkManager
17.30 MB - bash
16.99 MB - dbus-daemon
12.56 MB - udisksd
12.37 MB - cups-browsed
11.76 MB - systemd-resolve
11.31 MB - ModemManager
9.30 MB - upowerd
9.12 MB - polkitd
9.00 MB - thermald
8.21 MB - cupsd
7.98 MB - systemd-logind
7.82 MB - accounts-daemon
7.78 MB - controller
7.60 MB - gvfsd
7.08 MB - systemd-udevd
6.99 MB - (sd-pam)
6.66 MB - at-spi2-registr
6.22 MB - at-spi-bus-laun
5.90 MB - systemd-timesyn
5.44 MB - gvfsd-fuse
5.33 MB - dconf-service
4.81 MB - bluetoothd
4.77 MB - wpa_supplicant
4.76 MB - redis-server
4.46 MB - rsyslogd
3.81 MB - avahi-daemon
3.43 MB - irqbalance
3.15 MB - awk
3.08 MB - ps
2.95 MB - rtkit-daemon
2.94 MB - cron
2.85 MB - sh
2.77 MB - rsync
1.85 MB - agetty

と表示されたのでうまくいっています。

こちらはnginxとgrowiサーバ。やはりというかjava(elasticsearch)がメモリを相当消費していました。

動作確認日

2023/03/15

ChatGPTによるシェルスクリプト。(日時を指定してのシャットダウン)

概要

「要件は定義できるけどそれを実行する術を知らない」とき、ChatGPTは非常に有用です。

そこで、以下のスクリプトを書いてもらいました。

ChatGPTへの要件

  • 指定時刻にはLinuxサーバのシャットダウンを行いたい。
  • 検証機なので、副系への切り替えなどは考慮しない。
  • 後々を考えて、スクリプトとして残し、思い立ったときには実行できるようにしたい。

ということで、以下の質問をしました。

計画停電に備え、指定時刻にLinuxサーバのシャットダウンをしたいと思います。
そこで、以下のシェルスクリプトを書いてください。

  1. 対話式で日付(YYYYMMDD)と時刻(HHMM)の入力プロンプトを出す
  2. 形式が違う場合はエラーを出し、再度の入力を求める
  3. 入力後、指定日時を表示しy/nで確認
  4. 受付後、バックグラウンドで常駐
  5. 指定時刻になったらシャットダウンを行う

ChatGPTからの回答

以下が、示したスクリプトです。

  • スクリプト名:shutdown.sh
#!/bin/bash

# 1. 日付と時刻の入力プロンプトを出す
read -p "シャットダウンする日時を指定してください(YYYYMMDD HHMM): " shutdown_time

# 2. 形式が違う場合はエラーを出し、再度の入力を求める
until [[ $shutdown_time =~ ^[0-9]{8}\ [0-9]{4}$ ]]; do
    echo "日付と時刻の形式が正しくありません。再度入力してください。"
    read -p "シャットダウンする日時を指定してください(YYYYMMDD HHMM): " shutdown_time
done

# 3. 入力後、指定日時を表示しy/nで確認
echo "指定された日時は ${shutdown_time:0:4}/${shutdown_time:4:2}/${shutdown_time:6:2} ${shutdown_time:9:2}:${shutdown_time:11:2} です。"
read -p "この日時でシャットダウンを行いますか? (y/n): " confirm

# 4. 受付後、バックグラウンドで常駐
if [[ $confirm =~ ^[Yy]$ ]]; then
    shutdown_sec=$(date -d "${shutdown_time:0:8} ${shutdown_time:9:4}" +%s)
    current_sec=$(date +%s)
    if [[ $shutdown_sec -lt $current_sec ]]; then
        echo "指定された日時は過去のため、シャットダウンは行われません。"
    else
        wait_sec=$(( shutdown_sec - current_sec ))
        echo "シャットダウンまでの待機時間は $wait_sec 秒です。"
        sudo sleep $wait_sec && sudo shutdown -h now &
        echo "シャットダウンを開始しました。"
    fi
else
    echo "シャットダウンを中止しました。"
fi

動作確認

上記スクリプトを対象サーバに保存後、以下の処理を行いました。

sudo chown root:root shutdown.sh
# shutdownコマンドは管理者ユーザのみ実行権限があるので所有者もrootにします

sudo chmod 744 shutdown.sh
# rootのみに実行権限を与えます
sudo bash shutdown.sh

と入力後、想定通りYYYYMMDD形式とHHMM形式で日付と時間を入力するよう求められました。なので、30分後などの日時を指定して実行します。

バックグラウンドで実行されているか、以下を確認しました。

ps aux |grep shutdown

# 下記の表示を確認。
# root      107296  0.0  0.0  10536   280 pts/0    S    14:27   0:00 bash shutdown.sh

その後、実行時間になってシャットダウンを確認。

動作確認日

2023/03/14

Ubuntu 20.04に最新安定版のnodejsのインストール。

ふと思い立ったので、AWS Lightsailで稼働するUbuntuに最新安定版のnodejsを入れてみました。

動作確認環境

  • Ubuntu 20.04

実施した手順

さっくりとした手順

  1. aptitude(apt)を用いてnodejsとnpmをインストールします。
  2. n packageシステムをインストールします。
  3. n packageで最新安定版のnodejsをインストールします。
  4. 最初に入れたnodejsとnpmをアンインストールします。
  5. nodeとnodejsが同じコマンドを参照するようにシンボリックリンクを張ります。

aptitudeによるnodejsとnpmのインストール

パッケージインストール

こちらではaptitudeを用いています。好みなどに合わせてaptに読み替えてください。

sudo aptitude update

sudo aptitude install nodejs

sudo aptitude install npm
# 300近いパッケージが一気にインストールされます

インストール後の確認

nodejs -v
# v10.19.0が表示されることを確認

npm -v
# 6.14.140が表示されることを確認

n packageのインストール

sudo npm install -g n

n packageによる最新版安定版のインストール

sudo n stable

表示確認

node -v
# 18.15.0が表示されることを確認
nodejs -v
# 10.19.0が表示されることを確認

と、両者のバージョンが異なります。aptitude(apt)でインストールしたパッケージが残っているために発生しているようです。

そこで、最初にインストールしたパッケージをアンインストールします。

最初に入れたnodejsとnpmをアンインストール

sudo apt purge nodejs npm

その後、一度シェルから抜けます。

シンボリックリンク実行

再ログイン後、nodejsのパスが通っていませんでした。

which node
# /usr/local/bin/nodeと表示


which nodejs
# 何も表示されず

コマンドが見つからないので、これも修正します。

sudo ln -s /usr/local/bin/node /usr/local/bin/nodejs
node -v
# 18.15.0が表示されることを確認

nodejs -v
# 18.15.0が表示されることを確認

両方で同じバージョンが表示されるようになりました。

動作確認日

2023/03/13

フォトアルバムPiwigoの写真格納ディレクトリをWasabiクラウドストレージに設定。

概要

AWSサーバに設置したフォトアルバムPiwigo。

こちらをWasabiクラウドストレージと連携させます。

動作確認環境

  • Ubuntu 20.04
  • Piwigo 13.6.0
  • Apache 2.4
  • PHP 8.1
  • MySQL 8.0.32

前提

  • Piwigoがインストール済みであること
  • いくつかの写真をアップロード済みであること
  • Wasabiクラウドストレージがs3fsでマウントされていること
  • また、Piwigoのルートディレクトリは /var/www/html/piwigo です。

確認した手順

さっくりとした手順

  1. 写真格納ディレクトリを確認します。
  2. Wasabiのクラウドストレージ(バケット)にアップロード用のディレクトリを作成します。
  3. 既存の写真格納ディレクトリをバケットに移動します。
  4. シンボリックリンクを作成します。
  5. 動作を確認します。

格納ディレクトリの確認

  • findによる確認
find /var/www/html/piwigo/ -type f -name "*.jpg" -print

以下のディレクトリに写真が格納されていました。

  • /var/www/html/piwigo/_data/
  • /var/www/html/piwigo/upload/

クラウドストレージ設定

  • ディレクトリ移動
cd /mnt/wasabi
# s3fsでマウント済みのディレクトリに移動します
  • ディレクトリ作成、所有者変更
sudo mkdir piwigo

sudo chown www-data:www-data piwigo

ls -ld piwigo
# ディレクトリが作られていることと所有者がwww-dataであることを確認します

写真格納ディレクトリをデータごと移動

  • ディレクトリ移動
cd /var/www/html/piwigo && pwd
# piwigoのドキュメントルートに移動します

sudo mv _data /mnt/wasabi/piwigo/

sudo mv upload /mnt/wasabi/piwigo/

sudo chown -R www-data:www-data /mnt/wasabi/piwigo

シンボリックリンク作成

sudo ln -s /mnt/wasabi/piwigo/_data _data

sudo chown -h www-data:www-data _data

sudo ln -s /mnt/wasabi/piwigo/upload upload

sudo chown -h www-data:www-data upload
  • リンク作成確認
ls -ld  /var/www/html/piwigo/_data
ls -ld  /var/www/html/piwigo/upload
# それぞれのリンクがクラウドストレージのバケットであること、リンクの所有者がwww-dataであることを確認します

設定反映、動作確認

  • apacheサービス再起動
sudo systemctl restart apache2.service

systemctl status apache2.service
  • 動作確認

設定したpiwigoのサイトにアクセスします。

  1. ファイルが閲覧できることを確認します。(NW越しにマウントするので時間はそれなりにかかります)
  2. アルバムにファイルをアップロードできることを確認します。
  3. アルバムにアップロードしたファイルが表示されることを確認します。

上記が確認できれば設定完了です。

こうしてできあがったサイトが以下の

https://hideout.reisalin.com/

です。今までに撮りためていた写真をご紹介する機会斗羽がやっとできたという形です。

動作確認日

2023/03/08

UbuntuサーバにフォトアルバムPiwigoインストール。

概要

メインで使っていたフォトアルバムLycheeの代わりにインストールしてみました。

動作確認環境

  • Ubuntu 20.04
  • MySQL 8
  • Apache 2.4
  • PHP 8.1

で動作を確認しています。

前提

上記が運用されていること

  • ドメインで名前解決できること
  • そのドメインに対する適切なSSL証明書が導入されていること

が条件です。

手順

さっくりとした手順

  1. プログラムを配置します。
  2. DBを設定します。
  3. Apache設定ファイルを追記して反映します。
  4. Web画面でインストールを行います。

Piwigo入手

  • 作業用ディレクトリに移動
cd hoge && pwd
  • Piwigoダウンロード
wget https://piwigo.org/download/dlcounter.php?code=latest -O piwigo-latest.zip
# 最新版のダウンロード
  • zip展開
unzip piwigo-latest.zip
  • アクセス権変更
sudo chown -R www-data:www-data piwigo
  • ディレクトリ配置
sudo mv piwigo /var/www/html/
# 運用に合わせて配置ディレクトリを指定してください
ls- ld /var/www/html/piwigo
# ファイルがあること、所有者がwww-dataを確認します

DB設定

mysql -u root -p
CREATE DATABASE piwigo CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'piwigo_user'@'localhost' IDENTIFIED BY 'パスワード';
/* パスワードは任意のものを設定します */
GRANT ALL ON piwigo.* TO 'piwigo_user'@'localhost';
GRANT RELOAD ON *.* TO 'piwigo_user'@'localhost';
/* 後の運用を考えて、dumpが取得できるようにします */
FLUSH PRIVILEGES;
EXIT;

apache設定

バーチャルファイル作成

  • ServerName
  • ドメイン
  • 格納場所(ログ含む)
  • SSL証明書及び秘密鍵格納位置

は自分の環境に合わせてください。

cat <<- __EOF__ | sudo tee -a /etc/apache2/sites-available/piwigo.conf
<VirtualHost _default_:80>
ServerName album.example.com
# 公開するサーバのドメイン名を指定
 RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>

<VirtualHost *:443>
    ServerName album.example.com
    CustomLog /var/log/apache2/piwigo_access.log combined
    ErrorLog /var/log/apache2/piwigo_error.log
# ログの格納先を指定を指定

    DocumentRoot /var/www/html/piwigo
    <Directory /var/www/html/piwigo>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>
# DocumentRootは実際に配置したディレクトリを指定

  SSLEngine on

    Protocols h2 http/1.1
    Header always set Strict-Transport-Security "max-age=63072000"

SSLCertificateFile /etc/certs/example.com.crt
SSLCertificateKeyFile /etc/private/example.com.key
# 証明書と秘密鍵のパスを指定

</VirtualHost>

SSLProtocol             all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite          ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
SSLHonorCipherOrder     off
SSLSessionTickets       off

SSLUseStapling On
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"
__EOF__

バーチャルファイル有効化

sudo a2ensite piwigo.conf

設定反映

sudo apache2ctl configtest
# Syntax OKを確認します
sudo systemctl restart apache2.service
systemctl status apache2.service
# active (running)を確認します

表示確認

http://設定したドメイン

にアクセス後、以下が表示されます。

データベース設定

  • ユーザー: DBユーザ名
  • パスワード: 設定したDBのパスワード
  • データベース名:DB名

を入力します。

管理設定

  • ユーザ名:管理者名を入れます。
  • パスワード:管理者のパスワードを入れます。
  • メールアドレス:メールアドレスを入力します。

設定後、以下が表示されると設定完了です。

『ライザのアトリエ2』コアドライブ「四星の極光」最大ダメージ検証。Part3(2年後の検証)

こちらも、記事を掲載してから2年近く。難易度LEGENDで、安定してダメージを与えることに成功しました。

前提

メンバーやステータス、使用するコアアイテムは以下URLの通りです。

https://atelier.reisalin.com/issues/33

また、プレイヤー操作キャラクターをタオに変更しておきます。

検証結果

戦闘開始

まずは杖でスウィングしてタクティクス2でスタートします。

タオのデバフ

時空の天文時計と闇夜の宝箱をかけます。それぞれ永久機関&エコノミーコアの重ねがけのために開幕から2つのアイテムを使用できます。

その後、操作キャラクターをライザに切り替えます。

ライザのCCチャージ

適当にスキルを重ねていき、CCを8~11まで増やします。3回程度の攻撃で増えます。

「四星の極光」発動

タクティクスレベル5、ライザのCC8以上を確認したら、いよいよ発動です。

  1. エルシオンハープ
  2. ローゼフラム1つめ (予言の烙印)
  3. ローゼフラム2つめ (予言の烙印)
  4. N/A(達人の烙印)

ダメージ結果

ダメージ21,514からスタート。

N/A発動では880,224まで上昇。

コアドライブ「四星の極光」発動。

1,506,647到達。

と、大台の100万オーバーに達成。また、CCチャージ量やLEGEND特有の味方へのデバフなどを考慮すれば200万オーバーも不可能な数字ではありません。

まとめ

見直しによりまだまだやり込めるというのに改めて驚きです。

今回は「四星の極光」にこだわり、また、戦闘手順を簡略化するためにCC消費量をなるべく減らすような運用にしましたが、まだ見つけてない手段などは沢山あるわけで。

自作「3」でも、こういった検証ができることに期待です。

『ライザのアトリエ2』超高難易度DLC「陽炎の島」クリア時のキャラクターステータス(追記あり)

2年ぶりの更新です。

『ライザのアトリエ3』発売が近いということで、おさらいを兼ねて

  • 引き継ぎボーナスなし
  • 難易度LEGEND

で、超高難易度DLC『陽炎の島』をクリアしました。整理を兼ねてここにご紹介です。

超高難易度DLC『陽炎の島』を最高難易度LEGENDでクリアするための装備品やコアアイテムを選びました。

メンバー

前衛

  1. ライザ
  2. タオ
  3. パトリツィア

後衛

  1. クラウディア

何故このメンバーか?

ライザ

コアアイテム要員です。道中はコアドライブ「四星の極光」による短期決戦を目指していきます。
また、ボス戦でもアイテム連打の固定砲台として機能します。そのために武器の付与効果もコアアイテム特化型にしています。

タオ

デバフ要員です。ライザのコアドライブに先駆けてデバフをかけます。

パトリツィア

前衛配置時のスキル「クリティカル時のダメージ上昇」が非常に優秀。ライザの攻撃アイテムはクリティカル率を100%にしているので、確実なダメージ上昇が見込めます。

クラウディア

対ボスにおける「場持ち」をよくします。DLC『陽炎の島』のボス戦では一発や二発程度のコアドライブ/フェイタルドライブは露払いにもなりません。

それぞれ各戦闘に1回だけ使えないというゲームの仕様上、継続してダメージを与えるためにはスキルによるチェインでのラッシュがメインプランとなります。

各メンバーの詳細

装備品に関してはDLC『戦いの極み』の最上位武器/防具を利用しています。

また、アクセサリへのEV効果付与もDLCでの解禁です。

ライザ

ステータス

ステータス数値
Lv.100
HP1555
攻撃力2983
防御力2313
素早さ2313
装備品質200
器用さ99

装備品

/ノクターナルレリックアダンマントスケイルエリキシルリングユニヴァース
種別武器防具アクセサリアクセサリ
HP323397330232
攻撃力852741629453
防御力3261005396295
素早さ695700864780
効果1天の隕石・超ドラゴンブレス・超一子相伝の知識四霊を操る
効果2超感覚強化竜鱗の要塞常勝不敗の戦術満ちる霊力
効果3四色の羽根・超防御力+20素早さ+20迅雷の霊力
効果4立派な切れ味ダメージ軽減+7%ブレイク強化+7%轟風の霊力
特性1攻速強化++ 99スーパーボディ 99ドッジムーブ 99ドッジムーブ 99
特性2全能力強化 ++ 99全能力強化 ++ 99全能力強化 ++ 99全能力強化 ++ 99
特性3スペシャルアーツ 99ハイパーボディ 99フラッシュムーブフラッシュムーブ
EV効果--叡智の印章達人の印章

武器の効果はそれぞれ以下のとおりです。

  • 天の隕石・超
    • 魔法ダメージを与えるアイテムを使用する時、消費するCCが1減少する。与えるダメージが増加する
  • 超感覚強化
    • アイテムによって与えるダメージが増加する
  • 四色の羽根・超
    • 火属性、氷属性、雷属性、風属性のダメージが増加する
  • 立派な切れ味
    • クリティカル時に与えるダメージが増加する

コアアイテム(コアドライブ:四星の極光)

※本項で示すコアアイテムは特別な事情がない限り、DLC「調合の極み」の極星のエッセンスを用いて全てのマテリアル環の効果テーブル最大値を1ずつ増やしています。

/エルシオンハープ (DLCアイテム)
種別魔法の道具
Lv7
消費cc2
対象全体(味方)
属性雷、風
効果1魂が落ち着く
効果1説明アイテムのダメージとCCの回復量を上昇する
効果2ブレイク値回復・超
効果2説明ブレイク値を回復する
効果3AP回復・大
効果3説明APを大きく回復する
効果4素早さアップ・超
効果4説明素早さを上昇する
特性1永久機関
特性2エコノミーコア
特性3回復力上昇 ++50
EV効果逆刻の祝福

下記ローゼフラム/四星の極光のダメージアップを図るアイテム。CC回復量が上昇する副次効果も見逃せません。

EV効果は「時空の逆さ時計」で付与。効果は時空を切り詰めるを対象に付与します。

/ローゼフラム (同一を2つ装備)
種別爆弾
Lv99
消費cc2
対象全体(敵)
属性
効果1肉体疲労の大爆発
効果1説明無属性の小ダメージを与え、物理耐性を低下させる
効果2獄炎の薔薇
効果2説明火属性の特大ダメージを与える。威力はタクティクスレベルが高いほど大きく増加する。
効果3焼き尽くす炎・超
効果3説明非常に高い温度が対象を包む。対象を確立で火傷状態にする。
効果4紅蓮の花冠
効果4説明炎の花びらが燃え上がる。対象の範囲を広げ、火属性ダメージを与える。対象のHPが少ないほど威力が増加する
特性1破壊力上昇++ 50
特性2心の破壊力 99
特性3会心の破壊力 99
EV効果予言の烙印

どういうわけか最上位のグランフラムよりも効果が高いローゼフラム。高難易度においてもメインウェポンとして大活躍。

EV効果は「アポカリプス」で付与。効果は「一ツ環の真実(火属性と風属性のダメージを与える。現在のCCが多いほど威力が増加する)」と「分ツ環の真実(氷属性と雷属性のダメージを与える。現在のCCが多いほど威力が増加する)」

これを2つ。

/N/A
種別爆弾
Lv99
消費cc3
対象全体(敵)
属性火、雷
効果1トゲの大爆発
効果1説明無属性の小ダメージを与え、ブレイク値を増加させる
効果2無限大の大爆発
効果2説明無属性の絶大ダメージを与え、防御力を低下させる
効果3力を失う・超
効果3説明脱力感を与えるトゲが刺さり、攻撃力を低下させる
効果4体制を崩す衝撃・超
効果4説明体制を崩すほどの大きな衝撃を与える。追加でブレイク値を増加させる
特性1エコノミーコア
特性2心の破壊力 99
特性3会心の破壊力 99
EV効果達人の烙印

このアイテムは「四星の極光」に繋ぐためのアイテムです。有り体に言うと、ブレイクさせた状態で四星の極光をぶち当てるために用います。

また、ここはエコノミーコアを利用。これによって戦闘開始と同時にコアドライブが発動できます。

EV効果は「マスタースピリット」で付与。効果は

  • 全能力ダウン・中
  • 呪いを与える・中
  • 火傷を与える・強

です。

タオ

ステータス

ステータス数値
Lv.100
HP1533
攻撃力2970
防御力2309
素早さ3340
装備品質200
器用さ65

装備品

/サイレントリンクスアダンマントスケイルエリキシルリングユニヴァース
種別武器防具アクセサリアクセサリ
HP338397330232
攻撃力843741629453
防御力3161005396295
素早さ692700864780
効果1双剣の極意・超ドラゴンブレス・超一子相伝の知識四霊を操る
効果2立派な切れ味竜鱗の要塞常勝不敗の戦術満ちる霊力
効果3王者の髭防御力+20素早さ+20迅雷の霊力
効果4逆さ時計の発条ダメージ軽減+7%ブレイク強化+7%轟風の霊力
特性1攻速強化++ 99スーパーボディ 99ドッジムーブ 99ドッジムーブ 99
特性2全能力強化 ++ 99全能力強化 ++ 99全能力強化 ++ 99全能力強化 ++ 99
特性3スペシャルアーツ 99ハイパーボディ 99フラッシュムーブフラッシュムーブ
EV効果--叡智の印章達人の印章

武器の効果はそれぞれ以下のとおりです。

  • 双剣の極意・超
    • 状態異常を与える確率が上昇し、攻撃時、低確率で状態異常を低下させる。
  • 立派な切れ味
    • クリティカル時に与えるダメージが増加する
  • 王者の髭
    • 攻撃時、低確率で相手の強化を解除し、マイナス効果の効果時間を延長する
  • 逆さ時計の発条
    • スキルのWTが減少する

コアアイテム(コアドライブ:ホロターゲティング)

/時空の天文時計
種別魔法の道具
Lv1
消費cc2
対象全体(味方)
属性氷、雷
効果1時空を歪める
効果1説明行動順を手前に大きく寄せ、良性状態の効果時間を延長する
効果2未来に干渉する
効果2説明タクティクスレベルが3上昇する。最大を超えて上昇しない
効果3全能力アップ・超
効果3説明攻撃力、防御力、素早さを上昇する
効果4回避率アップ・超
効果4説明回避率を上昇する
特性1永久機関
特性2エコノミーコア
特性3空間を繋ぐ
EV効果逆刻の祝福

前作『ライザのアトリエ』における最強のバフアイテムがもっと強力になって帰ってきました。「タクティクスレベル3上昇」は明らかに常軌を逸しています。そして、高難易度はアイテムの回転率が命なので永久機関とエコノミーコアの2つを重ねて低消費にしました。

EV効果は「時空の逆さ時計」で付与。効果は時空を切り詰めるを対象に付与します。

/エリキシル剤
種別薬品
Lv1
消費cc1
対象全体(味方)
属性氷、風
効果1HP回復・極
効果1説明HPを極めて大きく回復する
効果2復調の薬効
効果2説明HP継続回復状態を付与し、ブレイク値を回復する
効果3平癒の薬効
効果3説明全ての状態異常を治療し、全ての悪性異常を消し去る
効果4起死回生の薬効
効果4説明戦闘不能状態を解除し、HPを大きく回復する
特性1エコノミーコア
特性2空間を繋ぐ
特性3回復力上昇++ 50
EV効果福旨の祝福

EV効果は「クーアミルク」で付与。全てのブレイク値を回復します。数発食らっただけでブレイク状態になる難易度においては、この「屋上屋を架す」処置が必要でした。

/マスタースピリット
種別魔法の道具
Lv40
消費cc1
対象全体(敵)
属性火、氷
効果1研ぎ澄まされた精神
効果1説明対象の攻撃力とクリティカル率を低下させる
効果2全能力ダウン・超
効果2説明攻撃力、防御力、素早さを低下させる
効果3呪いを与える・超
効果3説明確率で呪い状態にする
効果4束縛を与える・強
効果4説明確率で束縛状態にする
特性1クリティカル++ 99
特性2エコノミーコア
特性3永久機関
EV効果達人の烙印

前作最強のデバフアイテム「ヒロイックガイスト」の上位互換。これもエコノミーコアと永久機関の2つで消費CCを1にしています。

EV効果は「マスタースピリット」で付与。効果は

  • 全能力ダウン・中
  • 呪いを与える・中
  • 火傷を与える・強
/闇夜の宝箱 (DLCアイテム)
種別魔法の道具
Lv17
消費cc1
対象全体(敵)
属性氷、風
効果1冥闇の抱擁
効果1説明無属性の大ダメージを与え、高確率で対象を即死させる。
効果2影を縫いとめる・超
効果2説明影が対象にまとわりつく。対象にノックバックを与え、高確率で束縛状態にする
効果3魂を蝕む・超
効果3説明相手の心を直接傷つける。対象の攻撃力を低下させ、高確率で呪い状態にする
効果4浸食する煙
効果4説明煙がさらに広がるようになる。対象の範囲を広げ、追加で防御力を低下させる。
特性1永久機関
特性2エコノミーコア
特性3心の破壊力++ 99
EV効果黒闇の烙印

DLC「戦いの極み」のアイテム。この作品には珍しい即死付与があります。尤も、高難易度では効かないのですが、デバフは折り紙付き。

EV効果は「闇夜の宝箱」そのもので付与。効果は

  • 全能力ダウン・中
  • 呪いを与える・中
  • 束縛を与える・強

となっています。これらは後続の四星の極光で撃ち漏らしたとしても敵の大幅な弱体化が期待されます。

パトリツィア

  • ステータス
ステータス数値
Lv.100
HP1677
攻撃力3223
防御力2282
素早さ3247
装備品質200
器用さ45
  • 装備品
/ユーフォグレイブアダンマントスケイルエリキシルリンググローリーベルト
種別武器防具アクセサリアクセサリ
HP372397330299
攻撃力880741629639
防御力3181005396291
素早さ702700864687
効果1美しい軌跡・超ドラゴンブレス・超一子相伝の知識栄光のロード・超
効果2立派な切れ味竜鱗の要塞常勝不敗の戦術勝者の勝鬨
効果3地脈の恵み・超防御力+20素早さ+20ダメージ軽減+7%
効果4逆さ時計の発条ダメージ軽減+7%ブレイク強化+7%行動時HP回復・大
特性1攻速強化++ 99スーパーボディ 99ドッジムーブ 99ドッジムーブ 99
特性2全能力強化 ++ 99全能力強化 ++ 99全能力強化 ++ 99全能力強化 ++ 99
特性3スペシャルアーツ 99ハイパーボディ 99フラッシュムーブフラッシュムーブ
EV効果--叡智の印章達人の印章

武器の効果はそれぞれ以下のとおりです。

  • 美しい軌跡・超
    • HPが最大の時、攻撃によって与えるダメージが増加する。ブレイク値が最大の時、クリティカル発生時のダメージが増加する
  • 立派な切れ味
    • クリティカル時に与えるダメージが増加する
  • 逆さ時計の発条
    • スキルのWTが減少する
  • 地脈の恵み・超
    • 行動するごとに確率でAPを回復する

コアアイテム(コアドライブ:ホロターゲティング)

/時空の天文時計
種別魔法の道具
Lv1
消費cc2
対象全体(味方)
属性氷、雷
効果1時空を歪める
効果1説明行動順を手前に大きく寄せ、良性状態の効果時間を延長する
効果2未来に干渉する
効果2説明タクティクスレベルが3上昇する。最大を超えて上昇しない
効果3全能力アップ・超
効果3説明攻撃力、防御力、素早さを上昇する
効果4回避率アップ・超
効果4説明回避率を上昇する
特性1永久機関
特性2エコノミーコア
特性3空間を繋ぐ
EV効果逆刻の祝福

タオ/クラウディアと同じものです。

/エリキシル剤
種別薬品
Lv1
消費cc1
対象全体(味方)
属性氷、風
効果1HP回復・極
効果1説明HPを極めて大きく回復する
効果2復調の薬効
効果2説明HP継続回復状態を付与し、ブレイク値を回復する
効果3平癒の薬効
効果3説明全ての状態異常を治療し、全ての悪性異常を消し去る
効果4起死回生の薬効
効果4説明戦闘不能状態を解除し、HPを大きく回復する
特性1エコノミーコア
特性2空間を繋ぐ
特性3回復力上昇++ 50
EV効果福旨の祝福

タオ/クラウディアと同じものです。

/マスタースピリット
種別魔法の道具
Lv40
消費cc1
対象全体(敵)
属性火、氷
効果1研ぎ澄まされた精神
効果1説明対象の攻撃力とクリティカル率を低下させる
効果2全能力ダウン・超
効果2説明攻撃力、防御力、素早さを低下させる
効果3呪いを与える・超
効果3説明確率で呪い状態にする
効果4束縛を与える・強
効果4説明確率で束縛状態にする
特性1クリティカル++ 99
特性2エコノミーコア
特性3永久機関
EV効果達人の烙印

タオと同じものです。

/時空の逆さ時計
種別魔法の道具
Lv42
消費cc3
対象全体(味方)
属性氷、雷
効果1時空の調整
効果1説明タクティクスレベルを1まで低下する。低下した量に応じて、攻撃力、防御力、素早さを上昇する
効果2過去に干渉する
効果2説明APとCCの回復量を上昇する
効果3全能力アップ・超
効果3説明攻撃力、防御力、素早さを上昇する
効果4回避率アップ・超
効果4説明回避率を上昇する
特性1永久機関
特性2エコノミーコア
特性3叡智の結晶
EV効果逆刻の祝福

タクティクスレベルをリセットする代わりに、大きなバフをかけるアイテム。ぶっちゃけ、高難易度/やりこみ向けのアイテムです。

コアドライブを使い切ったとしても、これと時空の天文時計によるバフでスキルチェインを重ねていくのが基本的な戦術となります。

クラウディア

ステータス

ステータス数値
Lv.100
HP1575
攻撃力2899
防御力2324
素早さ3448
装備品質200
器用さ70

装備品

/ハーモニクスノーツアダンマントスケイルエリキシルリングユニヴァース
種別武器防具アクセサリアクセサリ
HP349397330232
攻撃力807741629453
防御力3541005396295
素早さ787700864780
効果1光矢の五線譜・超ドラゴンブレス・超一子相伝の知識四霊を操る
効果2コアバースト竜鱗の要塞常勝不敗の戦術満ちる霊力
効果3地脈の恵み・超防御力+20素早さ+20迅雷の霊力
効果4逆さ時計の発条ダメージ軽減+7%ブレイク強化+7%轟風の霊力
特性1攻速強化++ 99スーパーボディ 99ドッジムーブ 99ドッジムーブ 99
特性2全能力強化 ++ 99全能力強化 ++ 99全能力強化 ++ 99全能力強化 ++ 99
特性3スペシャルアーツ 99ハイパーボディ 99フラッシュムーブフラッシュムーブ
EV効果--叡智の印章達人の印章

武器の効果はそれぞれ以下のとおりです。

  • 光矢の五線譜・超
    • 行動時、APを1回復する。攻撃時、確率で追加魔法ダメージを与える
  • コアバースト
    • 攻撃時、追加で魔法ダメージを与える。所持しているコアチャージの量が多いほど、与えるダメージが増加する
  • 地脈の恵み・超
    • 行動するごとに確率でAPを回復する
  • 逆さ時計の発条
    • スキルのWTが減少する

コアアイテム(コアドライブ:オーロラウェーブ)

/時空の天文時計
種別魔法の道具
Lv1
消費cc2
対象全体(味方)
属性氷、雷
効果1時空を歪める
効果1説明行動順を手前に大きく寄せ、良性状態の効果時間を延長する
効果2未来に干渉する
効果2説明タクティクスレベルが3上昇する。最大を超えて上昇しない
効果3全能力アップ・超
効果3説明攻撃力、防御力、素早さを上昇する
効果4回避率アップ・超
効果4説明回避率を上昇する
特性1永久機関
特性2エコノミーコア
特性3空間を繋ぐ
EV効果逆刻の祝福

タオ/パトリツィアと同じものです。

/エリキシル剤
種別薬品
Lv1
消費cc1
対象全体(味方)
属性氷、風
効果1HP回復・極
効果1説明HPを極めて大きく回復する
効果2復調の薬効
効果2説明HP継続回復状態を付与し、ブレイク値を回復する
効果3平癒の薬効
効果3説明全ての状態異常を治療し、全ての悪性異常を消し去る
効果4起死回生の薬効
効果4説明戦闘不能状態を解除し、HPを大きく回復する
特性1エコノミーコア
特性2空間を繋ぐ
特性3回復力上昇++ 50
EV効果福旨の祝福

タオ/パトリツィアと同じものです。

/時空の逆さ時計
種別魔法の道具
Lv42
消費cc3
対象全体(味方)
属性氷、雷
効果1時空の調整
効果1説明タクティクスレベルを1まで低下する。低下した量に応じて、攻撃力、防御力、素早さを上昇する
効果2過去に干渉する
効果2説明APとCCの回復量を上昇する
効果3全能力アップ・超
効果3説明攻撃力、防御力、素早さを上昇する
効果4回避率アップ・超
効果4説明回避率を上昇する
特性1永久機関
特性2エコノミーコア
特性3叡智の結晶
EV効果逆刻の祝福

パトリツィアと同じものです。

/エルシオンハープ (DLCアイテム)
種別魔法の道具
Lv7
消費cc2
対象全体(味方)
属性雷、風
効果1魂が落ち着く
効果1説明アイテムのダメージとCCの回復量を上昇する
効果2ブレイク値回復・超
効果2説明ブレイク値を回復する
効果3AP回復・大
効果3説明APを大きく回復する
効果4素早さアップ・超
効果4説明素早さを上昇する
特性1永久機関
特性2エコノミーコア
特性3回復力上昇 ++50
EV効果逆刻の祝福

ライザと同じものです。

2024/10/14追記

コアアイテムの一部はヴィアヴェールルフトに差し替えました。

その作り方はこちらです。

Redmineサーバのウイルススキャン。(ClamAVとinotifyによる添付ファイルの自動スキャン)

概要

Redmineの稼働サーバにウィルス対策ソフトClam-AVをインストールし、不審なファイルのアップロードを防ぎます。

動作要件

  • スキャン対象はRedmineの添付ファイル格納ディレクトリです。
    • それ以外にも転用できるようにスクリプトを変数で定義しています。
  • inotifyサービスを利用して、スキャン対象を絞ります。
  • スキャンするタイミングは上記格納ディレクトリにファイルがアップロードされたときです。これによってCPU消費を節約します。
  • ClamAVによって不審なファイルと判断された場合、そのファイルを削除します。その後、詳細はログに出力されます。

動作確認環境

  • Ubuntu 20.04
  • ClamAV 0.103.8

手順

  • サーバのターミナルからコマンドラインで設定を行います。
  • パッケージ管理はaptitudeを利用しています。好みに合わせてaptに置き換えてください。

さっくりとした手順

  1. ClamAVをインストールします。
  2. 最新のウィルス定義ファイルがダウンロードできることを確認します。
  3. ClamAVの動作を確認します。
  4. inotifyサービスをインストールします。
  5. チェックスクリプトを作成します。
  6. スクリプトをサービス化します。
  7. サービスの動作を確認します。

ClamAVの設定と確認

ClamAVのインストール

sudo aptitude update

sudo aptitude install clamav clamav-daemon

ウィルス定義ファイルの更新

sudo freshclam

で定義ファイルを更新しようとしたところ、以下のエラーが出ました。

sudo freshclam

ERROR: /var/log/clamav/freshclam.log is locked by another process
ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log).
ERROR: initialize: libfreshclam init failed.
ERROR: Initialization error!

対処を行います。

sudo lsof /var/log/clamav/freshclam.log

COMMAND    PID   USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
freshclam 7001 clamav    3wW  REG  202,1     2161 2319263 /var/log/clamav/freshclam.log
# この時に出てきたPIDを控えておきます。

このプロセスを停止します。

sudo kill -9 7001
# 出てきたPIDを指定します

ログファイルのパーミッション変更

sudo chmod -R 777 /var/log/clamav/

上記を実施後、

sudo freshclam

定義ファイルが更新されることを確認しました。

ウイルス定義ファイル自動更新

sudo systemctl start clamav-freshclam.service

sudo systemctl enable clamav-freshclam.service

systemctl status clamav-freshclam.service
# active (running)を確認します

ClamAVの動作確認

  • バージョン確認
clamscan --version
ClamAV 0.103.8/26829/Thu Mar  2 20:16:49 2023
# 2023/03/03、aptでインストールした際のバージョン
  • eicarテストファイルによる確認
cd ~

wget http://www.eicar.org/download/eicar.com

clamscan eicar.com
  • テスト結果
Win.Test.EICAR_HDB-1 FOUND

----------- SCAN SUMMARY -----------
Known viruses: 8654357
Engine version: 0.103.8
Scanned directories: 0
Scanned files: 1
Infected files: 1
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)

が表示されたので、機能していることを確認です。

rm eicar.com

でテストファイルを削除します。(スキャンしただけなのでファイルの自動削除は行われません)

スクリプト作成

inotifyのインストール

sudo aptitude install inotify-tools

スクリプト生成

  • 以下のスクリプトを教義・信仰に沿ったエディタで作成します。
  • スクリプト名:clamav-inotify.sh
#!/bin/bash

## 変数ここから
# 監視対象のディレクトリを指定してください。
WATCH_DIR="/var/lib/redmine/files"

# スキャン対象の最大サイズを指定してください。
# Redmineのようにアップロード上限をWeb画面から設定できる場合、そのサイズに合わせます。
MAX_FILE_SIZE="10240M"

# スキャンログのパスを定義します。
SCAN_LOG="/var/log/redmine/redmine-scan.log"
## 変数ここまで


# 監視対象のディレクトリ (およびサブディレクトリ) に新しいファイルが作成されたときに、そのファイルをスキャンする処理を行います
inotifywait -m -r -e create --format '%f' "$WATCH_DIR" |
while read FILE
do
    # 新しいファイルがディレクトリでなく、かつ隠しファイルでないことを確認します。
    if [ ! -d "$FILE" ] && [ "$(echo "$FILE" | cut -c1)" != "." ]; then
        # ClamAVを使用して新しいファイルをスキャンします。
        RESULT=$(clamscan --recursive --max-filesize="$MAX_FILE_SIZE" "$WATCH_DIR/$FILE")
        if echo "$RESULT" | grep -q " FOUND"; then
            echo "ウイルスが検出されました: $FILE" >> "$SCAN_LOG"
            rm "$WATCH_DIR/$FILE"
        else
            echo "スキャンが完了しました: $FILE" >> "$SCAN_LOG"
        fi
    fi
done
  • 実行権付与
sudo chmod +x clamav-inotify.sh

スクリプトのサービス化

  • 以下のスクリプトを教義・信仰に沿ったエディタで作成します。
  • 配置ディレクトリ:/etc/systemd/system/
  • サービス名:clamav-inotify.service
  • ファイル内容
[Unit]
Description=ClamAV Inotify Service
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/bash /home/hoge/clamav-inotify.sh
# 上記のスクリプトをフルパスで指定します
Restart=always
User=root

[Install]
WantedBy=multi-user.target
  • サービスの有効化
sudo systemctl enable clamav-inotify.service

sudo systemctl start clamav-inotify.service

systemctl status clamav-inotify.service
# active (runnning)を確認します

動作確認

テストウィルスを配置→削除確認

cd /var/lib/redmine/files
# スクリプトで指定したスキャン対象ディレクトリに移動します。

sudo wget http://www.eicar.org/download/eicar.com
# eicarテストウィルスをダウンロードします。

ls -l eicar.com
# ファイルがある状態から削除されていることを確認します。

ログ確認

cat /var/log/redmine/redmine-scan.log
# スクリプトで指定したログ

以下のようにログに出れば成功です。

/mnt/wasabi/redmine/files/eicar.com: Win.Test.EICAR_HDB-1 FOUND

----------- SCAN SUMMARY -----------
Known viruses: 8654357
Engine version: 0.103.8
Scanned directories: 0
Scanned files: 1
Infected files: 1
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 34.852 sec (0 m 34 s)
Start Date: 2023:19:03 11:50:39
End Date:   2023:19:03 11:51:14
ウイルスが検出されました: eicar.com

動作確認日

2023/03/03

Page 35 of 58

Powered by WordPress & Theme by Anders Norén