Debian 11 (bullseye) - アンチウィルスソフト導入!

Updated:


Debian GNU/Linux 11 (bullseye) にウイルス対策ソフト ClamAV をインストールする方法についての記録です。

以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。
(当然ながら、興味がなければスルーしてください)

0. 前提条件

  • Debian GNU/Linux 11 (bullseye) での作業を想定。
  • Apt でインストールする。(但し、Apt のパッケージはバージョンが古い。最新版が良ければ、こちらからダウンロードしてビルドするとよい)
  • 毎日自動でウィルススキャンを実行するようにする。
  • root ユーザでの作業を想定。

1. ClamAV のインストール

以下のようにして、アンチウィルスソフト ClamAV, ClamAV Daemon をインストールする。

# apt -y install clamav clamav-daemon

2. ウィルス定義ファイルの最新化

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 を実行する際は clamav-freshclam を停止する)

# systemctl stop clamav-freshclam

# freshclam
Mon Aug 30 10:22:37 2021 -> ClamAV update process started at Mon Aug 30 10:22:37 2021
Mon Aug 30 10:22:38 2021 -> ^Your ClamAV installation is OUTDATED!
Mon Aug 30 10:22:38 2021 -> ^Local version: 0.103.2 Recommended version: 0.103.3
Mon Aug 30 10:22:38 2021 -> DON'T PANIC! Read https://www.clamav.net/documents/upgrading-clamav
Mon Aug 30 10:22:38 2021 -> daily.cld database is up-to-date (version: 26278, sigs: 1969151, f-level: 90, builder: raynman)
Mon Aug 30 10:22:38 2021 -> main.cvd database is up-to-date (version: 61, sigs: 6607162, f-level: 90, builder: sigmgr)
Mon Aug 30 10:22:38 2021 -> bytecode.cvd database is up-to-date (version: 333, sigs: 92, f-level: 63, builder: awillia2)

# systemctl start clamav-freshclam

(インストールした ClamAV のバージョンが古い場合に警告メッセージが出力されるが、特に問題はないので無視してよい)

3. ウィルススキャンのテスト(ウィルス無しの場合)

以下のようにして、ウィルススキャンを行ってみる。
(スキャンするディレクトリを指定するなら、最後にディレクトリを指定する)

# clamscan --infected --remove --recursive

----------- SCAN SUMMARY -----------
Known viruses: 8561077
Engine version: 0.103.2
Scanned directories: 4
Scanned files: 4
Infected files: 0
Data scanned: 0.02 MB
Data read: 0.01 MB (ratio 2.00:1)
Time: 1470.707 sec (24 m 30 s)
Start Date: 2021:08:30 10:23:55
End Date:   2021:08:30 10:48:26

4. ウィルススキャンのテスト(ウィルス有りの場合)

ウィルスが有る場合に正常に機能するかをテストするために、まずテスト用ウィルスを用意する。
今回は以下の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/eicarcom2.zip: Win.Test.EICAR_HDB-1 FOUND
/root/eicarcom2.zip: Removed.
/root/eicar_com.zip: Win.Test.EICAR_HDB-1 FOUND
/root/eicar_com.zip: Removed.
/root/eicar.com.txt: Win.Test.EICAR_HDB-1 FOUND
/root/eicar.com.txt: Removed.
/root/eicar.com: Win.Test.EICAR_HDB-1 FOUND
/root/eicar.com: Removed.

----------- SCAN SUMMARY -----------
Known viruses: 8561077
Engine version: 0.103.2
Scanned directories: 4
Scanned files: 8
Infected files: 4
Data scanned: 0.02 MB
Data read: 0.01 MB (ratio 2.00:1)
Time: 1606.701 sec (26 m 46 s)
Start Date: 2021:08:30 10:50:49
End Date:   2021:08:30 11:17:36

5. ウィルススキャン実行用スクリプトの作成

File: clamscan

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/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. ウィルススキャン実行用スクリプトに実行権限付与

# chmod +x clamscan

7. スキャン対象外ファイルの編集

ウィルススキャンを行わないディレクトリがあれば、 clamscan.exclude ファイルに記述する。(但し、 clamscan を使用する場合)

File: clamscan.exclude

1
2
3
/dev/   # <= "dev"  ディレクトリをスキャン対象外にする場合
/proc/  # <= "proc" ディレクトリをスキャン対象外にする場合
/sys/   # <= "sys"  ディレクトリをスキャン対象外にする場合

ウィルススキャン実行用スクリプト内で clamscan でなく clamdscan を使用するようにしている場合は、 clamscan.exclude を作成せず、 /etc/clamav/clamd.conf に以下のように追記する。

File: /etc/clamav/clamd.conf

1
2
3
ExcludePath ^/dev/
ExcludePath ^/proc/
ExcludePath ^/sys/

8. スクリプトの実行

作成したウィルススキャン実行スクリプトが正常に実行されるか試しに動かしてみる。

# ./clamscan

9. 自動実行の設定

ウィルススキャン実行スクリプトに問題がなければ、毎日自動で実行させるために cron ディレクトリへ移動する。(daily でなく weeklymonthly でもよい。好みの問題)

# mv clamscan /etc/cron.daily/

以上。





 

Sponsored Link

 

Comments