ウィルス対策にClam AntiVirus / Rocky Linux9.6 on さくらのVPS

アフィリエイト広告を利用しています

このページの内容が役に立ったら X (旧twitter) でフォローして頂けると励みになります
挨拶や報告は無しで大丈夫です

さくらのVPSにRockyLinux9.4をインストールした覚書です。

今回は、Clam AntiVirusのインストールを行っていきたいと思います。
Clam AntiVirus はアンチウィルスソフトウェアです。

Webサイトから不特定多数の人がファイルをアップロードするような機能を付けるなら、ウィルスチェックも行ったほうが安心です。

なお本番環境で利用される場合はここにある内容だけを鵜呑みにせずセキュリティ専門家に相談されることをお勧めします。

環境

実施日2025-10-31
サーバさくらのVPS 2G
OSRocky Linux9.6
※もともと 9.4 でしたが DNF アップデートで 9.6 になっています
cat /etc/redhat-release
Rocky Linux release 9.6 (Blue Onyx)

コマンド集

手動起動

systemctl start clamd@scan

自動起動が有効か確認

systemctl list-unit-files | grep clamd*

自動起動にセット

systemctl enable clamd@scan

# 起動状況の確認
systemctl status clamd@scan

起動状況の確認

systemctl status clamd@scan

事前準備

epelからインストールします。

epelをまだ設定していない場合はこちら

Clam AntiVirusのインストール

dnf --enablerepo=epel install clamav clamav-scanner-systemd clamav-update

設定の変更

vi /etc/clamd.d/scan.conf
# をつけてコメントアウト
# Example

コメントを外す
LogFile /var/log/clamd.scan
LogFileMaxSize 2M
LogTime yes
LogRotate yes
LocalSocket /run/clamd.scan/clamd.sock
FixStaleSocket yes
ExcludePath ^/proc/
ExcludePath ^/sys/

変更
User root

ウィルスデータベースの設定

vi /etc/freshclam.conf
# をつけてコメントアウト
# Example

コメントを外す
UpdateLogFile /var/log/freshclam.log
LogFileMaxSize 2M
LogTime yes
LogRotate yes

変更
DatabaseOwner root
DatabaseMirror db.jp.clamav.net
NotifyClamd /etc/clamd.d/scan.conf

手動でウィルスデータベースを更新

手動起動

systemctl start clamd@scan

更新

freshclam -u root

スキャンテスト

# スキャンテスト
clamscan --infected --remove --recursive

# テスト用ウィルスをダウンロード
cd /tmp
wget https://www.eicar.org/download/eicar.com.txt
wget https://www.eicar.org/download/eicar_com.zip

# もう一度、スキャンテスト
clamscan --infected --remove --recursive
# テスト用ウィルスがひっかかったことを確認できます。

# ディレクトリを指定してスキャン
clamscan --infected --remove --recursive /tmp

スキャンスクリプトの作成

マーカーファイル方式
前回スキャン時間を示すマーカー(timestamp ファイル)を置き、それより新しいファイルだけ find -newer で抽出してスキャン対象とします。

cd
vi /root/clamscan
#!/bin/bash

PATH=/usr/bin:/bin

# clamd update
dnf -y --enablerepo=epel update clamav-server clamav-data clamav-update clamav-filesystem clamav clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd > /dev/null 2>&1

# excludeopt setup
excludelist=/root/clamscan.exclude
if [ -s $excludelist ]; then
for i in `cat $excludelist`
do
if [ $(echo "$i"|grep \/$) ]; then
i=`echo $i|sed -e 's/^\([^ ]*\)\/$/\1/p' -e d`
excludeopt="${excludeopt} --exclude-dir=^$i"
else
excludeopt="${excludeopt} --exclude=^$i"
fi
done
fi


MARKER=/var/run/last_clamscan.marker
TMPLIST=$(mktemp)

# 初回は過去30日分、以降は前回以降に変更のあったファイルを対象に
if [ ! -e "$MARKER" ]; then
  find /home -type f -mtime -30 -print0 > "$TMPLIST"
else
  find /home -type f -newer "$MARKER" -print0 > "$TMPLIST"
fi


# virus scan
CLAMSCANTMP=`mktemp`
xargs -0 -a "$TMPLIST" clamscan --recursive --remove ${excludeopt} > $CLAMSCANTMP 2>&1
[ ! -z "$(grep FOUND$ $CLAMSCANTMP)" ] && \


# report mail send
grep FOUND$ $CLAMSCANTMP | mail -s "Virus Found in `hostname`" root
rm -f $CLAMSCANTMP "$TMPLIST"

# ===== マーカー更新 =====
touch "$MARKER"

chmod +x clamscan

スキャン対象外の設定

vi /root/clamscan.exclude
# --- システム系除外 ---
/afs/
/bin/
/boot/
/dev/
/etc/
/lib/
/lib64/
/lost+found/
/media/
/mnt/
/opt/
/proc/
/run/
/sbin/
/snap/
/srv/
/sys/
/tmp/
/usr/
/var/

# 古いファイルは除外
/home/*/wp-content/uploads/2024/
/home/*/wp-content/uploads/2023/
/home/*/wp-content/uploads/2022/
/home/*/wp-content/uploads/2021/
/home/*/wp-content/uploads/2020/
/home/*/wp-content/uploads/2019/
/home/*/wp-content/uploads/2018/
/home/*/wp-content/uploads/2017/
/home/*/wp-content/uploads/2016/
/home/*/wp-content/uploads/2015/
/home/*/wp-content/uploads/2014/
/home/*/wp-content/uploads/2013/
/home/*/wp-content/uploads/2012/
/home/*/wp-content/uploads/2011/
/home/*/wp-content/uploads/2010/

# --- Web関連で安全・不要なもの ---
# Gitリポジトリ
.git/

ディレクトリのときは末尾の / 必須

自動定期スキャン登録

crontab -e
MAILTO="cron@example.com"
30 0 * * * /root/clamscan

バージョンを確認

clamscan --version
ClamAV 1.4.3/27809/Fri Oct 31 18:42:21 2025

アップデート

freshclam -u root をすると次のようなエラーが出てるときや深夜のウィルススキャンに異常に時間が掛かるようになったとき

Sat May 13 23:23:16 2023 -> ClamAV update process started at Sat May 13 23:23:16 2023
Sat May 13 23:23:16 2023 -> ^Your ClamAV installation is OUTDATED!
Sat May 13 23:23:16 2023 -> ^Local version: 0.103.7 Recommended version: 0.103.8
Sat May 13 23:23:16 2023 -> DON'T PANIC! Read https://docs.clamav.net/manual/Installing.html
Sat May 13 23:23:16 2023 -> daily.cvd database is up-to-date (version: 26905, sigs: 2034567, f-level: 90, builder: raynman)
Sat May 13 23:23:16 2023 -> main.cvd database is up-to-date (version: 62, sigs: 6647427, f-level: 90, builder: sigmgr)
Sat May 13 23:23:16 2023 -> bytecode.cvd database is up-to-date (version: 334, sigs: 91, f-level: 90, builder: anvilleg)
# 確認
dnf --enablerepo=epel list clamav

# 更新
dnf --enablerepo=epel update clamav

# ウィルスデータベースを更新
freshclam -u root

アップデート後はデータベース更新も正常になっていることを確認できます。

Fri Oct 31 23:34:32 2025 -> ClamAV update process started at Fri Oct 31 23:34:32 2025
Fri Oct 31 23:34:32 2025 -> daily.cvd database is up-to-date (version: 27809, sigs: 2076965, f-level: 90, builder: svc.clamav-publisher)
Fri Oct 31 23:34:32 2025 -> main.cvd database is up-to-date (version: 62, sigs: 6647427, f-level: 90, builder: sigmgr)
Fri Oct 31 23:34:32 2025 -> bytecode.cvd database is up-to-date (version: 339, sigs: 80, f-level: 90, builder: nrandolp)

深夜の /root/clamscan で2~3時間CPU振り切っていたのも、数分で完了するようになりました。
ということで、原因はバージョンが古いことでした。