綺麗に死ぬITエンジニア

Amazon EC2に、オープンソースのウイルス対策ソフトClamAVを導入する

2015-09-03

今回は、AWSのAmazon EC2(Amazon Linux)上に、オープンソースのアンチウイルスソフトである、ClamAVの導入方法を解説します。

ネット上にいくらか資料がありますが、単純にそれだけでは実現できないこともあったので、備忘録として残します。

ClamAVのインストール

まず、yumコマンドでインストールします。以前まではリポジトリを指定しなければならなかったようですが、現在は特に指定することなく導入できます。

sudo yum install -y clamav clamav-update

ウイルス定義ファイル更新ツール(freshclam)の設定

インストールしたら次に、以下のようにウイルス定義ファイル更新に関する設定ファイルを編集します。

sudo vi /etc/freshclam.conf

以下の行をコメントアウトします。

# Example

以下の行のコメントアウトを解除します。

DatabaseDirectory /var/lib/clamav
UpdateLogFile /var/log/freshclam.log
DatabaseOwner clamupdate

以上で、定義ファイルの更新準備が完了です。

以下のコマンドを入力することで、ウイルス定義ファイルを最新のものに更新することができます。

sudo freshclam

ウイルスチェックデーモンの設定

今回は、パフォーマンスを考慮し、デーモンを利用したウイルスチェックを行うことを前提とします。

以下のように、ウイルスチェックデーモンの設定ファイルを編集します。

sudo vi /etc/clamd.d/scan.conf

以下の行をコメントアウトします。

# Example

以下の行のコメントアウトを解除します。

LogFile /var/log/clamd.scan  #ログ出力
LogSyslog yes  #ログ出力
LogRotate yes  #ログ出力
LocalSocket /var/run/clamd.scan/clamd.sock
FixStaleSocket yes
TCPSocket 3310
TCPAddr 127.0.0.1
ExcludePath ^/proc/  #スキャン除外対象
ExcludePath ^/sys/  #スキャン除外対象
User root  #念のためrootに変更

デーモンの設定ファイルの読み込み先が/etc/clamd.confになっているので、シンボリックリンクを張って対応します。

sudo ln -s /etc/clamd.d/scan.conf /etc/clamd.conf

以上で設定は終了です。

デーモンの起動は以下のコマンドで実行します。

sudo service clamd.scan start

後は、OS起動時の自動起動設定をして終了です。

sudo chkconfig clamd.scan on

ウイルススキャンの実行

デーモンを起動した状態で、以下のコマンドでスキャンを実行できます。

clamdscan /

「/」を他のパスにすることで、特定のディレクトリだけスキャンすることも可能です。

clamdscan /var/www/

cronへの登録

一般的な運用では、ウイルススキャンは定期的に実行しますので、cronに登録して定期的に自動で実行するようにします。

また、その実行の際にウイルス定義ファイルも更新し、ウイルスが発見された場合にはメールで通知するようにします。

以下は、それを実現するシェルスクリプトです。こちらを参考にしています。

#!/bin/bash
PATH=/usr/bin:/bin

# 送信メール設定(変更してください)
fromAddr="from@example.com";
toAddr="to@example.com";
subjString="[ClamAV自動送信メール] `hostname` でウイルスを検出しました";

# スキャン開始
logger "[Info] ClamAV Scan Start";

# ウイルス定義ファイル更新
freshclam > /dev/null 2>&1

# ウイルススキャン実行
CLAMSCANTMP=`mktemp`
clamdscan / > $CLAMSCANTMP 2>&1
bodyString="`grep FOUND$ $CLAMSCANTMP`";
[ ! -z "$(grep FOUND$ $CLAMSCANTMP)" ] && \

# メール送信
echo -e "From: ${fromAddr}\nTo: ${toAddr}\nSubject:${subjString}\n\n${bodyString}" | /usr/sbin/sendmail -t ${toAddr} -f ${fromAddr}

#ログ出力 ウィルス検知
grep FOUND$ $CLAMSCANTMP | logger
rm -f $CLAMSCANTMP

# スキャン終了
logger "[Info] ClamAV Scan Finish"

このシェルスクリプトに実行権限を付与後、cronに登録することで定期実行ができます。

sudo chmod 755 /path/to/virusscan.sh
crontab -e
15 3 * * * /path/to/virusscan.sh

まとめ

ウイルス対策ソフトといえば複雑な設定がいるものかと思っていましたが、思っていたより簡単にインストールできました。