ClamAVのオンアクセススキャンを設定

  • AlmaLinux release 9.6 (Sage Margay)
  • ClamAV: 1.0.9-1
  • Kernel: 5.14.0-570.22.1.el9_6.x86_64
  • Curl: 7.76.1

システム要件の確認

AlmaLinuxへのClamAV導入に成功したから、次はオンアクセススキャンを設定する。オンアクセススキャンが求めるシステム要件はドキュメントに記載されていた。曰く、

  • カーネルバージョン3.8以上(fanotifyというカーネルAPIを使用するため)
  • Curl7.45以上

ということである。それぞれ条件を確認してゆくと、AlmaLinux9であれば何の手数もかけず最初から満たされていた。

$ uname -r
5.14.0-570.22.1.el9_6.x86_64

$ grep FANOTIFY /boot/config-$(uname -r)
CONFIG_FANOTIFY=y
CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y

$ curl -V
curl 7.76.1

scan.confの編集

オンアクセススキャンの設定ファイルはclamdの動作を司るscan.conf内にある。関連する設定はOnAccessから始まるので分かりやすくなっている。

設定項目設定内容
OnAccessDisableDDDDDD(Dynamic Directory Determination)を有効にするかどうかを指定する。DDDとはディレクトリを動的に、再帰的に辿ってスキャンするかどうかを司る設定。デフォルトでは動的に、再帰的に辿るようになっていた。
OnAccessIncludePathオンアクセススキャンの対象となるディレクトリを指定する。複数ディレクトリを指定する場合は、複数のOnAccessIncludePathディレクティブを記載する。DDDが有効(=OnAccessDisableDDD no)な設定でルートディレクトリ(/)を指定するとエラーとなった。代わりにOnAccessMountPathディレクティブで/を指定するようメッセージが出力される。
OnAccessPreventionウイルスとして検知されたファイルを開こうとしたときにブロックする。ファイルの作成は許されるので、curlでEICARテストファイルをダウンロードすることはできてしまう。
OnAccessExtraScanningデフォルトではファイルを開こうとしたときだけしかスキャンされないけれども、ファイルやディレクトリが作成・移動されたときにもスキャンをおこなうようにできる。
OnAccessMountPathスキャンするマウントポイントを指定する。ルートディレクトリ(/)も指定できるけれどもDDDが自動的に無効とされるのでディレクトリを動的に、再帰的に辿ってスキャンしなくなる。
OnAccessExcludeRootUIDRoot権限で実行されるプロセスはスキャンから除外する。オンアクセススキャンを有効にする際はこの設定かOnAccessExcludeUID若しくはOnAccessExcludeUnameのどれか1つは指定しておかねばならない。スキャンの無限ループを防ぐために、clamdを実行するユーザを除外するよう推奨されている。

一先ず/homeをオンアクセススキャンの対象とした設定をこしらえるとこうである。

$ grep -v '#' /etc/clamd.d/scan.conf | grep -v '^$'
LogFile /var/log/clamd.scan
LogFileMaxSize 0
LogTime yes
LogSyslog yes
LogVerbose yes
ExtendedDetectionInfo yes
DatabaseDirectory /var/lib/clamav
LocalSocket /run/clamd.scan/clamd.sock
LocalSocketMode 660
ExcludePath ^/proc/
ExcludePath ^/sys/
OnAccessIncludePath /home
OnAccessPrevention yes
OnAccessExtraScanning yes
OnAccessExcludeRootUID yes

設定を終えたらオンアクセススキャンがOS起動時に立ち上がってくるようにしておく。

$ sudo systemctl enable clamonacc.service
Created symlink /etc/systemd/system/multi-user.target.wants/clamav-clamonacc.service → /usr/lib/systemd/system/clamav-clamonacc.service.

最後にサービスを再起動して終いである。

$ sudo systemctl restart clamd@scan.service clamonacc.service
$ systemctl status clamd@scan.service clamonacc.service

動作確認

EICARテストファイルをダウンロードして開いてみるとこうである。

$ sudo curl https://files.trendmicro.com/products/eicar-file/eicar.com -O
$ cat eicar.com
cat: eicar.com: 許可されていない操作です

ファイルを開こうとしたときにきちんとブロックされる。一方で、rootユーザで開くとスキャンから除外されているので内容が表示される。

$ sudo cat eicar
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

ある程度の望む動作は実現できたけれども、この設定であるとrootユーザによる行為はスキャンから除外されるから市販のアンチウイルスソフトのような動作は難しそうな風情であった。

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください