ClamAV をセットアップする機会があったので,その手順をメモしておく.

前提

  • Ubuntu 20.04 LTS
  • Google Cloud Platform e2-medium インスタンス (2x vCPU and 4 GB memory)
    • f1-micro のような貧弱なインスタンスだと ClamAV が OOM killer に殺されるので注意

手順

セットアップ.

# インストール
sudo apt -y install clamav clamav-daemon
# ウイルス隔離用のディレクトリの作成
sudo mkdir /root/quarantine
# スキャン除外ディレクトリの指定
sudo su -c 'echo "ExcludePath ^/proc" >> /etc/clamav/clamd.conf'
sudo su -c 'echo "ExcludePath ^/sys" >> /etc/clamav/clamd.conf'
sudo su -c 'echo "ExcludePath ^/run" >> /etc/clamav/clamd.conf'
sudo su -c 'echo "ExcludePath ^/dev" >> /etc/clamav/clamd.conf'
sudo su -c 'echo "ExcludePath ^/snap" >> /etc/clamav/clamd.conf'
sudo su -c 'echo "ExcludePath ^/root/quarantine" >> /etc/clamav/clamd.conf'
# サービスの起動と有効化
sudo systemctl start clamav-daemon
sudo systemctl enable clamav-daemon

手動でフルスキャンしてみる.

$ sudo clamdscan --fdpass --move=/root/quarantine /
/sys: Excluded
/snap: Excluded
/run: Excluded
/proc: Excluded
/dev: Excluded
/root/quarantine: Excluded
WARNING: /var/snap/lxd/common/lxd/unix.socket: Not supported file type

----------- SCAN SUMMARY -----------
Infected files: 0
Total errors: 1
Time: 795.861 sec (13 m 15 s)

定期的にフルスキャンするように cron に設定.

$ sudo cat /etc/cron.{hourly,daily,weekly,monthly}/clamav-fullscan 
#!/bin/sh

/usr/bin/clamdscan --fdpass --quiet --move /root/quarantine /

ログは /var/log/clamav にある.

$ ls -l /var/log/clamav
total 2788
-rw-r----- 1 clamav adm 2846754 Mar 22 11:23 clamav.log
-rw-r----- 1 clamav adm    2516 Mar 22 11:15 freshclam.log

参考