ページへ戻る

− Links

 印刷 

SPAM対策とウィルスチェックで悩む のバックアップソース(No.1) :: Nest Of Hawk

xpwiki:SPAM対策とウィルスチェックで悩む のバックアップソース(No.1)

  Next »[4]
[[Gentoo Linuxな生活/サーバ設定関連]]

*SPAMとウィルスメール [#y225db96]
はっきり言って迷惑この上ないこの2つ。なんとか撃退できないものかと皆さん考えますわな。で、うちでもサーバサイドで何とかならんものかと考えておりました。んで、PostfixとCyrus-imapdの設定を調べてあれこれやっていたところ、あるじゃないですか。便利なものが。

*ウィルスチェックソフト [#n089bf9c]
ウィルスチェックも結構個人利用に関しては便利なものがあります。

-[[H+BEDV:http://www.hbedv.com/download/download.htm]]
-[[Clam AntiVirus:http://sourceforge.net/projects/clamav/]]

ほかにもあるのですが、一応この2つに着目してみました。H+BEDVは、有償ソフトなのですが、個人利用に限り無料。1年間有効なキーが送られて参りまして、1年更新で使用できます。~
Clam AntiVirusはGPLライセンスなフリーのウィルススキャンソフト。で、実はどっちも試してみたのですが、私はH+BEDVをチョイスしてみました。なぜならば、一応有償なので、ウィルスパターンファイルの更新頻度が高いだろうということです。ウィルスチェックソフトのインストールに関しては、[[ココ:http://www.fkimura.com/AMaViS3.html]]が非常に参考になります。~
Clam AntiVirについては気が向いたら加筆するかな~

*SPAM対策 [#j0481b5a]
SPAM対策については、spamassassinという便利なツールがありました。これの便利なところは、
-SPAMパターンの登録ができること
-サーバに問い合わせ最新SPAMパターンと比較できること
-ベイズフィルタという学習フィルタを持っていて、後でSPAMとそうでないメールを比較させて賢くしていけること

いや、至れりつくせりですね。あとはメールで利用できるようにすればオッケ♪

*postfixとの連動 [#w117632b]
Postfixは、いろいろと便利な機能を持っており、content_filterという外部フィルターを通してメールを配送する機能を持っております。これを利用します。そこで、このcontent_filterを使って以下のような方法があります。
-ウィルス対策
--content_filterに直接AntiVirusソフトを導入してやる。
--AMaViSというフロントエンドを導入してやる。
-SPAM対策
--Procmail+spamassassin
--Postfixと直接spamassasin

チョイスポイントが何かが重要です。
-ウィルス対策にAMaViSをフロントエンドで導入してあげると、ウィルスチェックソフトにPostfixが依存しなくなる事がいい点です。
-SPAM対策では、Procmail&spamassassinだと、各ユーザサイドにてSPAM選択ルールが作れます。Postfixに直接spamassassinだと、メール配信時にSPAMチェックが出来るので、ユーザ設定の手間がない。その代わりユーザによって、柔軟なカスタマイズが難しくなる。

といえます。
#ref(mail.JPG,right,around);
で、私は何を選んだか。AMaViSフロントエンド導入&Postfixと直接spamassassinです。だって、ユーザってみんながみんな賢いわけではないから、使いこなせなさそうだし、管理者がしっかりやれば、結構賢くチューニングできるはずですからね。図に示すとこんな感じ
#img(,clear);

*AMaViS導入 [#g7ee622b]
AMaViSとは、ちょっと触れましたが、ウィルススキャンソフトとのフロントエンドをつかさどってくれるインタフェースです。Postfixなんかと結構相性がよいので、Postfixとウィルススキャンソフトの間にかませるととっても良いと言うことです。で、このAMaViSも種類がありまして、
:AMaViS-perl|perlフロントエンド。コマンドライン実行される
:AMaViS-new|perlフロントエンドだが、Daemon実行される。AntiVirusとspamassassinの双方のフロントエンドになれる
:AMaViS-ng|AMaViS-perlの機能拡張版。

なんでこう亜流がいっぱいあるかなぁ。調べた情報がいい加減でかなり悩みました。で、私はAMaViS-newを選びました。それは、
-Portageにあった
-上に書いた運用方針に一致した

というわけで。
**AMaViS-newインストール [#m39a0a9d]
 emerge -b amavis-new

一発。便利なことに、これをやるとspamassassinもインストールされますので、このままでよしにしました。
**AMaViS-newの設定 [#sd1380dd]
/etc/amavisd.confを開きます。で、コメントを参考にせこせことやっていきます。が、ほとんどデフォルトで問題なし。変えたところだけピックアップすると
 $mydomain = 'example.jp';      ←自分のドメインに変更
 #検知されたメールの最終行き先
 #     D_DISCARD:メールは送信されず、送信者に通知もしない
 #     D_REJECT:メールは送信されず、送信者に送り返される
 #     D_BOUNCE;メールは送信されず、送信者に通知を入れる
 #     D_PASS:メールを通常に送信する
 $final_virus_destiny      = D_DISCARD;
 $final_banned_destiny     = D_DISCARD;
 $final_spam_destiny       = D_PASS;
 $final_bad_header_destiny = D_PASS;
 #ウィルススキャナーの設定。いろいろ書いてあるので、使うAntiVirに該当するものを
 #コメントアウトすればいい
 @av_scanners = (
  ### http://www.hbedv.com/ or http://www.centralcommand.com/
  ['H+BEDV AntiVir or CentralCommand Vexira Antivirus',
    ['antivir','vexira'],
    '--allfiles -noboot -nombr -rs -s -z {}', [0], qr/ALERT:|VIRUS:/,
    qr/(?x)^\s* (?: ALERT: \s* (?: \[ | [^']* ' ) |
         (?i) VIRUS:\ .*?\ virus\ '?) ( [^\]\s']+ )/ ],
    # NOTE: if you only have a demo version, remove -z and add 214, as in:
    #  '--allfiles -noboot -nombr -rs -s {}', [0,214], qr/ALERT:|VIRUS:/,

と、こんなもん。で、AMaViSdとspamdを起動します。
 /etc/init.d/amavisd start
 /etc/init.d/spamd start

**Postfixとの連動設定 [#m8e0ebca]
次はPostfixとの連動です。まず、main.cfに以下の行を追加。
 # Setting for Virus filter
 content_filter = smtp-amavis:[127.0.0.1]:10024

さらにmaster.cfに以下の行を追加
 smtp-amavis unix -      -       n       -       2       smtp
    -o smtp_data_done_timeout=1200
    -o disable_dns_lookups=yes
 127.0.0.1:10025 inet    n       -       n       -       -  smtpd
    -o content_filter=
    -o local_recipient_maps=
    -o relay_recipient_maps=
    -o smtpd_restriction_classes=
    -o smtpd_client_restrictions=
    -o smtpd_helo_restrictions=
    -o smtpd_sender_restrictions=
    -o smtpd_recipient_restrictions=permit_mynetworks,reject
    -o mynetworks=127.0.0.0/8
    -o strict_rfc821_envelopes=yes
    -o smtpd_error_sleep_time=0
    -o smtpd_soft_error_limit=1001
    -o smtpd_hard_error_limit=1000

で、Postfixを再起動します。
 /etc/init.d/postfix reload

*では、実験! [#e8fbff92]
まず、テストSPAMメールを食わせてみます。送られてきたSPAMをサーバのメールに流し込んでみますと
 Return-Path: <norply@hotmail.com>
                        .
                        .
                        .
 X-Spam-Status: Yes, hits=15.6 tagged_above=3.0 required=6.3
    tests=ACT_NOW_CAPS, DOMAIN_4U2, EARNINGS, FORGED_HOTMAIL_RCVD2,
     FORGED_MUA_OUTLOOK, FORGED_OUTLOOK_TAGS, HTML_70_80, HTML_FONTCOLOR_BLUE,
     HTML_FONTCOLOR_GREEN, HTML_FONTCOLOR_RED, HTML_FONTCOLOR_UNKNOWN,
     HTML_FONTCOLOR_UNSAFE, HTML_FONT_BIG, HTML_FONT_INVISIBLE, HTML_MESSAGE,
     HTML_MIME_NO_HTML_TAG, HTML_TAG_BALANCE_BODY, HTML_TAG_EXISTS_TBODY,
     MIME_HTML_ONLY, THIS_AINT_SPAM, X_MSMAIL_PRIORITY_HIGH, X_PRIORITY_HIGH
 X-Spam-Level: ***************
 X-Spam-Flag: YES

と、ヘッダにSpamチェックが入ります。これを振り分けルールに入れてやれば、SPAMが隔離できるという寸法です。いや便利。~
次にウィルスメールを食わせて見ます。

 A virus (Eicar-Test-Signatur) was found.

 Scanner detecting a virus: H+BEDV AntiVir or CentralCommand Vexira Antivirus

 The mail originated from: <mabuchi@hh.iij4u.or.jp>

 According to the 'Received:' trace, the message originated at:
   送ってきた人

 The message WAS NOT delivered to:
 <送信先>:
   250 2.7.1 Ok, discarded, id=04101-06 - VIRUS: Eicar-Test-Signatur

 Virus scanner output:
   AntiVir / Linux Version 2.1.0-22
   Copyright (c) 1994-2004 by H+BEDV Datentechnik GmbH.
   All rights reserved.

   Loading /usr/lib/AntiVir/antivir.vdf ...

   VDF version: 6.25.0.46 created 03 May 2004

   For private, non-commercial use only.
   AntiVir license: 1001068963 for Mutsumi Mabuchi, Yokohama

   checking drive/path (list): /var/run/amavis/amavis-20040505T143847-04101/parts
   ALERT: [Eicar-Test-Signatur virus] /var/run/amavis/amavis-20040505T143847-04101/parts/part-00001
          <<< Contains code of the Eicar-Test-Signatur virus


   ----- scan results -----
    directories:        1
          files:        1
         alerts:        1
       repaired:        0
        deleted:        0
        renamed:        0
      scan time: 00:00:01
   ------------------------
   Thank you for using AntiVir.

The message has been quarantined as:
   /var/virusmails/virus-20040505-171002-04101-06

------------------------- BEGIN HEADERS -----------------------------
      ウィルスメールのヘッダ
-------------------------- END HEADERS ------------------------------

すばらすぃ~。メールは送られず、隔離エリアに葬られました。えらいえらい。ちなみに、デフォルトのままだと、/var/virusmailsに隔離されてます。

*SpamAssassinのベイズフィルタ学習 [#c7e7143e]
先ほど、SpamAssassinには自動学習機能があるといいました。ですので、収集されたメールから、Spam学習ルールを作る自動化シェルスクリプトを作りました。

まずはSpamassassinの設定。/etc/spamassassin/local.cfをいじります。
 bayes_auto_learn_threshold_nonspam      0.1
 bayes_auto_learn_threshold_spam         6.0
 bayes_auto_learn        1
 use_bayes               1
 bayes_path              /var/amavis/.spamassassin/bayes

これで受信時の自動学習及びベイズフィルタの使用を定義。ア~ンドamavisが溜め込むベイズフィルタをデフォルトルールとする事にしたです。そりで、
 HOME=/var/amavis
 find /var/spool/imap -type d -name SPAM -exec /usr/bin/sa-learn --spam {} \;

というわけで、imapフォルダ下にあるSPAMって名前のフォルダ下にあるSPAMメールを毎日自動学習するようにCRONシェルを設定して、おしまいでっす。

  Next »[4]