clamavでOnAccesScanが実現した

1.はじめに

以前 ArchWiki のオンアクセスキャンの記述が古くなっていると書いた。でも英語版の記述が変更されていたので、これを試してみた。

前提として、freshclam や clamav-daemonが正常に機能していること。

2./etc/clamav/clamd.conf への追記

$ sudo nano /etc/clamav/clamd.conf

追記する内容は、英語版の記述を最後の方にそのまま追記した。

3./etc/sudoers.d/clamav の作成

$ sudo nano /etc/sudoers.d/clamav

これも英語版の記述をそのまま使用した。

4./etc/clamav/virus-event.bashの作成

$ sudo nano /etc/clamav/virus-event.bash

これもそのまま使用。

実行権限を付与します。

$ sudo chmod +x /etc/clamav/virus-event.bash

clamav-daemon.service を再起動します。

$ sudo systemctl restart clamav-daemon.service

5.clamav-clamonacc,service の修正

By default, clamonacc passes clamav the names of just-accessed files for scanning. This is a problem, because files inaccessible to the clamav user cannot be scanned this way. Instead, it is possible to instruct clamonacc (which always runs as root) to use file descriptor passing.

(和訳すると)

デフォルトでは、clamonaccはスキャンのためにアクセスされたばかりのファイルの名前をclamavに渡します。 clamavユーザーがアクセスできないファイルはこの方法ではスキャンできないため、これは問題です。 代わりに、ファイル記述子の受け渡しを使用するようにclamonacc(常にrootとして実行される)に指示することができます。

$ sudo nano /usr/lib/systemd/system/clamav-clamonacc.service

ExecStart=/usr/sbin/clamonacc -F --log=/var/log/clamav/clamonacc.log --move=/root/quarantine
↓ 以下のように修正
ExecStart=/usr/sbin/clamonacc -F --fdpass --log=/var/log/clamav/clamonacc.log --move=/root/quarantine

スキャンされた感染ファイルの移動先を作成します。

$ sudo mkdir /root/quarantine

修正を反映させます。

$  sudo systemctl daemon-service

6.テスト

$ wget https://secure.eicar.org/eicar.com.txt

--2021-12-23 14:17:14-- https://secure.eicar.org/eicar.com.txt
SSL_INIT
Loaded CA certificate '/etc/ssl/certs/ca-certificates.crt'
Resolving secure.eicar.org (secure.eicar.org)... 2a00:1828:1000:2497::2, 89.238.73.97
Connecting to secure.eicar.org (secure.eicar.org)|2a00:1828:1000:2497::2|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 68 [text/plain]
Saving to: ‘eicar.com.txt’

eicar.com.txt 100%[=====================================================>] 68 --.-KB/s in 0s

2021-12-23 14:17:16 (92.6 MB/s) - ‘eicar.com.txt’ saved [68/68]

でも、保存したはずのファイルは見つかりません。

$ sudo cat /var/log/clamav/clamonacc.log

eicar.com.txt: moved to '/root/quarantine/eicar.com.txt'
感染ファイルは、/root/quarantineに移動させたとのログ。

どれどれ!

$ sudo ls -al /root/quarantine/

total 12
drwxr-xr-x 2 root root 4096 Dec 23 14:17 .
drwxr-x--- 6 root root 4096 Dec 23 14:14 ..
-rw-r--r-- 1 xxxx xxxx   68 Jul  2  2020 eicar.com.txt

おぉ!ちゃんと機能した。

7.補足

現在、以下のようなエラーが発生している。機能上は問題ないようだ。

 Dec 24 18:06:28 clamd [5485]: LibClamAV Error: fmap_get_MD5: error reading while generating hash!
Dec 24 18:06:28 kernel: clamd[5489]: segfault at 0 ip 00007f3e3e06225e sp 00007f3deaad2370 error 4 in libclamav.so.9.1.0[7f3e3dfec000+14e000]
Found module libgpg-error.so.0 with build-id: 3801187d42c495593c605451430cdf1b164e63

これはversion 0.104.1に伴うバグだという投稿があります。オンアクセススキャンの問題ではなさそうです。

コメント

タイトルとURLをコピーしました