ページへ戻る

− Links

 印刷 

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

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

« Prev[4]  Next »[5]
[[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ライセンスなフリーのウィルススキャンソフト。で、実はどっちも試してみたのですが、私はClam AvtiVirusを選択いたしました。というのも、H+BEDVがいつの間にか自由に更新ができづらくなってしまいましてね…

**インストール [#gd4dafca]
 # emerge clamav
**設定 [#h8b26d83]
 # rc-update add clamd default
意外に簡単でした♪


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

いや、至れりつくせりですね。

また、最近は他の手段もあり、
:greylisting|whitlist(信頼できるホストの一覧)、blacklist(信頼できないホストの一覧)というSPAMホストのリストの他に、greylistという、中間を用意する。具体的には、初めてメール転送を依頼してきたホストは、greylistに登録し、一定時間接続をRejectする。真に自分にメールを送ってくるホストは、リトライしてくるはず。SPAMなどツールで送信するホストは、一旦はじかれるとリトライしてこないので、SPAM対策になる
:SPF(Sender Policy Framework)|DNSのTXTフィールドに、ある送信ドメインを信頼してもらう場合、どのDNSレコードを信頼してもらうかを記載しておく。メールを受信したMTAは、そのDNSフィールドを参照し、信頼できるホストからのメールかどうかを判定する

いろいろと対抗策が増えているんですね~。ちょっと設定に凝ってみようと思いまする。

*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,left,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.clamav.net/
 ['ClamAV-clamd',
   \&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd.sock"],
   qr/\bOK$/, qr/\bFOUND$/,
   qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],


と、こんなもん。で、AMaViSdを起動します。
 /etc/init.d/amavisd 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が隔離できるという寸法です。いや便利。~


*SpamAssassinの設定 [#c7e7143e]
**ベイズフィルタの学習 [#q052a4f1]
先ほど、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シェルを設定して、おしまいでっす。

**sa-updateの設定 [#d2bc7662]
**SPFの設定 [#ve425015]
* Postfix側の設定[#p8bce71c]
**Postgrey [#vba5c072]
**バックアップサーバ側の設定 [#ra8dcbd0]
*結果 [#kfe32905]

« Prev[4]  Next »[5]