情報処理安全確保支援士を目指して1.5
こんにちは、aintekのkawaiです。
前回の記事「情報処理安全確保支援士を目指して1」でEmailの脆弱性対策について、さわりだけ書いて終わってしまいました。
そこで今回は、Emailにおける脆弱性対策について、具体的に示したいと思います。
SMTPの脆弱性とその対策
前回の内容にもある通り、SMTPで気をつけるべきことは、第三者中継(オープンリレー)です。
その第三者中継を悪用されないための対策として、
- 送信元のメールアドレスチェック
- SMTP-AUTHなどのユーザ認証
などがあることも説明しました。
以下では、ユーザ認証に関して詳しく説明します。
(メールアドレスチェックは、送り主のドメインが自分のものでなければ送らない、というだけなので割愛します)
SMTP-AUTHによるユーザ認証
SMTP-AUTHはその名の通り、SMTPにユーザ認証機能を追加した方式です。
SMTP-AUTHの認証機構は、SASL(Simple Authentication and Security Layer)に基づいており、SASLはユーザ名とパスワードを認証サーバに送ることで認証機能を実現しています。
なお、 認証サーバはメールサーバの一機能として一体化されていることが多いです。
SMTP-AUTHの認証方式には、下記のような方式があります。
- PLAIN
- LOGIN
- CRAM-MD5
- DIGEST-MD5
PLAIN
PLAINは、その名の通り、平文のままユーザ名とパスワードを送信する方式です。
これは、RFC2595で規定されており、場合によってはbase64でエンコードされて送信される場合もあります。
内部向けのテスト環境で利用されることはあっても、本番環境で利用することはないでしょう。
LOGIN
PLAIN同様に平文でユーザ名とパスワードを送信しますが、RFCに規定されたものではありません。
CRAM-MD5
CRAMとは、チャレンジレスポンス方式の認証を指します。
チャレンジレスポンス方式とは、
まず、メールサーバが任意の文字列(チャレンジ)をクライアントに送り
クライアントは、受け取った文字列とパスワードからMD5を生成
上記のMD5をメッセージダイジェストと呼び、これをサーバに返す
ことで認証を行う方式です。
CRAM-MD5は、RFC2195で規定されています。
DIGEST-MD5
CRAM-MD5の強化版です。RFC2831で規定されています。
POP before SMTPによるユーザ認証
メール送信前にPOP3による認証を行い、認証が成功した場合に、一定期間メールの送信を許可する認証方式です。
これは、RFC2476に規定されています。
ただし、SMTPは、送信元のIPアドレスを記録しておき一致するかどうかを判断するため、IPアドレスの偽装などによって不正なメール送信を許してしまう場合があります。
合わせて、POPの脆弱性についても対処する必要があるため注意しなければなりません。
POP3の脆弱性とその対策
POP3とは、Post Office Protocol Version3 の略で、メールサーバがメールを受信するプロトコルの一種です。
POP3では、メールサーバとクライアントの間で、ユーザ名とパスワードによる認証を行っていますが、以下の注意が必要です。
- 認証情報が平文
- 受信データ(メール)が平文
上記のようにインターネット上を平文で流れていくといことは、認証情報やメール本文の盗聴が可能ということです。
そのため、インターネットへのアウトバウンドに素のPOP3を利用することはNGです。
APOPによる認証情報の秘匿化
APOPはチャレンジレスポンス方式でユーザ認証を行います。
ただし、メール本文は秘匿化されないため注意が必要です。
POP3 over SSL/TLSによる認証情報及びメールの秘匿化
SSL/TLSを用いたPOP3の通信を暗号化する方式です。
ただし、暗号化されるのは、送り元からメールサーバの間のみで、メールサーバから宛先への経路は暗号化されない点に注意です。
なお、over SSL/TLSを利用する場合は、POP3で利用するポート110とは異なり、ポート995/TCPを利用することになります。
上記以外の方法として、SSHのポートフォワーディング機能を利用し、POP3 over SSL/TLSと同じよな秘匿化が可能です(すなわち、送り元からメールサーバ間を暗号化する)。
まとめ
これらは、mailサーバ等を構築する際の基本的なセキュリティ対策です。
これらの仕組みを理解し、提案できるようになっていきたいものです。
以上。