連載
» 2002年04月23日 00時00分 公開

実用qmailサーバ運用・管理術(8):メールサーバで行うウイルス対策 (3/3)

[鶴長鎮一,@IT]
前のページへ 1|2|3       

インストールと実行

 ここでは実績やおのおのの相性から、アンチウイルスソフトとして「Sophos Anti-Virus」、qmailに仕掛けるトリガソフトに「Qmail-Scanner」を利用します。

 最近ではWindowsプラットフォームで名をはせたメーカーもLinux対応製品をリリースしていますが、Sophosは比較的古くからLinuxへの関心が高く、また日本語サイト(http://www.sophos.co.jp/)も充実しています。Qmail-Scannerはqmailにパッチを当てる必要があるものの、インストール自体は比較的容易で、既存システムへの組み込みも最小限の手間で行えます()。前回までで紹介したPOP Before SMTPやvpopmailなどが導入されている場合でも、特に大きな変更を行う必要はありません。

注:アンチウイルスソフトにSophos以外のものを使うことも比較的容易です。Qmail-Scannerをインストールする前にアンチウイルスソフトをサーバに組み込んでおけば、Qmail-Scannerのコンフィグ時に自動で組み込まれます。

Sophos Anti-Virusのインストール

 まずは、アンチウイルスソフトであるSophos Anti-Virusをインストールします。評価版(http://www.sophos.co.jp/downloads/products/)をダウンロードする際には氏名やメールアドレスなどの記入が必要ですが、無償評価期間中でもテクニカルサポートが受けられるので、手間を惜しまずに入力しましょう。

 Linux用のファイルには、libc5対応版とlibc6対応版があります。ここ1年以内に発表されたディストリビューションであれば、まず間違いなくlibc6対応ですが、/lib/libc.so.*ファイルのバージョンでも確認できます。/lib/libc.so.6ファイルが存在する場合はlibc6対応版、/lib/libc.so.5ファイルが存在する場合はlibc5対応版をダウンロードします(編注)。

編注:/lib/libc.so.6と/lib/libc.so.5が両方ある場合は、libc6用を選択すればよい。なお、本文ではダウンロード画面の表記に従って「libc6」としているが、これはいわゆる「glibc2.x」のことである。

 ここではlibc6対応版を例に作業を進めますが、libc5対応版を利用される場合は、ファイル名を置き換えるだけで同じように作業できます。

 まず、適当な作業ディレクトリにファイルをダウンロードして展開します。

$ tar xvfz linux.intel.libc6.tar.Z
$ cd sav-install/

 次に、スーパーユーザーでユーザー「sweep」を新規に作成し、インストール用スクリプトを実行します。

$ su
# adduser sweep
# ./install.sh

 これで、/usr/local/sav/と/usr/local/bin/に、それぞれウイルス定義ファイルと検知コマンド「sweep」がインストールされます。

ウイルススキャンの実行

 試しにウイルススキャンを行ってみましょう。各ユーザーのホームディレクトリをスキャンする場合は、次のようにスキャン対象のファイルやディレクトリを引数に指定します。

$ sweep ~/

 もしこここでウイルスが検知されれば、

>>> Virus ‘EICAR-AV-Test’ found in file 検出されたファイル名

のようにメッセージが表示されるので、「sweep -remove 感染ファイル名」でウイルスの除去を行う必要があります。スキャニングの際に感染ファイルの駆除まで行う場合は、

# sweep -di 検索ディレクトリファイル

のように、「-di」オプションを指定します。そのほかにも、すべてのファイルのスキャンを行う「-all」オプションやzipファイル中のファイルを対象にする「-zip」など、メールメッセージのウイルススキャンだけではもったいないほど多彩なオプションを備えています。詳しくは「man sweep」を実行するか、Sophos Anti-Virusのオンラインドキュメント(http://www.sophos.co.jp/support/docs/#unix)を参照してください。

 定期的なウイルススキャンと同じくらい重要な作業が、ウイルスを検知するためのパターンファイルのアップデートです。Sophos Anti-Virusでは、「最新のウイルスID(IDE ファイル)のダウンロード」(http://www.sophos.co.jp/downloads/ide/index.html#ide)で各種定義ファイルを入手できます。zipファイルを入手した場合は、ファイルを解凍して/usr/local/savディレクトリに展開します。

# cd /usr/local/sav
# unzip zipファイルのパス/zipファイル

 これで、最新の定義ファイルを利用することができます。

Qmail-Scannerのインストール

 ウイルススキャンコマンドであるsweepを呼び出すためのトリガ「Qmail-Scanner」をqmailに組み込みます。インストールには次のものが必要です。

  • maildrop-1.3.8に含まれるreformime
  • Perl 5.005_03+
  • Perlモジュール Time::HiRes
  • Perl module DB_File(大抵のディストリビューションではインストールされています)
  • qmailへのパッチ

 では、順番に見ていきましょう。

●reformime

 http://download.sourceforge.net/courier/から、maildrop-1.3.8.tar.gzをダウンロードして展開・インストールします。

# tar xvfz maildrop-1.3.8.tar.gz
# cd maildrop-1.3.8/
# ./configure
# make
# make install

●Time::HiResモジュール

 次に、Perlにモジュールを追加します。/usr/bin/suidperlのオーナーとパーミッションを確認して、次のようになっていることを確認します(日付やファイルサイズは一例です)。

# ls -l /usr/bin/suidperl
-rws--x--x   2 root     root       544416 Feb 16  2001 /usr/bin/suidperl*

 もし上記のようになっていない場合は修正しておきます。

# chown root /usr/bin/suidperl
# chmod 4711 /usr/bin/suidperl

 次に、Time::HiResモジュールをhttp://www.cpan.org/modules/by-module/Time/からダウンロードして展開します。2002年4月現在の最新版はTime-HiRes-01.20.tar.gzです。

# tar xvfz Time-HiRes-01.20.tar.gz
# cd Time-HiRes-01.20/

 インストールを続けます。

# perl Makefile.PL
# make
# make install

●qmailへのパッチ

 Qmail-Scannerをトリガにするには、環境変数「QMAILQUEUE」を解釈できるようにqmailにパッチを適用する必要があります。QMAILQUEUEを解釈することで、qmailの送受信プロセスのたびにQmail-Scannerを実行できるようになります。Qmail-Scannerに限らず、ほかのトリガプロセスで「qmail-queue」を置き換える場合、環境変数にそのプロセスを登録するだけで、さまざまなトリガプロセスを実装できるというわけです。

 http://www.qmail.org/qmailqueue-patchをダウンロードして、qmailをインストールした際に展開したソースディレクトリでパッチを当てます。すでにソースディレクトリを削除している場合は、本連載の第1回を参照してください。

# cd qmail-1.03
# patch < ../qmailqueue-patch

 ここで、動作中のqmailを停止させる必要があります。rcスクリプトを使って停止させた後、インストール作業を続けます。

# /etc/rc.d/init.d/qmail stop
# make setup

●Qmail-Scanner

 準備が整ったところで、Qmail-Scanner本体のインストールを行います。http://prdownloads.sourceforge.net/qmail-scanner/から最新版であるqmail-scanner-1.10.tgz(2002年4月現在)を作業ディレクトリにダウンロードして展開します。

# tar xvfz qmail-scanner-1.10.tgz
# cd qmail-scanner-1.10/

 Qmail-Scannerは、1.03以降から日本語などの各ロケールにも対応し、ウイルス検出時のメッセージなどを日本語化できるようになっています。日本語を組み込むには、インストール時に環境変数LANGに「ja_JP.EUC」を設定します。最近のLinuxディストリビューションでは、一般ユーザーのLANGはすでに設定されていることがほとんどですが、rootでは「C」になっていることが多いため、手動で設定します。

# echo $LANG
ja_JP.EUC

となっていない場合は、

# export LANG=ja_JP.EUC
csh系は「setenv LANG ja_JP.EUC」

を行います。「ja_JP.ujis」が設定されている場合も、あらためて「ja_JP.EUC」を設定してください。

 環境変数が正しく設定できたら、インストールを続行します。

# ./configure --install

 この際、先ほどインストールしたSophos Anti-Virusのsweepコマンドがウイルススキャナとして正しく組み込まれているか確認します。

Content/Virus Scanners installed on your System

sweep=/usr/local/bin/sweep

Qmail-Scanner details.

log-details=0
fix-mime=1
debug=1
notify=sender,admin
virus-admin=検出時に送付される警告メールのあて先
local-domains='自ドメイン'
scanners="sweep_scanner"

 特にエラーもなく完了すれば終了ですが、場合によっては「stdarg.phが組み込めない」というエラーが出るかもしれません。その際は、次のようにしてstdarg.phファイルを作成します。

# cd /usr/lib/gcc-lib/i586-pc-linux/2.95.2.1/include/
# h2ph stdarg.h
stdarg.h -> stdarg.ph
stdarg.hのパス/usr/lib/gcc-lib/i586-pc-linux/2.95.2.1/include/は一例です。「gcc -v」でspecファイルが存在する場所を参考に、includeディレクトリを指定します

 インストールが完了すると、/var/spool/qmailscanディレクトリに設定ファイルやスキャン履歴ログ、/var/qmail/bin/ディレクトリにqmail-scanner-queue.plが作成されます。

ウイルススキャンの準備

 まず、qmail起動時に環境変数QMAILQUEUEに/var/qmail/bin/qmail-scanner-queue.plが設定されるように、rc起動スクリプトを変更します。

# vi /etc/rc.d/init.d/qmail
rc起動スクリプトの場所は/etc/init.dの場合もあります

#!/bin/sh
#
# qmail: /var/qmail
PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin
QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"
export QMAILQUEUE

[ -f /var/qmail/rc ] || exit 0
(以下略)

  起動スクリプトの場所は各自の環境に合わせます。また、ここでは第1回で紹介したrcスクリプトに変更を加えていますが、POP Before SMTPやvpopmailを導入したrc起動スクリプトでも、同じように環境変数QMAILQUEUEを加えるだけでメール送受信時にウイルススキャンが実施されます

 次に、検索対象を設定します。すべてのメッセージを展開してウイルススキャンを行うのは効率が悪いため、特定のファイル名や拡張子の添付ファイルを受け取らないようにできます。batやcomなどの拡張子のファイルを受け取り拒否するには、/var/spool/qmailscan/quarantine-attachments.txtに次の2行を加えます。

.bat    0   COMMAND.COM batch file
.com    0   Non relocable MSDOS executable binary
空白部分はタブ区切りにします

 編集後は、次のようにコマンドを入力し、検索用データベースを更新します。

# /var/qmail/bin/qmail-scanner-queue.pl -g

 ここで追加した以外にも、もっと多くのファイルをウイルス検知の対象にすることが望まれます。次のファイルを参考に、必要なものを追加しましょう。

http://www.y-min.or.jp/~nob/qmail/quarantine-attachments.txt

ウイルススキャンの確認

 では、テストを行います。先ほど修正したrc起動スクリプトでqmailを起動します。

# /etc/rc.d/init.d/qmail stop(念のため)
# /etc/rc.d/init.d/qmail start
rc起動スクリプトの場所は/etc/init.dの場合もあります

 次に、qmail-scannerに付属するテストコマンドを実行します。

# ./contrib/test_installation.sh -doit

 これで、管理者あてにウイルスに感染している旨のメッセージが届けば成功です。また、ログの方も確認します。

# more /var/spool/qmailscan/qmail-queue.log
(中略)
15/04/2002 12:35:03:30945: all finished. Total of 0.932565 secs

-------管理者あてに届くメッセージ--------------
Subject: Virus が送ったメッセージ中に発見されました "Qmail-Scanner viral test: checking non-p
erlscanner AV..."
Message-ID: <fileserver.mmtr.co.jp101863877040414553@fileserver.mmtr.co.jp>
X-Tnz-Problem-Type: 40
MIME-Version: 1.0
Content-type: text/plain

Attention: System Anti-Virus Administrator.


[発信者がメイリングリストまたは他の自動化メッセージなので、
このメッセージは発信者のアドレスには送られて_いません_。]


Virus が、あなたが送ったemail中に発見されました。
emailのスキャナーがそれを捕捉し、
そのメッセージ全体が宛先に配送される前に停止させました。

検出された Virus は:

EICAR-AV-Test


即刻あなたのウイルス検出ソフトを更新するか、
あなたのシステムにウイルスが感染している旨を
情報技術担当者に連絡してください。
(以下略)

まとめと次回予告

 少し前まで、サーバでのウイルス検知は管理者の越権行為であると非難されるようなこともありましたが、最近では逆にアンチウイルスソフトをインストールすることが常識になりつつあります。また、ウイルス対策が施せないメールサーバでは会社で購入稟議が通らないこともしばしばです。フリーで構築されたものではウイルスなどのセキュリティへの対策が遅れているという、お偉方の偏見もこれで解決されることでしょう。まずは皆さんの手元のサーバで、お試し版を評価してその実力を確認してみてください。

 次回はいよいよ大詰めです。実際の管理に役立つと思われるTipsをご紹介します。


前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。