サーバー上のスパムまたはDMARCの適切な対策を支援する方法

過去数年間、インターネットは、スパムを効果的に防ぐためのツールとしてDMARCテクノロジーを積極的に導入してきました。



dmarc.orgHabrahabrの記事など、専門のリソースで見つけた方がよい技術的な詳細に入らない場合、 DMARCの本質は、まず、 SPFおよびDKIMチェックの結果に基づいて、受信者サーバーにアクションを通知する可能性です検証中に問題が検出された場合に実行する必要があります。次に、このドメインのメッセージ送信元に関する統計と運用レポートを取得します。



上記に基づいて、特定のメールサーバーにDMARCサポートを実装するタスクは、送信ドメインポリシーがローカルに実装され、グローバルなスパム対策プロセスへの貢献として分析レポートを送信することです。



Exim SMTPサーバーがインストールされているFreeBSDシステムのDMARCのセットアップを検討してください。



root@beta:~ # uname -v FreeBSD 10.3-RELEASE-p3 #0: Tue May 17 08:43:55 UTC 2016 root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC root@beta:~ # pkg info | grep exim exim-4.87 High performance MTA for Unix systems on the Internet
      
      





1. OpenDMARCの構成



DMARCサポートと対応する設定オプションを有効にするには、 Experimental_DMARCオプション、およびDMARCが不可能なDKIMExperimental_SPFのサポートを使用してEximをコンパイルする必要があります。



 root@beta:~ # exim --version Exim version 4.87 #0 (FreeBSD 10.3) built 21-Apr-2016 19:02:37 Copyright (c) University of Cambridge, 1995 - 2016 (c) The Exim Maintainers and contributors in ACKNOWLEDGMENTS file, 2007 - 2016 Probably Berkeley DB version 1.8x (native mode) Support for: crypteq iconv() use_setclassresources PAM Perl Expand_dlfunc TCPwrappers OpenSSL Content_Scanning Old_Demime DKIM DNSSEC I18N PRDR Experimental_SPF Experimental_DCC Experimental_DMARC Lookups (built-in): lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmjz dbmnz dnsdb dsearch mysql nis nis0 passwd Authenticators: cram_md5 dovecot plaintext spa Routers: accept dnslookup ipliteral manualroute queryprogram redirect Transports: appendfile/maildir/mailstore/mbx autoreply lmtp pipe smtp Fixed never_users: 0 Size of off_t: 8 Configuration file is /usr/local/etc/exim/configure
      
      





同時に、機能を確実にインストールするために必要なOpenDMARCパッケージが自動的にインストールされます。



 root@beta:~ # pkg info | grep dmarc opendmarc-1.3.1_3 DMARC library and milter implementation
      
      





まず、OpenDMARCの基本設定を行う必要があります。 サンプル構成ファイルをドキュメントに使用する場合、これは非常に単純であり、深刻な修正を必要としません。



 root@beta:~ # cd /usr/local/etc/mail/ root@beta:/usr/local/etc/mail # cp opendmarc.conf.sample opendmarc.conf root@beta:/usr/local/etc/mail # cat opendmarc.conf | egrep -v '^#|^$' AuthservID my.server ForensicReports true ForensicReportsSentBy noreply@my.server HistoryFile /usr/local/etc/exim/dmarc.dat
      
      





システムでDMARCを確保するには、これらのオプションのうち4つで十分です。





上記の統計用ファイルをすぐに作成します。



 root@beta:/usr/local/etc/mail # cd ../exim root@beta:/usr/local/etc/exim # touch dmarc.dat root@beta:/usr/local/etc/exim # chmod 666 dmarc.dat root@beta:/usr/local/etc/exim # ll dmarc.dat -rw-rw-rw- 1 root wheel 0 24  22:47 dmarc.dat
      
      





2. DMARCをサポートするためのEximの構成



次に、Exim構成に変更を加えます。 aclを開始する前の変数の初期値のセクションで、ブロックを追加します。



 root@beta:/usr/local/etc/exim # cat configure | grep dmarc dmarc_tld_file = /usr/local/etc/exim/public_suffix_list.dat dmarc_history_file = /usr/local/etc/exim/dmarc.dat dmarc_forensic_sender = noreply@my.server
      
      





最後の2つのオプションは、OpenDMARC構成ファイルと同じ役割を果たします。 最初のdmarc_tld_fileは、Mozilla Foundationのパブリックドメインサフィックスの現在のデータベースを定義します。 長い箱で問題を遅らせることなく、そのローカルコピーをダウンロードします。



 root@beta:/usr/local/etc/exim # fetch https://publicsuffix.org/list/public_suffix_list.dat public_suffix_list.dat 100% of 179 kB 227 kBps 00m01s root@beta:/usr/local/etc/exim # ll public_suffix_list.dat -rw-r--r-- 1 root wheel 183718 24  18:52 public_suffix_list.dat
      
      





CRONで最新の状態に保つことをお勧めします。



 root@beta:/usr/local/etc/exim # cat /etc/crontab | grep publicsuffix 0 3 * * 1 root fetch -q https://publicsuffix.org/list/public_suffix_list.dat -o /usr/local/etc/exim && service exim reload
      
      





Eximの構成設定はサーバーのニーズと異なる場合があるため、DMARCの使用に関する一般的な推奨事項について説明します( 公式ドキュメントの「DMARCサポート」セクションも参照してください)。



まず、次のコマンドを使用して、対応するACLルールの+ relayfromhostsリストから構成を確認し、信頼できるホストのDMARCチェックを無効にすることをお勧めします(そうしたサービスが特に必要な場合を除く)



control = dmarc_disable_verify







その他すべての場合、DMARCの機能をサポートし、さらに、ルールによる要求の運用レポートを有効にすることが賢明です。



warn control = dmarc_enable_forensic







認証されたユーザーと信頼できるホストからメールを受信した直後に、 acl_smtp_dataセクションの送信ドメインで指定され DMARCポリシーの適用を開始するのが妥当です。 最も単純なケースでは、指定された拒否ポリシーの電子メールの受信を拒否し、 検疫ポリシーのスパム基準であるカウンターにポイントを追加します。 ただし、必要に応じて、オプションのDMARCレコードフィールド、たとえばpctを使用して、より細かいサポートを実装できます。



accept authenticated = *



accept hosts = +relay_from_hosts



# --- check sender's DMARC policy

warn dmarc_status = *

add_header = $dmarc_ar_header



deny dmarc_status = reject

message = Rejected by sender's DMARC policy



warn dmarc_status = quarantine

set acl_c0 = ${eval:$acl_c0+40}

set acl_c1 = QDMARC(40) suspicious message according DMARC policy; $acl_c1







Eximのセットアップは終了し、行った設定を使用して再起動できます。



 root@beta:/usr/local/etc/exim # service exim restart Stopping exim. Waiting for PIDS: 78683. Starting exim.
      
      





サーバー上の送信ドメインのDMARCポリシーの実装のサポートが実装されています。 さらに、サーバーは、手紙の受け取りを拒否した場合、フォレンジックレポートを送信することにより、ドメイン所有者のレポートシステムに状況を即座に通知します。 以下は、そのような報告書の例です。



リターンパス:<>

Envelope-to:d@ruf.agari.com

納期:2016年5月18日(水)19:25:30 +0200

受信:my.serverによるmailnullからのローカル(Exim 4.87(FreeBSD))

id 1b35Du-0000Te-QK

d@ruf.agari.com; 2016年5月18日水曜日19:25:30 +0200

自動送信:自動返信

From:noreply@my.server

宛先:d@ruf.agari.com

件名:IP 190.223.42.106のmail.ruのDMARCフォレンジックレポート

メッセージID:<E1b35Du-0000Te-QK@my.server>

日付:2016年5月18日水曜日19:25:30 +0200



あなたからのメッセージは公開されたDMARCに失敗しました

ドメインのポリシー。



送信者ドメイン:mail.ru

送信者IPアドレス:190.223.42.106

受信日:2016年5月18日水曜日19:25:30 +0200

SPFアライメント:いいえ

DKIMアライメント:いいえ

DMARC結果:拒否



-これは、エラーの前に受信したヘッダーのコピーです

検出されました。



受信:[190.223.42.106]から

esmtpを使用したmy.server(Exim 4.87(FreeBSD))

(envelope-from <outletqn@mail.ru>)

id 1b35Du-0000TE-Eb

sales@my.server; 2016年5月18日水曜日19:25:30 +0200

受信:[163.116.8.100]から(アカウントfrontenace19@inbox.ru HELO exbtaaovmshlgq.peejojgxxotd.tv)

by(CommuniGate Pro SMTP 5.2.3)

sales@my.serverのESMTPA ID 745786287を使用。 2016年5月18日水曜日12:17:49 -0500

日付:2016年5月18日水曜日12:17:49 -0500

From:=?Koi8-r?B?48XO1NIg4dfUz83B1MnawcPJyQ ==?= <Outletqn@mail.ru>

X-Mailer:バット! (v2.12.00)教育

X-Priority:3(通常)

メッセージID:<2803497135.OXX007B0034066@xnfwvhhklng.fffnarj.va>

宛先:<sales@peek.ru>

件名:=?Koi8-r?B?8M8g0M / Xz8TVIMvPztTSz8zRIMvB3sXT1NfBINDSz8TVy8PJyQ ==?=

MIMEバージョン:1.0

コンテンツタイプ:テキスト/プレーン;

文字セット= koi8-r

コンテンツ転送エンコード:8ビット

Received-SPF:softfail(my.server:mail.ruの移行ドメインは、許可された送信者として190.223.42.106を指定しません)client-ip = 190.223.42.106; envelope-from=outletqn@mail.ru; helo = [190.223.42.106];



3. DMARCレポート配布のセットアップ



今こそ、DMARCレポートの定期的な配布を実装するときです。



このためには、まずレポートの送信者と受信者のデータベースを作成し、次にレポートの配布を実装する必要があります。



このシステムでは、メールサービスの操作のサポートなど、関連する多くのサービスでMySQLデータベースサーバーが使用されるため、OpenDMARCデータベースの保存に使用します。



 root@beta:/usr/local/etc/exim # cd /usr/local/share/doc/opendmarc/ root@beta:/usr/local/share/doc/opendmarc # mysql -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 29062 Server version: 5.6.30 Source distribution Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> CREATE DATABASE opendmarc; mysql> GRANT ALL PRIVILEGES ON opendmarc.* TO opendmarc IDENTIFIED BY 'opendmarc'; mysql> quit; root@beta:/usr/local/share/doc/opendmarc # root@beta:/usr/local/share/doc/opendmarc # mysql -h localhost -u opendmarc -p opendmarc < schema.mysql
      
      





次に、Eximによって収集された統計情報を使用して、一時ファイルからデータベースを更新するスクリプトを作成します。



 root@beta:/usr/local/share/doc/opendmarc # cd /usr/local/etc/exim root@beta:/usr/local/etc/exim # touch dmarc-cron.sh root@beta:/usr/local/etc/exim # chmod 755 dmarc-cron.sh root@beta:/usr/local/etc/exim # ll dmarc-cron.sh -rwxr-xr-x 1 root wheel 735 24  22:48 dmarc-cron.sh* root@beta:/usr/local/etc/exim # cat dmarc-cron.sh #!/bin/sh # Update DMARC database and send reports # (c)2014 by Max Kostikov http://kostikov.co e-mail: max@kostikov.co # # cat /etc/crontab | grep dmarc # 0 */6 * * * root /usr/local/etc/exim/dmarc-cron.sh >/dev/null 2>&1 LOG="/usr/local/etc/exim/dmarc.dat" HOST="localhost" PORT="3306" USER="opendmarc" PASS="opendmarc" DB="opendmarc" opendmarc-import --dbhost=$HOST --dbport=$PORT --dbname=$DB --dbuser=$USER --dbpasswd=$PASS --verbose < $LOG cat /dev/null > $LOG opendmarc-reports --dbhost=$HOST --dbport=$PORT --dbname=$DB --dbuser=$USER --dbpasswd=$PASS --interval=86400 --verbose --report-email 'noreply@my.server' opendmarc-expire --dbhost=$HOST --dbport=$PORT --dbname=$DB --dbuser=$USER --dbpasswd=$PASS --verbose --expire=30
      
      





OpenDMARCパッケージの3つのユーティリティを使用します。 最初のopendmarc-importは一時的な統計ファイルからデータをインポートし、2番目のopendmarc-reportsは1つのドメインに対して24時間ごとに1回の間隔でレポートを生成します。 インポート後、統計ファイルは消去されます。



6時間ごとに1回の頻度で、作成したスクリプトをCRONに追加します。



 root@beta:/usr/local/etc/exim # cat /etc/crontab | grep dmarc 0 */6 * * * root /usr/local/etc/exim/dmarc-cron.sh >/dev/null 2>&1
      
      





実際、これで設定は完全に完了しました。また、スパムとの積極的な戦いでの良い側への移行が完了しました。



All Articles