ClamAVでウィルススキャンを実行する手順を記載します。
Table of Contents
1 clamscanでウィルススキャンを実行する
clamavパッケージをインストールします。
$ sudo dnf install -y clamav
clamscanでウィルススキャンを実行します。
- -rオプションでディレクトリを再帰的に走査します。
- -iオプションで検出ファイルのみ表示します。
- –moveオプションで検出ファイルを指定のディレクトリへ移動します。
$ mkdir ~/virus $ clamscan -r -i --move=$HOME/virus .
2 手動でウィルスデータベースを更新する
ウィルスデータベースを更新するにはfreshclamコマンドを実行します。 freshclamコマンドはclamav-updateパッケージに含まれます。
$ sudo dnf install -y clamav-update $ sudo freshclam
3 自動的にウィルスデータベースを更新する
clamav-updateパッケージをインストールすると3時間毎に /usr/share/clamav/freshclam-sleepを実行するcronジョブが有効になります。
freshclam-sleepは/etc/sysconfig/freshclamで設定されるFRESHCLAM_DELAY がdisabled-warnとdisabledでない場合にfreshclamを実行します。 /etc/sysconfig/freshclamのデフォルトではFRESHCLAM_DELAYは disable-warnが設定されておりfreshclam-sleepはfreshclamを実行しません。
よって、自動的にウィルスデータベースを更新するには、clamav-updateパッケージをインストールして、/etc/sysconfig/freshclamでFRESHCLAM_DELAY にdisabled-warnやdisabledを設定しないようにします。
$ sudo dnf install -y clamav-update $ sudo sed -e 's/^FRESHCLAM_DELAY/#FRESHCLAM_DELAY/g' \ -i /etc/sysconfig/freshclam
ウィルスデータベースの更新間隔を変更するには以下のファイルを編集します。
/etc/cron.d/clamav-update
4 clamdでウィルススキャンを実行する
clamdは予めデータベースを読み込み、clamdscanコマンドのリクエストに答えてウィルススキャンを実行するデーモンです。データベースの分だけ常にメモリを消費しますが、clamdscanはclamscanに比べて実行速度が段違いに早いです。 clamscanとは異なり、clamdscanの挙動はclamdに依存します。
WEBサイトにアップロードされるファイルをスキャンする場合はこちらを利用すべきでしょう。
clamdの動作に必要なパッケージをインストールします。
$ sudo dnf install -y clamav-server clamav-server-systemd clamav-scanner
clamd@scan.serviceが読み込む/etc/clamd.d/scan.confを編集します。
$ sudo sed -e 's/^Example/#Example/g' \ -e 's/^User.*/User root/g' \ -e 's/^#LocalSocket /LocalSocket /g' \ -e 's/^#LocalSocketGroup.*/LocalSocketGroup clamscan/g' \ -e 's/^#LocalSocketMode /LocalSocketMode /g' \ -e 's/^#FixStaleSocket /FixStaleSocket /g' \ -e 's/^#ExcludePath /ExcludePath /g' \ -i /etc/clamd.d/scan.conf
clamd@scan.serviceを有効にします。
$ sudo systemctl enable clamd@scan
clamdscanコマンドが利用する/etc/clamd.confを/etc/clamd.d/scan.confのシンボリックリンクにします。
$ sudo ln -s /etc/clamd.d/scan.conf /etc/clamd.conf
clamdの動作に必要なSELinuxの設定を許可します。
$ sudo setsebool -P antivirus_can_scan_system 1 $ sudo setsebool -P clamd_use_jit 1
clamdscanを実行するユーザをclamscanグループとvirusgroupグループに所属させます。
$ sudo gpasswd -a "${USER}" clamscan $ sudo gpasswd -a "${USER}" virusgroup
gpasswdの設定を反映させる為に一度再起動します。
$ sudo reboot
再起動後にclamdscanが実行できるようになります。
$ systemctl is-active clamd@scan.service active $ clamdscan <file-or-dir>