SMTPの脆弱性


①メールの投稿にあたってユーザを認証する仕組みがない


標準的なMTAではメールの投稿にあたってユーザを認証する仕組みがない。

そのため、送信元メールアドレスの詐称が行なわれるほか、

バージョンの古いMTAでは、自ドメイン名以外のあて先をもったメールが送信されてきた場合

そのメールのあて先のメールサーバまで中継してしまい、スパムメールの踏み台

などとして使用される。(第三者中継)


インターネットと内部ネットワークの境界でメールの中継を行なう一般的なMTA(SMTPサーバ)は

本来以下の条件のメールのみ中継すればよい。


・自分のサイト内のユーザが任意のアドレス宛に発信するメール

 (発信元メールアドレスに自分のサイトのドメイン名が含まれているもの)

・任意のアドレスから自分のサイト内のユーザ宛に送られてくるメール

 (あて先メールアドレスに自分のサイトのドメイン名が含まれているもの)


②メールの暗号化機能が標準装備されていないため、平文でネットワークを流れる


SMTPには、メールの暗号化機能がないため、クライアントアプリケーション側で暗号化を

行なわない限り平文でネットワーク中を流れる。

したがってパケットの盗聴によってメールの内容が漏洩したりメールの内容が改ざんされたり

する必要がある。



SMTPの脆弱性の対策


①Outbound port 25 blockingによるメールの投稿制限


 ISP内にあるメールホストからインターネット側に存在するメールサーバに対して

 ポート番号25でアクセスするIPパケットをブロックしてしまうという方法


 例えば、他プロバイダーのSMTPサーバを利用したメールの送信ができなくなります。


②POP before SMTPによるユーザ認証


 メールの送信に先立ってPOP3によるユーザ認証を行い認証に成功した場合のみ 

 一定時間メールの送信が可能になる方式


 しかしPOP3ではパスワードをそのままネットワークに流すのでAPOPによる認証がお勧め。


③SMTP-AUTHによるユーザ認証


SMTPにユーザ認証機能を追加した方式


 メールサーバ、メールクライアントソフトがともに対応している必要がある。


④IPアドレス、ディジタル署名による送信者認証(送信ドメイン認証)


 発信元のIPアドレスやディジタル署名によってメール受信側で発信元SMTPサーバを認証する仕組み

 (送信者ドメイン認証)


 (1)Sender Policy Framework、Sender ID


   あらかじめ発信元ドメインのDNSサーバに正当なSMTPサーバのIPアドレス(SPFレコード)を

   登録しておくことによって発信元のSMTPサーバを認証する仕組みである。


   ・メールを受信した受信側ドメインのSMTPサーバは発信元のDNSサーバに問い合わせ、

    エンベロープ(SMTPプロトコルのMAIL FORM)のメールアドレスのドメイン名の正当性を

    検証する


   ・上記によって発信元のSMTPサーバの正当性が確認された場合のみメールを受け入れ

    それ以外は排除する。


 (2)DomainKey、DKIM (ディジタル署名による方式)


   あらかじめ発信元ドメインのDNSサーバに正当なメールサーバの公開鍵を登録しておき、

   SMTPサーバが付したディジタル署名によって発信元のメールサーバの正当性を検証する

   仕組みである。


   ・発信元のSMTPサーバは、自身の秘密鍵を用いて送信するメールのDomainKey-Signature

    :ヘッダにディジタル署名を付す。


   ・メールを受信した受信側ドメインのSMTPサーバは、発信元のDNSサーバに問い合わせて

    公開鍵を入手し、DomainKey-Signature:ヘッダのディジタル署名の正当性を検証する


   ・上記によってディジタル署名(発信元SMTPサーバ)の正当性が確認された場合のみ

    メールを受け入れ、それ以外は排除する。


   ※ディジタル署名を用いて検証するので、メールヘッダなどの改ざんを含めて検出できる


S/MIME 、PGPによるメールの暗号化