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によるメールの暗号化