今回のSEC道後2018で、一つだけサブプログラムに参加しました。
“送信ドメイン認証技術 DMARC の導入とその利用方法”
受講のきっかけ
DMARCは何かよくわからなかったけど、たまたまDiscordのインフラ勉強会チャンネルでメールサーバの話が取り上げられていたのもあって、そういえば運送業いたときにMTA触って以来、MTA周りとかDNSの知識キャッチアップしてないよなーと思いつつ(所属先のMTAも、単純にサーバを引っ越しただけで検漏化とかはあんまやってなかった)、ナイトセッション総括などもきになりつつも受講することにしました。
- 昔はPTRレコード(IPアドレスからリモートホストを「正引き」する)の設定が必要だったけど、今ってどうなの?
- 自宅用のメールサービスにOffice365を選定したあと、以下の項目だけ設定したけど、他に何か要るのかな?
MXレコード:(契約名).mail.protection.outlook.com
TXTレコード:MS=(契約番号)
TXTレコード:SPF1 のレコード - で、そもそもDMARCってナニ?
講演概要
- Twofive 加瀬さま(もとニフティの方)
- 「自社ドメインをなりすます」メールとの区別について
- DMARCの初期設定と回し方
- 連携できるものの紹介
XMLデータを読み込む外部サービス
ホワイトリストとして参照できる外部サービス
DMARCとSPF/DKIMの関係
素人目線で言うとこんな感じなのかな(なおSPF以外は読んだ知識のみ…)
- SPF
TXTレコードに指定の形式で送信元のIPアドレス/FQDNを記録することで、”正規のサーバから送信したか否か”の判定に用いる - DKIM
TXTレコードに指定の形式で公開鍵を記録し、送信元メールサーバで秘密鍵で符号化した署名をヘッダに記録したメールを送信し、送信先メールサーバで公開鍵をもとに署名を検証することで、”正規の手順から送信したか否か”の判定に用いる - DMARC
1.”送信元の” TXTレコードに指定の形式で”SPF/DKIMでの検証結果に応じた対応”を記録する
2.”送信先”はSPF/DKIMを評価したうえで、送信元のTXTレコードに従って受け入れ(none)/検疫(quarantine)/拒否(reject)の判断を行う
3.”送信先”がMTAのログを定期的(例えば1日事)に集計し、送信元が受付アドレスをTXTレコード(rua)に記載している場合に成否分析用レポートメールを送付する - DMARCが効くポイント
自サーバにおけるSPF/DKIMの設定の成熟度が確認できる
成熟度の指標を取る目的で、「ひとまずDMARCのレコードを設定する、書式がおかしくてもnoneフラグを立てておいて相手からのレポートを待つ」が第一のステップ
自前のMTAや、mpse等のメール送信代行サービスを適宜SPFに登録し、評価レポート(主にgoogle/yahoo)の結果とにらめっこするのが第二ステップ
DKIMを設定する自信がついたら、DKIMを設定してみて、しばらく運用して問題がない(想定より小さい)ことを確認して、検疫/拒否フラグに差し替えるのが第三ステップ - DMARC が効かないポイント
punycode をはじめとする、送信元ドメインの偽装
よく amazon.co.jp の偽装で amazon-co-jp.io みたいなドメイン偽装をされた場合、後者からのメールはぱっと見正しく見えてしまう。もちろん自前の登録ドメイン名に設定したSPF/DKIMは全く関係しない…。
→あらかじめ送信先MTAにホワイトリストを仕込んでもらう必要がある、とのこと。
送信先MTAでホワイトリスト?
- プレーンテキストでホワイトリストを設定してもらう
Postfix等の場合、外部から受け付けるドメイン名の一覧を作ることができる。こちらでメンテナンスしてもらう。 - サイバー法人台帳ROBINS
JIPDECで管理されている、ドメイン名などのデータベース。UIは…一間して見当たらず。yahooやnifty等のwebメールでは、DKIMでの検証に成功したうえで、ROBINSに対象ドメインが存在することの検証ができた場合に限り”安心マーク”をメール件名に表示させることができるとのこと。https://www.dekyo.or.jp/soudan/data/anti_spam/h2017/HB17_0_all.pdf
レポート??
- google等の大手ISPくらいしかレポートは返してくれないもよう。大体1送信先ドメインに対して1日1通くらいのレポートメールが届く。
- Twofiveさまはじめ、いくつかのベンダがレポートの集計ツールを公開している。もちろん一部は有償。
- 自分でログからレポートメールを作って、送信元ドメインに返すのは結構めんどくさいらしい。 (opendmarc がキーワード?)
- office365 でも通常メールアカウントのほかに「エイリアス」が作成できるので、こっちにレポートメールをためて運用する、のはアリ。めんどくさそうだけど。
気になったQA
- RBLを活用していたが、RBLとDMARCは何が違うのか
RBLは送信先メールサーバが「送信元メールサーバIPがブラックリストに存在するか否か」の評価に”使う”
DMARC(SPF/DKIM)は、送信元メールサーバが、送信先メールサーバに「送信元としてどれくらい信頼してもらえるか」の評価として”使ってもらう” - GPDR対応
IPアドレスも個人情報ではあるが、レポート自体は「送信先メールサーバについて自身のドメイン名/メールサーバが信頼されているか」の指標であるため、特段影響しないのでは、とのこと(若干意見が分かれるようだ)
個人的に気になったところ
- …ROBINSってどうやって使うの
ROBINS自体はyahooやnifty等の大手ISPが評価に使っている=結構いいお値段しそう、ということでいったん聞かなかったことにする(汗 - MTAでの実装のしかた
SPF:TXTレコードの書けるレジストラ/DNSホスティングに引っ越して定義する
A/MX/CNAMEの3点セットしかかけないISPも、稀に存在する
postfix-policyd-spf-python でSPFを評価する
DKIM:openDKIM ライブラリを使う
DMARC:openDMARC ライブラリを使う