ここでは実績やおのおのの相性から、アンチウイルスソフトとして「Sophos Anti-Virus」、qmailに仕掛けるトリガソフトに「Qmail-Scanner」を利用します。
最近ではWindowsプラットフォームで名をはせたメーカーもLinux対応製品をリリースしていますが、Sophosは比較的古くからLinuxへの関心が高く、また日本語サイト(http://www.sophos.co.jp/)も充実しています。Qmail-Scannerはqmailにパッチを当てる必要があるものの、インストール自体は比較的容易で、既存システムへの組み込みも最小限の手間で行えます(注)。前回までで紹介したPOP Before SMTPやvpopmailなどが導入されている場合でも、特に大きな変更を行う必要はありません。
まずは、アンチウイルスソフトである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対応版をダウンロードします(編注)。
ここではlibc6対応版を例に作業を進めますが、libc5対応版を利用される場合は、ファイル名を置き換えるだけで同じように作業できます。
まず、適当な作業ディレクトリにファイルをダウンロードして展開します。
$ tar xvfz linux.intel.libc6.tar.Z |
次に、スーパーユーザーでユーザー「sweep」を新規に作成し、インストール用スクリプトを実行します。
$ su |
これで、/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 |
これで、最新の定義ファイルを利用することができます。
ウイルススキャンコマンドであるsweepを呼び出すためのトリガ「Qmail-Scanner」をqmailに組み込みます。インストールには次のものが必要です。
では、順番に見ていきましょう。
●reformime
http://download.sourceforge.net/courier/から、maildrop-1.3.8.tar.gzをダウンロードして展開・インストールします。
# tar xvfz maildrop-1.3.8.tar.gz |
●Time::HiResモジュール
次に、Perlにモジュールを追加します。/usr/bin/suidperlのオーナーとパーミッションを確認して、次のようになっていることを確認します(日付やファイルサイズは一例です)。
# ls -l /usr/bin/suidperl |
もし上記のようになっていない場合は修正しておきます。
# chown root /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 |
インストールを続けます。
# perl Makefile.PL |
●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 |
ここで、動作中のqmailを停止させる必要があります。rcスクリプトを使って停止させた後、インストール作業を続けます。
# /etc/rc.d/init.d/qmail stop |
●Qmail-Scanner
準備が整ったところで、Qmail-Scanner本体のインストールを行います。http://prdownloads.sourceforge.net/qmail-scanner/から最新版であるqmail-scanner-1.10.tgz(2002年4月現在)を作業ディレクトリにダウンロードして展開します。
# tar xvfz qmail-scanner-1.10.tgz |
Qmail-Scannerは、1.03以降から日本語などの各ロケールにも対応し、ウイルス検出時のメッセージなどを日本語化できるようになっています。日本語を組み込むには、インストール時に環境変数LANGに「ja_JP.EUC」を設定します。最近のLinuxディストリビューションでは、一般ユーザーのLANGはすでに設定されていることがほとんどですが、rootでは「C」になっていることが多いため、手動で設定します。
# echo $LANG |
となっていない場合は、
# 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 |
特にエラーもなく完了すれば終了ですが、場合によっては「stdarg.phが組み込めない」というエラーが出るかもしれません。その際は、次のようにしてstdarg.phファイルを作成します。
# cd /usr/lib/gcc-lib/i586-pc-linux/2.95.2.1/include/ |
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 |
起動スクリプトの場所は各自の環境に合わせます。また、ここでは第1回で紹介したrcスクリプトに変更を加えていますが、POP Before SMTPやvpopmailを導入したrc起動スクリプトでも、同じように環境変数QMAILQUEUEを加えるだけでメール送受信時にウイルススキャンが実施されます
次に、検索対象を設定します。すべてのメッセージを展開してウイルススキャンを行うのは効率が悪いため、特定のファイル名や拡張子の添付ファイルを受け取らないようにできます。batやcomなどの拡張子のファイルを受け取り拒否するには、/var/spool/qmailscan/quarantine-attachments.txtに次の2行を加えます。
.bat 0 COMMAND.COM batch file |
空白部分はタブ区切りにします |
編集後は、次のようにコマンドを入力し、検索用データベースを更新します。
# /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(念のため) |
rc起動スクリプトの場所は/etc/init.dの場合もあります |
次に、qmail-scannerに付属するテストコマンドを実行します。
# ./contrib/test_installation.sh -doit |
これで、管理者あてにウイルスに感染している旨のメッセージが届けば成功です。また、ログの方も確認します。
# more /var/spool/qmailscan/qmail-queue.log |
少し前まで、サーバでのウイルス検知は管理者の越権行為であると非難されるようなこともありましたが、最近では逆にアンチウイルスソフトをインストールすることが常識になりつつあります。また、ウイルス対策が施せないメールサーバでは会社で購入稟議が通らないこともしばしばです。フリーで構築されたものではウイルスなどのセキュリティへの対策が遅れているという、お偉方の偏見もこれで解決されることでしょう。まずは皆さんの手元のサーバで、お試し版を評価してその実力を確認してみてください。
次回はいよいよ大詰めです。実際の管理に役立つと思われるTipsをご紹介します。
Copyright © ITmedia, Inc. All Rights Reserved.