Ubuntu 16.04: ClamAVでウィルススキャンを実行する

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

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

clamavパッケージをインストールします。

$ sudo apt install -y clamav

clamscanでウィルススキャンを実行します。

  • -rオプションでディレクトリを再帰的に走査します。
  • -iオプションで検出ファイルのみ表示します。
  • –moveオプションで検出ファイルを指定のディレクトリへ移動します。
$ mkdir ~/virus
$ clamscan -r -i --move=$HOME/virus .

2 手動でウィルスデータベースを更新する

ウィルスデータベースを更新するにはfreshclamコマンドを実行します。

$ sudo freshclam

clamav-freshclamパッケージをインストールしている場合は以下のエラーとなります。

ERROR: /var/log/clamav/freshclam.log is locked by another process
ERROR: Problem with internal logger (UpdateLogFile =
/var/log/clamav/freshclam.log).

3 clamav-freshclamパッケージで自動的にウィルスデータベースを更新する

clamav-freshclamパッケージが自動的にfreshclamコマンドを実行してくれるので、自分でfreshclamコマンドを実行する必要はありません。clamav-freshclamパッケージはclamavパッケージと一緒にインストールされます。

ただし、以下のように初回起動時は更新がなかなか上手く行かない場合があります。

WARNING: getfile: Unknown response from db.local.clamav.net

その場合は一度clamav-freshclamを停止してからfreshclamコマンドを自分で実行すると良いでしょう。

$ sudo systemctl stop clamav-freshclam
$ sudo freshclam
$ sudo systemctl start clamav-freshclam

clamav-freshclamによるデータベースの更新間隔はfreshclam.confのChecksの値で決まります。デフォルトでは1日に24回更新を試みます。

$ grep Checks /etc/clamav/freshclam.conf
Checks 24

4 clamav-daemonパッケージでウィルススキャンを実行する

clamav-daemonパッケージはclamdデーモンとclamdscanコマンドからなるパッケージです。clamdはデータベースを予め読み込み、clamdscanコマンドの要求に応じてスキャンを実行するデーモンです。データベースの分だけ常にメモリを消費しますが、clamdscanはclamscanに比べて実行速度が段違いに早いです。clamscanとは異なり、clamdscanの挙動はclamdに依存します。

WEBサイトにアップロードされるファイルをスキャンする場合はこちらを利用すべきでしょう。

$ sudo apt install -y clamav-daemon
$ clamdscan <dir>

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

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

$ sudo apt install -y clamtk

LC_TIME=Cを設定しないとスキャン後のダイアログが表示されず、駆除を実行したりや履歴に残せない問題があるので、desktopファイルでLC_TIME=Cを設定するようにします。直接clamtkを呼ぶ場合も同様にLC_TIME=Cを設定してください。

$ sudo sed -e 's/Exec=clamtk %F/Exec=env LC_TIME=C clamtk %F/g' \
-i /usr/share/applications/clamtk.desktop

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

0001_ClamTk.png

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

0002_ScanDirectoriesRecursively.png

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

0003_ScanADirectory.png