Debian 12 (bookworm) - アンチウィルスソフト導入!
Updated:
Debian GNU/Linux 12 (bookworm) にウイルス対策ソフト ClamAV をインストールする方法についての記録です。
以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。
(当然ながら、興味がなければスルーしてください)
0. 前提条件Permalink
- Debian GNU/Linux 12.0.0 (bookworm; 64bit) での作業を想定。
- Apt でインストールする。(但し、Apt のパッケージはバージョンが古い。最新版が良ければ、こちらからダウンロードしてビルドするとよい)
- 毎日自動でウィルススキャンを実行するようにする。
- root ユーザでの作業を想定。
1. ClamAV のインストールPermalink
以下のようにして、アンチウィルスソフト ClamAV, ClamAV Daemon をインストールする。
# apt -y install clamav clamav-daemon
2. ウィルス定義ファイルの最新化Permalink
freshclam
コマンドでウィルス定義ファイルを最新に更新する。
しかし、デフォルトの状態では以下のようになってしまう。(以前はこのような事態にはならなかったが)
# 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!
そこで、 /var/log/clamav/freshclam.log
を作り直す。
(clamav:adm
となっている所有者・グループを clamav:clamav
に変更するだけはうまく行かない)
# rm -f /var/log/clamav/freshclam.log
# touch /var/log/clamav/freshclam.log
# chown clamav:clamav /var/log/clamav/freshclam.log
そして、 freshclam を実行
# freshclam
Wed Jul 12 15:13:33 2023 -> ClamAV update process started at Wed Jul 12 15:13:33 2023
Wed Jul 12 15:13:33 2023 -> daily.cvd database is up-to-date (version: 26966, sigs: 2038808, f-level: 90, builder: raynman)
Wed Jul 12 15:13:33 2023 -> main.cvd database is up-to-date (version: 62, sigs: 6647427, f-level: 90, builder: sigmgr)
Wed Jul 12 15:13:33 2023 -> bytecode.cvd database is up-to-date (version: 334, sigs: 91, f-level: 90, builder: anvilleg)
(インストールした ClamAV のバージョンが古い場合に警告メッセージが出力されるが、特に問題はないので無視してよい)
但し、上記の方法は一時的なものであり、また同じ現象に陥ってしまう。
ログローテートの設定を編集する。
File: /etc/logrotate.d/clamav-freshclam
/var/log/clamav/freshclam.log {
rotate 12
weekly
compress
delaycompress
missingok
#create 640 clamav adm # <== 削除
create 640 clamav clamav # <== 追加
postrotate
if [ -d /run/systemd/system ]; then
systemctl -q is-active clamav-freshclam && systemctl kill --signal=SIGHUP clamav-freshclam || true
else
invoke-rc.d clamav-freshclam reload-log > /dev/null || true
fi
endscript
}
ついでに、 /etc/logrotate.d/clamav-daemon
も同様に編集しておいたほうがよいかもしれない。
3. ウィルススキャンのテスト(ウィルス無しの場合)Permalink
以下のようにして、ウィルススキャンを行ってみる。
(スキャンするディレクトリを指定するなら、最後にディレクトリを指定する)
# clamscan --infected --remove --recursive
----------- SCAN SUMMARY -----------
Known viruses: 8670704
Engine version: 1.0.1
Scanned directories: 5
Scanned files: 4
Infected files: 0
Data scanned: 0.02 MB
Data read: 0.01 MB (ratio 2.00:1)
Time: 17.822 sec (0 m 17 s)
Start Date: 2023:07:12 15:14:50
End Date: 2023:07:12 15:15:08
4. ウィルススキャンのテスト(ウィルス有りの場合)Permalink
ウィルスが有る場合に正常に機能するかをテストするために、まずテスト用ウィルスを用意する。
今回は以下の4つのテストウィルスをダウンロードしてみた。
# wget http://www.eicar.org/download/eicar.com \
http://www.eicar.org/download/eicar.com.txt \
http://www.eicar.org/download/eicar_com.zip \
http://www.eicar.org/download/eicarcom2.zip
そして、ウィルススキャンを行ってみる。
4つとも検知し削除されているのが分かる。
# clamscan --infected --remove --recursive
/root/eicar_com.zip: Win.Test.EICAR_HDB-1 FOUND
/root/eicar_com.zip: Removed.
/root/eicar.com: Win.Test.EICAR_HDB-1 FOUND
/root/eicar.com: Removed.
/root/eicarcom2.zip: Win.Test.EICAR_HDB-1 FOUND
/root/eicarcom2.zip: Removed.
/root/eicar.com.txt: Win.Test.EICAR_HDB-1 FOUND
/root/eicar.com.txt: Removed.
----------- SCAN SUMMARY -----------
Known viruses: 8670704
Engine version: 1.0.1
Scanned directories: 5
Scanned files: 8
Infected files: 4
Data scanned: 0.02 MB
Data read: 0.01 MB (ratio 2.00:1)
Time: 17.437 sec (0 m 17 s)
Start Date: 2023:07:12 15:15:27
End Date: 2023:07:12 15:15:44
5. ウィルススキャン実行用スクリプトの作成Permalink
File: clamscan
#!/bin/bash
PATH=/usr/bin:/bin
# スキャン除外設定
# (clamdscan でなく clamscan を使用する場合はコメント解除)
#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
# ウィルス定義ファイル最新化
freshclam > /dev/null
# ウィルススキャン
CLAMSCANTMP=`mktemp`
# (clamdscan では --remove オプションが使用できない)
#clamscan --recursive --remove ${excludeopt} / > $CLAMSCANTMP 2>&1
clamdscan --recursive / > $CLAMSCANTMP 2>&1
[ ! -z "$(grep FOUND$ $CLAMSCANTMP)" ] && \
# レポートのメール送信
grep FOUND$ $CLAMSCANTMP | mail -s "Virus Found in `hostname`" root
rm -f $CLAMSCANTMP
6. ウィルススキャン実行用スクリプトに実行権限付与Permalink
# chmod +x clamscan
7. スキャン対象外ファイルの編集Permalink
ウィルススキャンを行わないディレクトリがあれば、 clamscan.exclude
ファイルに記述する。(但し、 clamscan を使用する場合)
File: clamscan.exclude
/dev/ # <= dev ディレクトリをスキャン対象外にする場合
/proc/ # <= proc ディレクトリをスキャン対象外にする場合
/sys/ # <= sys ディレクトリをスキャン対象外にする場合
ウィルススキャン実行用スクリプト内で clamscan
でなく clamdscan
を使用するようにしている場合は、 clamscan.exclude
を作成せず、 /etc/clamav/clamd.conf
に以下のように追記する。
File: /etc/clamav/clamd.conf
ExcludePath ^/dev/
ExcludePath ^/proc/
ExcludePath ^/sys/
8. スクリプトの実行Permalink
作成したウィルススキャン実行スクリプトが正常に実行されるか試しに動かしてみる。
# ./clamscan
9. 自動実行の設定Permalink
ウィルススキャン実行スクリプトに問題がなければ、毎日自動で実行させるために cron ディレクトリへ移動する。(daily
でなく weekly
や monthly
でもよい。好みの問題)
# mv clamscan /etc/cron.daily/
以上。
Comments