Amazon LinuxにClamAVを導入する

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

AWSはサービスとしてとても高いレベルのセキュリティが担保されていますが、EC2インスタンス上のOSやミドルウェアのセキュリティについてはユーザにて責任を持って対処する必要があります。このためクラウドの世界においてもサーバセキュリティは重要です。

今回はオープンソースのアンチウイルスソフトウェアであるClamAVをAmazon LInuxに導入してみました...はい、実は2012年に同様の記事が書かれていたのですが、現在とは導入や設定に違いがあるので、改めて記事にしてみました!

やってみた

ClamAVのインストール

インストールはyumコマンド一発です。以前はepelリポジトリからのインストールが必要でしたが、現在はamznリポジトリに用意されています。

$ sudo yum install clamav clamav-update

パターンファイルの更新

設定ファイルを編集します。

$ sudo vi /etc/freshclam.conf

編集内容は一箇所。"Example"と書かれた行をコメント化します。

# Comment or remove the line below.
#Example
↑コメント化

では手動でパターンファイルを更新します。

$ sudo freshclam
ClamAV update process started at Wed Jun 17 09:24:11 2015
Database updated (3849658 signatures) from database.clamav.net (IP: 64.6.100.177)

ちゃんと更新できました。今後はcronで自動更新されます。

$ sudo cat /etc/cron.d/clamav-update
## Adjust this line...
MAILTO=root

## It is ok to execute it as root; freshclam drops privileges and becomes
## user 'clamupdate' as soon as possible
0  */3 * * * root /usr/share/clamav/freshclam-sleep

が、インストールされた時点では自動更新は無効になっています。以下のように設定ファイルを変更します。

$ sudo vi /etc/sysconfig/freshclam
#FRESHCLAM_DELAY=disabled-warn  # REMOVE ME
↑コメント化

ウイルススキャンの実行

それではウイルススキャンを実行してみましょう。以下のように実行すると、ホームディレクトリ以下をスキャンし、異常とみなしたファイルのみを出力します。

$ sudo clamscan -r -i ~

----------- SCAN SUMMARY -----------
Known viruses: 3844068
Engine version: 0.98.7
Scanned directories: 4
Scanned files: 6
Infected files: 0
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 7.615 sec (0 m 7 s)

じゃ、実際にウイルスを検知させてみます。アンチウイルスのテストファイルとして名高いeicarを作ります。テキストファイルにテストコードを埋め込みます。

$ vi ~/eicar.com

そしてもう一度スキャン実行。

$ sudo clamscan -r -i ~
/home/ec2-user/eicar.com: Eicar-Test-Signature FOUND

----------- SCAN SUMMARY -----------
Known viruses: 3844068
Engine version: 0.98.7
Scanned directories: 4
Scanned files: 7
Infected files: 1
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 7.645 sec (0 m 7 s)

ちゃんと検出されましたね!

あとは、cronで定期的にスキャンを実行し、異常が検出されたらメール通知などを行いましょう!

さいごに

Linuxのアンチウイルスソフトウェアは、リアルタイムスキャンを実行するのにカーネルのフックが必要な関係であまり種類が多くないのですが、リアルタイムでは無くスケジュールスキャンでも良ければClamAVのような選択肢もあるかと思います。とはいえ商用製品のほうが対応出来るパターンファイルやロジックが豊富なので、重要度の高いシステムではTrendMicroさんのような商用製品をご検討頂くことをお勧めします。