Linux Server

メールサーバー でウィルス対策

  

ご注意下さい

この記事は3年以上前に書かれた記事ですので、内容が古い可能性があります。

0
(0)

注意ポイント

  • 当記事は相当古い内容になってしまいました。
  • 以下の記事にPostfix+ClamAV+SpamAssassinでの記事をご紹介していますのでそちらをご参照ください。

 

Postfix + SSL + IPv6 + ClamAV + SpamAssassin + SPF + DKIM + DMARCの構築方法
CentOS8 + Postfix + Dovecotでセキュリティも確保した構築方法を詳しく、全設定ファイルとともに解説します。IPv6にも対応し …

続きを見る

毎日毎日Spamメールとウィルスメールの数がすごい。なんとかならないものか。
と考えた結果がこれ。

qmail + F-Prot + Spam Assassin + Qmail-Scanner

つまり、qmailで処理中のキューをqmail scannerで

・Linux用のFreeウィルスチェックソフトでチェック
・SpamAssasignにてSPAMメールの処理

を行う。

今までの構成
今までの構成

新構成(メール受信)
新構成(メール受信の場合)

新構成(メール送信)
新構成(メール送信の場合)

その為に1台メールサーバを構築した。といってもVMwareを使用しているので、他のサーバをコピってきて起動するだけ。楽チン。

アンチウィルスメールGWサーバを作る手順の概要は以下の通り。

①F-Protを導入
②SpamAssasinを導入
③qmail-scannerを導入
④qmailの設定変更
⑤チェック

①F-Protを導入
F-ProtのPRMファイルダウンロードサイトよりRPMファイルのダウンロードしてくる。(ホームユーザ版はフリー)

そしてインストール

# rpm -ivh fp-linux-ws.rpm
Preparing... ########################################### [100%]
1:fp-linux-ws ########################################### [100%]
# rpm -qa | grep fp
fp-linux-ws-4.4.6-1
ttfprint-0.9-8
#
# cd /usr/local/f-prot/
# ./f-prot -verno
F-PROT ANTIVIRUS
Program version: 4.4.6
Engine version: 3.14.13

 

VIRUS SIGNATURE FILES
SIGN.DEF created 23 September 2004
SIGN2.DEF created 23 September 2004
MACRO.DEF created 20 September 2004
#

 

まずはテストをしてみる。
virustestディレクトリを作成して、そこにテストウィルスを格納。
テストウィルスは以下からダウンロードする。

http://www.eicar.org/download/eicar.com
http://www.eicar.org/download/eicar.com.txt
http://www.eicar.org/download/eicar_com.zip
http://www.eicar.org/download/eicarcom2.zip

# ./f-prot virustest/
Virus scanning report - 26 September 2004 @ 21:40

F-PROT ANTIVIRUS
Program version: 4.4.6
Engine version: 3.14.13

VIRUS SIGNATURE FILES
SIGN.DEF created 23 September 2004
SIGN2.DEF created 23 September 2004
MACRO.DEF created 20 September 2004

Search: virustest/
Action: Report only
Files: "Dumb" scan of all files
Switches: -ARCHIVE -PACKED -SERVER

/usr/local/f-prot/virustest/eicar.com Infection: EICAR_Test_File
/usr/local/f-prot/virustest/eicar.com.txt Infection: EICAR_Test_File
/usr/local/f-prot/virustest/eicar_com.zip->eicar.com Infection: EICAR_Test_File
/usr/local/f-prot/virustest/eicarcom2.zip->eicar_com.zip->eicar.com Infection: EICAR_Test_File

Results of virus scanning:

Files: 4
MBRs: 0
Boot sectors: 0
Objects scanned: 7
Infected: 4
Suspicious: 0
Disinfected: 0
Deleted: 0
Renamed: 0

Time: 0:00
#

 

ちゃんと検知できたようだ。

定期的にパターンファイルをダウンロードするようにcronに登録する。

30 0 * * * /usr/local/f-prot/check-updates.sh

②SpamAssasinを導入
必要なもの
① (Perl)Net::DNS
② (Perl)Time::HiRes
③ razor-agents
④ (Perl)Mail::SpamAssassin

①②④ともにCPANにあるので、以下にてインストール。

# perl -MCPAN -e shell
cpan> o conf prerequisites_policy ask
cpan> install Mail::SpamAssassin
cpan> quit

ただし、Mail::SpamAssassinインストール前に③razor-agentsを導入しておく。
razor-agetnsはhttp://razor.sourceforge.netより入手可能。(razor-agents-2.61.tar.gzをダウンロード)

# perl Makefile.PL
# make
# make test
# make install

でインストールし、その後セットアップを行う。

# which razor-client
/usr/bin/razor-client
# razor-client
Creating symlink razor-client <== /usr/bin/razor-check
Creating symlink razor-client <== /usr/bin/razor-report
Creating symlink razor-client <== /usr/bin/razor-revoke
Creating symlink razor-client <== /usr/bin/razor-admin
#
# razor-admin -d -create -home=/etc/razor

# touch /etc/razor/razor-agent.log
# chmod 666 /etc/razor/razor-agent.log (本当は666はよろしくない…)

 

次にspamd(SpamAssassinデーモン)用ユーザ/グループの登録

# groupadd spamd
# useradd -g spamd -c "Spam-Assassin Account" -s /bin/false spamd

 

spamdをスタートアップに登録

# cd /root/.cpan/build/Mail-SpamAssassin-3.0.0/spamd
# cp cp spamd/redhat-rc-script.sh /etc/rc.d/init.d/spamd
# chmod 755 /etc/rc.d/init.d/spamd
# chkconfig --add spamd
# netsysv (にて自動起動するように変更)

 

/etc/sysconfig/spamassassinを作成

SPAMDOPTIONS="-x -u spamd -H /home/spamd -d"

 

/etc/mail/spamassasin/local.cfを編集しルールを設定
(参考にさせてもらったサイト)
SecureMail - pukiwiki自宅サーバー構築メモ
SpamAssassin Milterの導入 [FreeBSD](fkimura.com)

# This is the right place to customize your installation of SpamAssassin.
#
# See 'perldoc Mail::SpamAssassin::Conf' for details of what can be
# tweaked.
#
###########################################################################
#
lock_method flock

 

# 2バイトコードの判定をゆるやかにするために ポイントを0に変更
score HEADER_8BITS 0
score HTML_COMMENT_8BITS 0
score SUBJ_FULL_OF_8BITS 0
score UPPERCASE_25_50 0
score UPPERCASE_50_75 0
score UPPERCASE_75_100 0

# 感度の設定。標準は5。
# テストを重ねた結果9がベストだと思う。
required_hits 9

# SpamAssassinがspamメールのタイトルを書き換えられるように
# ただしreport_safe が0の場合にのみ有効
rewrite_subject 1
#rewrite_header Subject *****SPAM*****

# spamと判定された時タイトルに付けられるタグの定義
subject_tag [SPAM]

# spam分析結果をメール本文でなくヘッダに付ける
report_safe 1

# SPAMの時だけヘッダーを出すようにするには 0。常に出すなら 1。
always_add_headers 0

# SPAM判定された場合にその判定理由を出す場合には 0。(デフォルト)
# 出したくない場合には 1にしておく。
always_add_report 0

# Spamassassinは全てのメールを対象に次のようなユーティリティを使うのがデフォルトになってるが、
# (詳しくは http://www.spamassassin.org/dist/INSTALL で)
# CPU負荷になるものを避けるために当分インストールせずに使用不可にしておく。
use_dcc 0
use_pyzor 0

# razor2チェックを使用
use_razor2 1
loadplugin Mail::SpamAssassin::Plugin::SPF
loadplugin Mail::SpamAssassin::Plugin::Razor2
razor_config /etc/razor/razor-agent.conf

# SpamAssassinのRBLチェック :
# 既にqmailのrblsmpdでRBLフィルタを用いたが、SpamAssassinのRBLチェックで別のRBL情報の使用を薦める。
# もっと正確にSPAMタグを添付するためだ。
skip_rbl_checks 0

# 3秒以内にレスポンスがない場合はチェックをスキップする。
rbl_timeout 3

# ここで、いくつかデフォルトの点数を変更しておこう。
#
# デフォルトで使用不可になってるbl.spamcop.netのRBLを用いてヒットすれば3点つけることにする。
# 詳しい情報は http://spamcop.net/fom-serve/cache/290.html で。
score RCVD_IN_BL_SPAMCOP_NET 3

# 特定のネットワークアドレスやメールサーバーのあるネットワークを制御できる。
# つまり、信頼できるネットのメールサーバーにRBLチェックをかける必要はないからだ。
# 下の例はcクラスの123.123.123.0/24をSpamassassinのRBLチェックから除外している。
trusted_networks 192.168.30. 192.168.10. 127.

use_bayes 1
bayes_auto_learn 1
bayes_path /home/spamd/.spamassassin/bayes

 

また、spamdを起動し、学習を行う。
(参考にさせてもらったサイト)
Easy setup & configuration of SpamAssassin with fetchmail -Tokyo Linux Entertainment Community-

# service spamd start
# cd /home/spamd
# mkdir spam
# cd spam
# wget http://www.flcl.org/~yoh/spam9xxxx.tar.gz
# tar zxf spam9xxxx.tar.gz
# sa-learn --spam *

③qmail-scannerを導入
qmail-queueを実行する前に他のプログラムに渡すパッチを以下からダウンロードしてパッチを適用する。

http://www.qmail.org/qmailqueue-patch

# patch < ../qmailqueue-patch patching file Makefile patching file qmail.c # make setup check

qmailの構築の仕方はこちら

http://prdownloads.sourceforge.net/qmail-scanner/よりqmail-scanner-1.23.gzをダウンロードし、インストールする。

まずは専用のアカウントを準備する。

# groupadd qscand
# useradd -c "Qmail-Scanner Account" -g qscand -s /bin/false qscand
#

 

maildropをダウンロードしインストール

http://www.flounder.net/~mrsam/maildrop/
その後configureをかけてインストール。ちなみにmaildropはbzipという形式で圧縮されているため、以下のようにして解凍する。

# bzip2 -d maildrop-1.7.0.20040907.tar.bz2

その後qmail-scannerのconfigureをかけてインストール

# LANG=ja_JP.EUC (日本語対応するため)
# export LANG
# ./configure --install

このままではまだ動かない。(少なくともRH9では)
perl-suidperlをインストールする。sビットがたっているperlモジュール(/var/qmail/bin/qmail-scanner-queue.pl)を実行しようとするとqmailにて、qqエラーが発生してしまうためsuidperlが必要になる。

suidperlについてはRHからダウンロードできる。

# apt-get install perl-suidperl

 

次に/var/qmail/bin/qmail-scanner-queue.plを編集

#!/usr/bin/suidperl ← /usr/bin/perl -Tから変更

#From: line information used when making reports
my $V_FROM='root@hne.jp'; ←警告メールの差出人
my $V_FROMNAME='System Anti-Virus Administrator'; ←警告メールタイトル

 

# Address carbon-copied on any virus reports
my $QUARANTINE_CC='root@www.hne.jp'; ←警告メールのCC

#Array of local domains that are checked against for
#deciding whether or not to send recipient alerts to
my @local_domains_array=('kamata-net.com', , 'cannon-ball.net', 'avons.jp', 'hne.jp'); ←ウィルスチェックをするドメインを記述

 

またファイルパーミッションは以下のようになっている必要がある。

-rwsr-xr-x 1 qscand qscand 94299 9月 28 16:00 /var/qmail/bin/qmail-scanner-queue.pl

 

ウィルス検査するタイプの指定ファイル(/var/spool/qmailscan/quarantine-attachments.txt)を編集する。

(参考にさせてもらったサイト)
qmail-scanner
9.3 ウィルススキャンの設定

設定を有効にする

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

 

ウィルスは/var/spool/qmailscan/quarantine/new/配下に格納される為以下のコマンドをcronに仕込み定期的に削除しなければならない。

0 0 * * * find /var/spool/qmailscan/quarantine/new/* -mtime +30 -exec rm '{}' ;

④qmailの設定変更
tcpserverに環境変数を追加する。
smtp用tcpserver設定ファイルは以下の通り

192.168.aa.:allow,RELAYCLIENT="",RBLSMTPD="",QMAILQUEUE="/var/qmail/bin/qmail-queue"
127.0.0.1:allow,RELAYCLIENT="",RBLSMTPD="",QMAILQUEUE="/var/qmail/bin/qmail-queue"
:allow,QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"

 

ローカルネットワークとループバックアドレスからのSMTPアクセスではウィルスチェックをしないようにしている。
tcpserverのDB更新も忘れずに

# /usr/local/bin/tcprules ./tcp.smtp.cdb ./tcp.smtp.tmp < ./tcp.smtp

 

(参考にさせてもらったサイト)
Qmail-Scanner Frequently Asked Questions

また、うちの環境ではウィルスチェック後wwwサーバに転送するため、/var/qmail/alias/.qmail-defaultファイルに以下のように記述する。

| forward ${LOCAL}@www.hne.jp

また、/var/qmail/control/smtproutesファイルには受信する全てのドメインについて設定しないと、ループを起こしてしまう。(なぜ.qmail-defaultを見てwww.hne.jpに転送しないのだろう…)

hne.jp:[192.168.aa.bb]
.hne.jp:[192.168.aa.bb]
.kamata-net.com:[192.168.aa.bb]
kamata-net.com:[192.168.aa.bb]

⑤チェック
qmailとspamdの再起動を行った後、以下のコマンドにてウィルスを検知できるか確認する。

# cd /usr/local/src/qmail-scanner-1.23/contrib(ソースファイル置き場)
# ./test_installation.sh -doit

また、SPAMメールには以下のヘッダがついていることを確認

Received: from 61.159.253.113
by mail (envelope-from <bbgiyypwbhcxy@passagen.se>, uid 502)
with qmail-scanner-1.23 (f-prot: 4.4.6/3.14.13. spamassassin: 3.0.0. Clear:RC:0(61.159.253.113):SA:1(19.4/9.0):. Processed in 2.305798 secs);
28 Sep 2004 16:22:09 -0000
X-Spam-Status: Yes, hits=19.4 required=9.0
X-Spam-Level: +++++++++++++++++++</bbgiyypwbhcxy@passagen.se>

これによりBecky!ではX-Spam-Status: Yesをゴミ箱にフィルタすることが容易になる。

この記事は役に立ちましたか? | Is this article useful for you?

評価をお願いします | Please leave your rating.

平均 | Av.: 0 / 5. 投票数 | Votes: 0

最初の評価を下さい | Please vote for the first rating.

-Linux Server
-,

© 1999 - 2021 蒲田ネット