Fedora 26: ClamAVでウィルススキャンを実行する

ClamAVでウィルススキャンを実行する手順を記載します。

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グループに所属させます。

$ sudo gpasswd -a "${USER}" clamscan

gpasswdの設定を反映させる為に一度再起動します。

$ sudo reboot

再起動後にclamdscanが実行できるようになります。

$ clamdscan <file-or-dir>

5 clamtkパッケージでウィルススキャンを実行する

clamtkパッケージはclamavをGUI操作できるようにするパッケージです。デスクトップで使うのに向いています。

$ sudo dnf install -y clamavtk

起動画面は以下の通りです。私の環境だと各項目を選択するのにダブルクリックする必要がありました。

0001_ClamTk.png

Settingsで"scan directories recursively"にチェックを入れておきます。

0002_ScanDirectoriesRecursively.png

"Scan a directory"からホームディレクトリを再帰的にスキャンできます。

0003_ScanADirectory.png