こちら

アンチウィルスソフト Clam AntiVirus の導入
PC-UNIX 勉強会
松本ソフト開発センター 高砂
1.始めに
現在のところ、Linux を標的にしたウィルスはごく少ない状態ですから Linux サーバのウィルス対策はあ
まり必要がないような気がします。しかし、そのサーバを使用するユーザーの多くは Windows でしょう。
そのサーバを使ってメールを受信しているユーザーにウィルスが添付されたメールが送られてきたら、
サーバは何の影響も受けなくてもユーザーは感染するかもしれません。
と言うわけで、サーバをウィルスから保護すると言う目的ではなく、ユーザー宛てのメールに付いて来る
ウィルスを除去するためにアンチウィルスソフトの導入を考えました。
2.無償アンチウィルスソフト
Linux に対応した無償使用可能なアンチウィルスソフトはいくつかあります。
・ AntiVir Linux Workstation
ドイツの H+BEDV Datentechnik GmbH(http://www.hbedv.com/)の製品
で、個人で非商用に限って無料で使用可能です。インストールなどの詳
しい情報は@IT のサイト内の「Linux 用のアンチウイルスソフトを使うには」
(http://www.atmarkit.co.jp/flinux/rensai/linuxtips/617useantivir.html)を参照してください。
・ BitDeffender
ルーマニアの SOFTWIN 社(http://www.bitdefender.com/)の提供する
ウィルス対策ソフトです。Linux 版では、RPM/deb/run 形式のパッケー
ジが入手可能です。ウィルスのリアルタイム検索機能はないので、手動で実行するか cron で定
期的に実行させます。
・ OpenAntiVirus Projects
JAVA を利用したオープンソースのウィルス検索ソフトです。プロキ
シサーバ用、Samba 用、クライアント PC 用のものがリリースされて
います。ウェブサイトは http://www.openantivirus.org/にあります。
・ Clam AntiVirus
オープンソースのウィルス対策ソフトです。公式サイトは
http://www.clamav.net/です。Linux 各ディストリビューションや BSD、
Windows 用のバイナリファイルも配布されています。
1
3.Clam AntiVirus とは
Clam AntivVrus は GPL ライセンスに従って利用することができるオープンソースのアンチウイルスソフト
です。各種 UNIX 系のシステムと Windows でも動作します。シグネチャによるパターンマッチング方式
を採用しており、ウィルスパターンは指定した時間ごとにチェックし、自動で新しいパターンをダウンロー
ドします。
主な使用目的は Sendmail などの MTA と連携させて送受信するメールの添付ファイルをチェックする
事ですが、コマンドラインから特定のファイルやディレクトリにウィルスチェックをかける事もできます。次
のような機能、特徴があります。
・ コマンドラインスキャナー
・ sendmail 用の MILTER インターフェース (後述)
・ 電子署名をサポートしたウィルスデータベースのアップデート
・ ファイルアクセス時のスキャン1(Linux と FreeBSD)
・ 29000 を越すウィルス、ワーム、トロイの木馬に対応
・ 各種アーカイブファイルのサポート
FedoraCore では、Extra パッケージ(インストール CD に入っていない追加パッケージ)として提供されて
います。以下の記述を yum.conf に追加することで、yum による Extra パッケージのインストールが可能
になります。
[fedora-extras]
name=Fedora Extras $releasever - $basearch - Extra Packages
baseurl=http://download.fedora.us/fedora/dedora/$releasever/$basearch/
yu/stable ←(basearch からここまで 1 行で書いてください)
[fedora-extras-updates]
name=Fedora Extras updates $releasever - $basearch - Extra Packages
baseurl=http://download.fedora.us/fedora/dedora/$releasever/$basearch/
yu/updates ←(basearch からここまで 1 行で書いてください)
しかし、yum の標準設定で取得できるパッケージはバージョンが古い(0.71)ので、Clam AntiVirus のサ
イトから最新版を入手するのが良いでしょう。
1 DAZUKO(発音は dah-tsu-ko)というモジュールが必要になります。これは、サードパーティのプログラムがファイル
アクセスを制御できるようにするもので、ドイツの H+BEDV Datentechnik GmbH がウィルススキャンのために開発し
たのが始まりです。名前は"file access control"のドイツ語"Dateizugriffskontrolle"に由来します。
公式サイトは http://dazuko.org/です。
2
4.Clam AntiVirus の導入
2005 年 1 月 13 日の時点で、公式サイトにある FedoraCore1 用のバイナリパッケージは
clamav-0.80-2.i386.rpm
です。また、メールのウィルスチェックをするためには、以下のパッケージも必要です。
clamav-milter-0.80-2.i386.rpm
これは MILTER2という sendmail の API を利用して、sendmail が処理中のメールメッセージにアクセスし
てウィルスチェックを行なうものです。
インストールは RPM パッケージですので簡単ですが、まずパッケージの正当性をチェックします。
# rpm --import http://crash.fce.vutbr.cz/Petr.Kristof-GPG-KEY
# rpm -K clamav*
チェックが終わったらインストールします。
# rpm -ivh clamav*
これだけです。インストールが終了した時点で、clamav というユーザーがシステムに追加されているは
ずです。Clam AntiVirus はこのユーザー権限で動作します。
ついでに将来のアップデートが yum で行なえるようにしておきましょう。yum.conf に以下の記述を追加
しておきます。
[crash-hat]
name=Fedora Core $releasever - $basearch - CrashHat
baseurl=http://crash.fce.vutbr.cz/crash-hat/$releasever
enabled=1
gpgcheck=1
2 MILTER は、sendmail が処理中のメールメッセージをサー ドパーティのプログラムからアクセスできるように設計さ
れたメールフィルタ API で、sendmail 8.12 から正式な機能となっています。Sendmail が MILTER を有効にしてコン
パイルされているかは以下のコマンドで確認できます。
$ sendmail -d0 < /dev/null
出力結果の Compiled with:に続く文字列中に MILTER の文字があれば有効です。
MILTER については、http://www.imasy.or.jp/~ume/published/sendmail-milter/ の「sendmail 8.12 と MILTER
(FreeBSD PRESS No.8)」を参照してください。
3
5.設定
Clam AntiiVirus の設定ファイルは
/etc/clamd.conf
です。特に変更しなければならないところは無いはずですが、はじめのほうに書かれている Example と
いう記述がコメントアウトされている事を確認します。もし、この Example が有効になっていると設定ファ
イルが無いというエラーでウィルスチェックができません。
その他主要な設定項目を挙げておきます。
設定項目
値
LogFile
/var/log/clamav/clamd.log
LogFileMaxSize
説明
ログファイルの指定。
ログの最大サイズ。0 なら制限なし。
M,m で MB、K,k で kB 単位の指定が
0
できる。
LogSyslog
なし
ログの取得に SYSLOG を使う。
DatabaseDirectory
/var/lib/clamav
ウィルスデータベースを保存する
ディレクトリ。
MaxDirectoryRecursion
15 (デフォルト)
ディレクトリをスキャンする際の
最大階層数。
FollowFileSymlinks
なし
シンボリックリンクを辿ってスキャ
ンするかどうか。
VirusEvent
/usr/local/bin/send_sms
ウィルスを発見した際に実行する
123456789 "VIRUS ALERT: %v" コマンドを記述する。
(一例)
User
clamav
動作する際のユーザー権限。
ScanPE
なし(デフォルトで有効)
Windows の 32 ビット実行ファイル
をスキャンする。
ScanOLE2
なし(デフォルトで有効)
MS Office 文書のマクロをスキャン
する。
ScanMail
なし(デフォルトで有効)
メールをスキャンする。
ScanArchive
なし(デフォルトで有効)
圧縮ファイル、アーカイブファイ
ルをスキャンする。
Sendmail と連携するための clamav-milter の設定ファイルは
/etc/sysconfig/clamav-milter
です。インストール直後の内容は次のようになっています。
CLAMAV_FLAGS="
--quiet \
--dont-wait \
--force-scan \
--dont-log-clean \
--server=localhost \
--pidfile=/var/run/clamav/clamav-milter.pid \
local:/var/run/clamav/clamav-milter.sock \
"
4
このように clamav-milter の動作オプションが羅列されています。複数のオプションを 1 行で書く場合は
行末の\は必要ありませんが、複数行に分けて書く場合、このように行末に\が必要です。オプションの
詳細な説明は
# man clamav-milter
とする事で参照できますが、以下に主要なものを挙げておきます。
オプション
説明
--force-scan
メールの発信元がどこであれ、必ずスキャンする。
--local
LAN から発信されたメールもスキャンする。
--noxheader
通常、Clamav-milter はスキャンしたメールのヘッダーに
X-Virus-Scanned:
X-Virus-Status:
の二つの項目を付け加えます。これらを付け加えたくない場
合、このオプションを使用します。
--noreject
メールにウィルスを発見しても、メールの差出人(From:アド
レス)に返送しません。近ごろのウィルスは差出人を詐称しま
すので、付けておいた方がいいでしょう。
--outgoing
メールサーバから発信されるメールもスキャンします。
--postmaster=EMAILADDRESS
警告メッセージを送る postmaster のアドレス。
--postmaster-only
通常、スキャンしたメールにウィルスが発見されると、宛先
(To:アドレス)と postmaster に「メールを遮断した」と知ら
されます。その知らせを postmaster のみにしたい時に使いま
す。
--quiet
ウィルスを発見してメールを遮断しても、全くメッセージを
発しません。このオプションは --postmaster-only よりも優
先します。
--quarantine-dir=DIR
感染ファイルを隔離するディレクトリを指定します。
--server=HOSTNAME
clamd の動作しているサーバを指定する。
ウィルスパターンを最新のものに保つ freshclam の設定ファイルは
/etc/freshclam.conf
です。ほとんど変更する必要はありませんが、clamd.conf と同じように Example 行がコメントアウトされて
いる事を確認します。主要な設定項目は以下の通りです。
設定項目
値
説明
DatabaseDirectory /var/lib/clamav
ウィルスデータベースを保存するディ
レクトリ。
UpdateLogFile
/var/log/clamav/freshclam.log
freshclam のログファイルを指定する。
LogSyslog
なし(デフォルトで無効)
SYSLOG を利用するかどうか。
Checks
24(一例)
ウィルスデータベースの更新を、1 日
に何回チェックするか。
5
6.Clam AntiVirus の利用
まず、最初にウィルスパターンファイルを最新のものにします。
# freshclam
次のように Clam AntiVirus 関連の 3 つのデーモンを起動します。
# service clamd start
# service freshclam start
# service clamav-milter start
また、システムを起動した際にこれらのデーモンも自動起動するように chkconfig で設定しておきましょう。
# chkconfig --level 35 clamd on
# chkconfig --level 35 freshclam on
# chkconfig --level 35 clamav-milter on
コマンドラインでの書式は次のようになります。
clamscan [options] [file/directory]
例えば
# clamscan /root
とすると、/root ディレクトリ内のファイルをスキャンします。ファイルの名前の後ろに OK と付いていれば、
そのファイルにウィルスは見つからなかった事になります。最後にサマリーが表示されます。次に示す
例では、5 つの感染ファイルが見つかっています。
----------- SCAN SUMMARY ----------Known viruses: 29410
Scanned directories: 1
Scanned files: 34
Infected files: 5
Data scanned: 0.30 MB
I/O buffer size: 131072 bytes
Time: 6.510 sec (0 m 6 s)
clamscan コマンドに与えるオプションには以下のようなものがあります。
-r
サブディレクトリも再帰的にスキャンします。
--remove
感染ファイルを削除します。
--quiet
エラーメッセージ以外出力しません。
--move=DIRECTORY
感染ファイルを指定したディレクトリに移動します。
定期的にスキャンを実行するなら、cron に登録しておきましょう。
6
7.sendmail との連携
sendmail と連携させてメールの送受信時にウィルスチェックさせるには、sendmail の設定変更が必要で
す。/etc/mail/sendmail.mc の末尾に以下の記述を追加し、sendmail.cf ファイルを作成しなおします。
INPUT_MAIL_FILTER(`clamilter', `S=local:/var/run/clamav/clamav-milter.sock,
F=, T=S:4m;R:4m')dnl ←(ここまで 1 行で書いてください)
define(`confINPUT_MAIL_FILTERS', `clamilter')dnl
その後、sendmail を再起動します。
実際にウィルスを送って動作の確認します。その為のサービス「Anti-Virus Testing Tool」が Webmail.us
というサイトにあります。http://www.webmail.us/testvirus にアクセスしてテストします。このテストでは、
EICAR3という実害のないテスト用ウィルスを指定のアドレスに向けて送信します。
Anti-Virus Testing Tool の使い方は以下になります。
Step1
テストしたいメールアドレスを入力します。
Step2 [Send]ボタンをクリックします。Step1 で入力したアドレスに確認のメールが
届きます。そのメールにある URI にアクセスし、テストを受ける事を了承し
ます。
Step3
テスト項目が 27 個あります。それぞれのテストを[Send]ボタンで実行させ
ます。
いくつか試したところ、こんなメールがウィルスメールの宛先と postmaster に届きました。
From [email protected]
Thu Jan 13 15:41:27 2005
Date: Thu, 13 Jan 2005 15:10:16 +0900
From: [email protected]
To: [email protected]
Cc: <[email protected]>
Auto-Submitted: auto-submitted (antivirus notify)
X-Infected-Received-From: crc2.excedent.us [206.158.107.157]
Subject: Virus intercepted
X-Virus-Scanned: ClamAV 0.80/663/Wed Jan 12 07:44:48 2005
clamav-milter version 0.80j
on localhost
X-Virus-Status: Clean
A message sent from <[email protected]> to
<[email protected]>
contained Eicar-Test-Signature and has not been delivered.
ウィルスメールがサーバに届いた時点で、Clam AntiVIrus は即座にそのメールを遮断しますが、上記
の警告メールはすぐには届かず、しばらくたってから届きました。
3 EICAR について詳しく知りたい方は、http://www.eicar.org/をご覧下さい。
7
【参考サイト】
「Clam AV: Project News」 http://www.clamav.net/
Clam AntiVirus の公式サイトです。各 OS 用のバイナリパッケージが入手できます。
「ClamAV のページ」 http://clamav-jp.sourceforge.jp/
Clam AntiVirus の非公式日本語情報サイトです。「Clam Antivirus に関するメモ」では
マニュアルを日本語で読めます。
「ほかり net」 http://www.hokari.net/
Clam AntiVirus の導入方法が非常に簡潔に説明されています。
8