2: 2009-08-19 (水) 01:20:15 maruo |
現: 2021-07-04 (日) 17:32:23 maruo |
| | | |
| ほかにもあるのですが、一応この2つに着目してみました。H+BEDVは、有償ソフトなのですが、個人利用に限り無料。1年間有効なキーが送られて参りまして、1年更新で使用できます。~ | | ほかにもあるのですが、一応この2つに着目してみました。H+BEDVは、有償ソフトなのですが、個人利用に限り無料。1年間有効なキーが送られて参りまして、1年更新で使用できます。~ |
- | Clam AntiVirusはGPLライセンスなフリーのウィルススキャンソフト。で、実はどっちも試してみたのですが、私はH+BEDVをチョイスしてみました。なぜならば、一応有償なので、ウィルスパターンファイルの更新頻度が高いだろうということです。ウィルスチェックソフトのインストールに関しては、[[ココ:http://www.fkimura.com/AMaViS3.html]]が非常に参考になります。~ | + | Clam AntiVirusはGPLライセンスなフリーのウィルススキャンソフト。で、実はどっちも試してみたのですが、私はClam AvtiVirusを選択いたしました。というのも、H+BEDVがいつの間にか自由に更新ができづらくなってしまいましてね… |
- | Clam AntiVirについては気が向いたら加筆するかな~ | + | |
| + | **インストール [#gd4dafca] |
| + | # emerge clamav |
| + | **設定 [#h8b26d83] |
| + | # rc-update add clamd default |
| + | 意外に簡単でした♪ |
| | | |
| *SPAM対策 [#j0481b5a] | | *SPAM対策 [#j0481b5a] |
| -サーバに問い合わせ最新SPAMパターンと比較できること | | -サーバに問い合わせ最新SPAMパターンと比較できること |
| -ベイズフィルタという学習フィルタを持っていて、後でSPAMとそうでないメールを比較させて賢くしていけること | | -ベイズフィルタという学習フィルタを持っていて、後でSPAMとそうでないメールを比較させて賢くしていけること |
| + | -様々なプラグインが用意されていること |
| + | |
| + | いや、至れりつくせりですね。 |
| + | |
| + | また、最近は他の手段もあり、 |
| + | :greylisting|whitlist(信頼できるホストの一覧)、blacklist(信頼できないホストの一覧)というSPAMホストのリストの他に、greylistという、中間を用意する。具体的には、初めてメール転送を依頼してきたホストは、greylistに登録し、一定時間接続をRejectする。真に自分にメールを送ってくるホストは、リトライしてくるはず。SPAMなどツールで送信するホストは、一旦はじかれるとリトライしてこないので、SPAM対策になる |
| + | :SPF(Sender Policy Framework)|DNSのTXTフィールドに、ある送信ドメインを信頼してもらう場合、どのDNSレコードを信頼してもらうかを記載しておく。メールを受信したMTAは、そのDNSフィールドを参照し、信頼できるホストからのメールかどうかを判定する |
| | | |
- | いや、至れりつくせりですね。あとはメールで利用できるようにすればオッケ♪ | + | いろいろと対抗策が増えているんですね~。ちょっと設定に凝ってみようと思いまする。 |
| | | |
| *postfixとの連動 [#w117632b] | | *postfixとの連動 [#w117632b] |
| #コメントアウトすればいい | | #コメントアウトすればいい |
| @av_scanners = ( | | @av_scanners = ( |
- | ### http://www.hbedv.com/ or http://www.centralcommand.com/ | + | # ### http://www.clamav.net/ |
- | ['H+BEDV AntiVir or CentralCommand Vexira Antivirus', | + | ['ClamAV-clamd', |
- | ['antivir','vexira'], | + | \&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd.sock"], |
- | '--allfiles -noboot -nombr -rs -s -z {}', [0], qr/ALERT:|VIRUS:/, | + | qr/\bOK$/, qr/\bFOUND$/, |
- | qr/(?x)^\s* (?: ALERT: \s* (?: \[ | [^']* ' ) | | + | qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ], |
- | (?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を起動します。 | + | |
| + | と、こんなもん。で、AMaViSdを起動します。 |
| /etc/init.d/amavisd start | | /etc/init.d/amavisd start |
- | /etc/init.d/spamd start | |
| | | |
| **Postfixとの連動設定 [#m8e0ebca] | | **Postfixとの連動設定 [#m8e0ebca] |
| | | |
| と、ヘッダにSpamチェックが入ります。これを振り分けルールに入れてやれば、SPAMが隔離できるという寸法です。いや便利。~ | | と、ヘッダにSpamチェックが入ります。これを振り分けルールに入れてやれば、SPAMが隔離できるという寸法です。いや便利。~ |
- | 次にウィルスメールを食わせて見ます。 | |
| | | |
- | A virus (Eicar-Test-Signatur) was found. | |
| | | |
- | Scanner detecting a virus: H+BEDV AntiVir or CentralCommand Vexira Antivirus | + | *SpamAssassinの設定 [#c7e7143e] |
| + | 以下は、設定変更行ったら、amavisd_newを再起動するのを忘れないでね! |
| | | |
- | The mail originated from: <mabuchi@hh.iij4u.or.jp> | + | **ベイズフィルタの学習 [#q052a4f1] |
| + | 先ほど、SpamAssassinには自動学習機能があるといいました。ですので、収集されたメールから、Spam学習ルールを作る自動化シェルスクリプトを作りました。 |
| | | |
- | According to the 'Received:' trace, the message originated at: | + | さて、2021年に、ベイズフィルタのオプションに、berkdbが使用できなくなりました…ベイズ学習データを保存するための手段DBIも、GentooのメインストリームでMaskedになっちまいました。 |
- | 送ってきた人 | + | なので、MySQL(MariaDB)に学習データを保存するように設定してみます。 |
| | | |
- | The message WAS NOT delivered to: | + | ***DBを作る [#o7ae4091] |
- | <送信先>: | + | MariaDBが起動していると仮定して、以下を設定します。 |
- | 250 2.7.1 Ok, discarded, id=04101-06 - VIRUS: Eicar-Test-Signatur | + | |
| | | |
- | Virus scanner output: | + | # cp /usr/share/doc/spamassassin-3.4.5/bayes_mysql.sql.bz2 ~ |
- | AntiVir / Linux Version 2.1.0-22 | + | # cd ~ |
- | Copyright (c) 1994-2004 by H+BEDV Datentechnik GmbH. | + | # bunzip2 bayes_mysql.sql.bz2 |
- | All rights reserved. | + | # mysql -u root -p |
| + | mysql> CREATE DATABASE sa_bayes; |
| + | mysql> USE sa_bayes; |
| + | mysql> SOURCE bayes_mysql.sql; |
| + | mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON sa_bayes.* TO 'DBアクセスユーザー名' IDENTIFIED BY 'DBアクセスパスワード'; |
| + | mysql> FLUSH PRIVILEGES; |
| | | |
- | Loading /usr/lib/AntiVir/antivir.vdf ... | + | ***SpamAssassin側の設定 [#q643cce5] |
| | | |
- | VDF version: 6.25.0.46 created 03 May 2004 | + | /etc/mail/spamassassin/local.cfを、以下の設定を変更(または追加)します |
| + | use_bayes 1 |
| + | bayes_auto_learn 1 |
| + | bayes_auto_expire 1 |
| + | |
| + | bayes_store_module Mail::SpamAssassin::BayesStore::MySQL |
| + | bayes_sql_dsn DBI:mysql:sa_bayes:127.0.0.1:3306 |
| + | bayes_sql_username 'DBアクセスユーザー名' |
| + | bayes_sql_password 'DBアクセスパスワード' |
| | | |
- | For private, non-commercial use only. | + | これで受信時の自動学習及びベイズフィルタの使用を定義。ア~ンドamavisが溜め込むベイズフィルタをデフォルトルールとする事にしたです。そりで、 |
- | AntiVir license: 1001068963 for Mutsumi Mabuchi, Yokohama | + | HOME=/var/amavis |
| + | find /var/spool/imap -type d -name SPAM -exec /usr/bin/sa-learn -- username=amavis --spam {} \; |
| | | |
- | checking drive/path (list): /var/run/amavis/amavis-20040505T143847-04101/parts | + | というわけで、imapフォルダ下にあるSPAMって名前のフォルダ下にあるSPAMメールを毎日自動学習するようにCRONシェルを設定して、おしまいでっす。 |
- | ALERT: [Eicar-Test-Signatur virus] /var/run/amavis/amavis-20040505T143847-04101/parts/part-00001 | + | |
- | <<< Contains code of the Eicar-Test-Signatur virus | + | |
| | | |
| + | さらに、 |
| + | sa-learn - username=amavis --ham <SPAMでないメールがあるディレクトリ> |
| + | と指定すると、SPAMでないメールも学習してくださいます。 |
| | | |
- | ----- scan results ----- | + | **sa-updateの設定 [#d2bc7662] |
- | directories: 1 | + | もともとspamassassinは、バージョンアップ毎に更新したルールをパッケージに付与していまいたが、これだとイタチごっこに対する対応が遅い、ということで、spamassassin 3以上になると、NWから定期的に更新したルールを取ってこれるようになりました。これにはsa-updateというツールを使用します。 |
- | files: 1 | + | まず、sa-updateを使用するのに、GPGのキーファイルを作成してやります。例えば/foo/var.keysという名前で、 |
- | alerts: 1 | + | 26C900A46DD40CD5AD24F6D7DEE01987265FA05B |
- | repaired: 0 | + | 5244EC45 |
- | deleted: 0 | + | こんな中身のファイルを作ってやります。テキストでそのまんまね。で、以下のコマンドをcronなどで定期的に実行してやって。 |
- | renamed: 0 | + | /usr/bin/sa-update --gpgkeyfile /foo/var.keys |
- | scan time: 00:00:01 | + | これで、/var/lib/spamassassin配下に、定期的にアップデートファイルが作られますのねで。 |
- | ------------------------ | + | |
- | Thank you for using AntiVir. | + | |
| | | |
- | The message has been quarantined as: | + | **DCCの設定 [#bb0aedb2] |
- | /var/virusmails/virus-20040505-171002-04101-06 | + | 手元にあるSPAMだけだと、パターン数が少なすぎて、すべてをマッチさせるのは難しいもの。このために、NWのサーバに貯められているSPAMパターンと照合するという手があります。そのいくつかに、DCC,Pyzor,Razor等があります。今回私はDCCを選択いたしました。どうもDCCが一番精度がいいらしい?という評判だったので。で、DCCを導入いたします。 |
| + | ***DCCDのインストール [#p25ea2b2] |
| + | まず/etc/portage/package.keywordsに mail-filter/dcc を追加いたします。んで |
| + | # emerge dcc |
| + | /etc/dcc/dcc_confを編集いたします。以下に特に注意して。 |
| + | DCCD_ENABLE=off |
| + | DCCIFD_ENABLE=on |
| + | さらに、/etc/init.d/dccにバグがあるので、以下を編集してやります。 |
| + | if [[ "${DCCIFD}" != "on" ]] |
| + | ↓ |
| + | if [[ "${DCCIFD_ENABLE}" != "on" ]] |
| + | で、DCCを起動してやってください。 |
| + | # rc-update add dcc default |
| + | # /etc/init.d/dcc start |
| + | 次に、/etc/spamassassin/v310.preを編集します。 |
| + | # loadplugin Mail::SpamAssassin::Plugin::DCC |
| + | ↓ |
| + | loadplugin Mail::SpamAssassin::Plugin::DCC |
| + | コメントを外してやる |
| + | そして、/etc/spamassassin/local.cfに、以下を追加してやってください。 |
| + | # DCC Configuration |
| + | use_dcc 1 |
| + | dcc_home /var/dcc |
| + | dcc_path /usr/bin/dccproc |
| + | add_header all DCC _DCCB_: _DCCR_ |
| + | 以上でっす |
| | | |
- | ------------------------- BEGIN HEADERS ----------------------------- | + | **SPFの設定 [#ve425015] |
- | ウィルスメールのヘッダ | + | spamassassinにSPFを設定するのは楽ちんです。/etc/spamassassin/init.preを以下のように編集します。 |
- | -------------------------- END HEADERS ------------------------------ | + | # SPF - perform SPF verification. |
| + | # |
| + | #loadplugin Mail::SpamAssassin::Plugin::SPF |
| + | ↓ |
| + | loadplugin Mail::SpamAssassin::Plugin::SPF |
| + | コメントを外す |
| + | 以上でっす。 |
| | | |
- | すばらすぃ~。メールは送られず、隔離エリアに葬られました。えらいえらい。ちなみに、デフォルトのままだと、/var/virusmailsに隔離されてます。 | + | * Postfix側の設定[#p8bce71c] |
| + | spamassassinだけでは、受信したメールをSPAMと分類するだけ。入り口であるPostfixにて怪しいものを拒否する手があります。先程述べたgreylistingですが、これをPosftix上で実現してくれるツールが、Postgreyです。 |
| | | |
- | *SpamAssassinのベイズフィルタ学習 [#c7e7143e] | + | **Postgrey [#vba5c072] |
- | 先ほど、SpamAssassinには自動学習機能があるといいました。ですので、収集されたメールから、Spam学習ルールを作る自動化シェルスクリプトを作りました。 | + | ***インストール [#xbcc195d] |
| + | # emerge postgrey |
| + | ***設定 [#f25ff92b] |
| + | /etc/conf.d/postgreyに、設定を追加いたします。重要なのは以下ですかね |
| + | # 初受信のサーバを、何秒受信拒否するか。デフォルトは5分 |
| + | POSTGREY_DELAY=300 |
| + | # postgreyへのオプション指定。--max-ageは、受信許容したサーバのキャッシュを何日で消去するか。デフォルトは30日 |
| + | POSTGREY_OPTS="--max-age=30" |
| + | そしてpostgreyを起動してやります。 |
| + | # rc-update add postgrey default |
| + | # /etc/init.d/postgrey start |
| + | で、最後にpostfixの設定。/etc/postfix/main.cfに以下の設定を追記します。 |
| + | smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated, |
| + | reject_unauth_destination,check_policy_service inet:127.0.0.1:10030 |
| + | 後ろにある、check_policy_service inet:127.0.0.1:10030が重要です。smtpd_recipient_restrictionsは項目の順序も重要ですので、気をつけてね!で、最後に |
| + | # /etc/init.d/postfix reload |
| | | |
- | まずはSpamassassinの設定。/etc/spamassassin/local.cfをいじります。 | + | **バックアップサーバ側の設定 [#ra8dcbd0] |
- | bayes_auto_learn_threshold_nonspam 0.1 | + | 今までは、メインサーバのpostfixがダウンしてしまった場合、上位のDDNS側で、エラーではじかれたメールをプロバイダに転送してくれるよう設定してました。でも、これがSPAM大量増産の大本!せっかくこちらのPostfixでエラーで弾かれても、全部プロバイダに転送されちゃう。そのため、このプロバイダへの転送を止めちゃえば、SPAMも減るってもの。 |
- | bayes_auto_learn_threshold_spam 6.0 | + | しかし、もしもメインサーバがダウンした場合、外部から送信されてきたメールが着信せず、消えてしまいかねないので、それも困る。このためバックアップサーバが受信して、キューイングしておいてくれるように設定しておきます。 |
- | bayes_auto_learn 1 | + | メインサーバのpostfixとの設定の違いは |
- | use_bayes 1 | + | -受信したら、自分のドメインに該当するメールアドレスのみ、メインサーバのpostfixへ転送する |
- | bayes_path /var/amavis/.spamassassin/bayes | + | -上記の設定なので、amavisに転送する設定は行わない |
| | | |
- | これで受信時の自動学習及びベイズフィルタの使用を定義。ア~ンドamavisが溜め込むベイズフィルタをデフォルトルールとする事にしたです。そりで、 | + | その他の設定(SMTP-AUTH/postgrey)は有効としておきます。このため、メインサーバとの差分として、amavis設定を削除し、転送用設定を付け加えときます。/etc/postfix/main.cfに以下を追加します。 |
- | HOME=/var/amavis | + | transport_maps = hash:/etc/postfix/transport |
- | find /var/spool/imap -type d -name SPAM -exec /usr/bin/sa-learn --spam {} \; | + | さらに、/etc/postfix/transportというファイルを作り、ドメインと転送先をそれぞれ指定。 |
| + | example.net smtp:[XXX.XXX.XXX.XXX] |
| + | .example.net smtp:mail.server |
| + | example.netは、MXレコードを引かずに([]を付けるとMXレコードを参照しない)IPアドレスXXX.XXX.XXX.XXXに転送する。.example.net(XXX.example.net等)はmail.serverに転送する、という設定。で、 |
| + | # postmap transport |
| + | を実行して、ハッシュマップを作ります。最後に |
| + | # /etc/init.d/postfix reload |
| + | で完成。 |
| | | |
- | というわけで、imapフォルダ下にあるSPAMって名前のフォルダ下にあるSPAMメールを毎日自動学習するようにCRONシェルを設定して、おしまいでっす。 | + | ちなみに、このバックアップサーバは、メールを受信したらキューイングしてとっておいてくれます。マスタサーバが生き返ったら、再送してくれるありがたいサーバとなります。マスタサーバが死んでる間は、こいつに貯めておいてもらえば、わざわざプロバイダに転送してもらわなくて済むという寸法。 |
| + | |
| + | *結果 [#kfe32905] |
| + | 劇的にSPAMメールが減りました!それまでは1日に300~400通近いSPAMが、1/6以下に減りました。なぜSPAMが0近くにならないかというと、プロバイダのメールに着信するSPAMは、無条件で受信しちゃうから…しかし、そのメールはspamassassinにてSPAMに分類されます。bayesフィルタ、ルール、DCC、SPFを噛ますことで、SPAM認識率が相当向上しました。これでしばらくは安心でしょう♪ |