Linuxで使えるフリーのアンチウイルス、ClamAVのインストールと初期設定のメモです。

環境

今回使ったOSは、Ubuntu 16.04 LTS です。

インストール

パッケージマネージャーからClamAVをインストールします。
※以下コマンドは全て root ユーザーで実行します。

sudo su # root ユーザーに変更

apt install -y clamav clamav-daemon

インストールが終わったら、ウイルス定義を更新します。
ウイルス定義は freshclam というコンポーネントで定期的に更新されますが、手動で更新する場合は、一度 freshclam を停止し、手動更新してから再度 freshclam を起動します。

# freshclam を停止
service clamav-freshclam stop

# ウイルス定義を手動更新
freshclam

# freshclam を再起動
service clamav-freshclam start

オンアクセススキャン設定

ClamAVには、ファイルアクセスの度にウイルススキャンを実行する「オンアクセススキャン」という機能がありますが、デフォルトでは無効になっています。
以下の設定で、このオンアクセススキャンを有効にします。

# 設定ファイルをエディタで開く
nano /etc/clamav/clamd.conf

/etc/clamav/clamd.conf

# 以下の箇所を変更
ScanOnAccess true
User root

# 以下を追記
OnAccessMountPath /
OnAccessPrevention false
OnAccessExtraScanning true
OnAccessExcludeUID 0
VirusEvent /opt/clamav-utils/clamd-response.sh

上記の設定では、オンアクセススキャン対象とするディレクトリをルートディレクトリ以下全て (OnAccessMountPath) に設定しており、全てのファイルへの読み取り権限が必要なため、実行ユーザーは root に設定しています (User root)。

オンアクセススキャンを有効にすると、マルウェアが見つかったときに任意のスクリプトを実行することができ、実行するスクリプトは、設定ファイルの “VirusEvent” に設定します。(上記の設定では “/opt/clamav-utils/clamd-response.sh” を実行するよう指定しています)

今回は検知されたマルウェアは削除したいので、このスクリプトファイルに、ファイルを削除するコマンドを記述します。
(このファイルは root のみ実行できるよう、パーミッションは700に設定します)

# /opt/clamav-utils/clamd-response.sh ファイルを作成
cd /opt
mkdir clamav-utils
chown root:root clamav-utils
chmod 700 clamav-utils
cd clamav-utils
touch clamd-response.sh
chown root:root clamd-response.sh
chmod 700 clamd-response.sh

# エディタで開く
nano clamd-response.sh

/opt/clamav-utils/clamd-response.sh

#!/bin/sh

# ClamAVのウイルス検知イベントをログに記述
echo "$(date) - $CLAM_VIRUSEVENT_VIRUSNAME > $CLAM_VIRUSEVENT_FILENAME" >> /var/log/clamav/infected.log

# マルウェアファイルを削除
rm $CLAM_VIRUSEVENT_FILENAME

これで ClamAV の設定は全て終わりましたが、このままではClamAVでオンアクセススキャンを行うことができません。
理由は AppArmor というUbuntuにデフォルトでインストールされているセキュリティモジュールが、root で実行できるアプリケーションを制限しているためです。

そこで、最後に AppArmor の設定を変更し、ClamAV を root で実行できるようにします。

# AppArmor Utils をインストール
apt install apparmor-utils -y

# AppArmor で ClamAV を許可
aa-complain clamd

# サービスを再起動
service clamav-daemon stop
service apparmor stop
service apparmor start
service clamav-daemon start

exit; # exit from root

オンアクセススキャンの確認

最後にオンアクセススキャンが正常に動作しているか確認します。
確認には、eicar.com というテスト用のウイルスファイルを使います。
eicar ファイルの詳細はEuropean Institute for Computer Anti-Virus Researchのページをご覧ください。

eicar ファイルの実体は、「X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*」という文字列の書かれたファイルです。
確認は以下の手順で行います。

  1. ClamAVを停止
  2. eicar ファイルを作成
  3. ClamAVを再起動
  4. eicar ファイルをコピーし、ClamAVのログを確認
cd ~

# ClamAVを停止
sudo service clamav-daemon stop

# eicar ファイルを作成
touch eicar.com
nano eicar.com

~/eicar.com

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
# ClamAVを再起動
sudo service clamav-daemon start

# eicarファイルにアクセス
cp eicar.com eicar2.com

# ClamAVのログを確認
tail /var/log/clamav/clamav.log

eicar が検知されていると、以下のようなログが記述されます。

Mon Apr 30 21:59:47 2018 -> ScanOnAccess: /home/adminuser/eicar.com: Eicar-Test-Signature(69630e4574ec6798239b091cda43dca0:69) FOUND
Mon Apr 30 21:59:47 2018 -> ScanOnAccess: /home/adminuser/eicar2.com: Eicar-Test-Signature(69630e4574ec6798239b091cda43dca0:69) FOUND

以上でClamAVのインストールと初期設定は全て完了です。