運用
実例で学ぶSBS 2003ネットワーク構築と運用

第2回 SBS 2003のメール設定

4.メールのオープン・リレー対策(2)

デジタルアドバンテージ
2004/04/21

 ここでは、方法2と3を組み合わせた中継の制限方法について解説しておく。SMTPの中継を制限するには、サーバの管理ツールでExchange Serverの管理画面を開き、[詳細管理]−[ドメイン名]の下にある[サーバー]−[サーバー名]−[プロトコル]−[SMTP]を開く。そしてデフォルトで存在する[既定のSMTP仮想サーバー]を右クリックし、ポップアップ・メニューから[プロパティ]を選択する。

SMTPの管理ツールの起動
SMTPプロトコルで中継を許可するかどうかなどの設定を行うには、SMTPの仮想サーバのプロパティを選択する。
  デフォルトでは[既定のSMTP仮想サーバー]というインターフェイスが作成されているので、これを右クリックする。
  ポップアップ・メニューから[プロパティ]を選択する。

 すると次のような[既定のSMTP仮想サーバーのプロパティ]が表示されるで、[アクセス]タブを選択する。

SMTPの仮想サーバのプロパティ
SMTPのサービスごとにこのような「SMTP 仮想サーバー」という仮想的なインターフェイスが作成される。
  SMTPサーバがリッスンするIPアドレスやポート番号の指定、SMTPの通信ログの指定。詳細は後述。
  SMTPプロトコルへの接続や中継を制御するには、この[アクセス]タブを選択する。
  SMTPで認証を行うにはこれをクリックする。
  クライアントのIPアドレスやドメイン名に基づく制限を行う場合はこれをクリックする。インターネットに対してSMTPサーバを公開する場合は、すべてのIPアドレスからのアクセスを許可しておく必要がある。
  中継方法を制御するにはこれを選択する。詳細は後述。

SMTP認証の設定

 この画面ではSMTPの認証に関する設定を行う。インターネット側からメールを受け付けるためには認証なしで運用しなければならないが、内部ネットワークから利用する場合は認証をかけて不正な中継を防ぐのがよいだろう。OutlookやOutlook Expressをはじめ、最近のメール・ソフトウェアでは問題なく利用できるのが普通である。

SMTP認証の設定
  認証なしでSMTP送信できるようにするには、これをオンにする。一般的にはインターネットからのメールを受け付ける場合は、この匿名アクセスが有効になっていなければならないが、組織内のユーザーが利用する場合は、匿名アクセスを禁止して安全性を高めるのが望ましい。
  暗号化されない、クリア・テキストBase64形式でのユーザー認証。安全性は高くない。
  Windows環境で広く使われるNTLM認証を使用する。
  匿名アクセスでない場合に、どのユーザーに使用を許可するかを設定する。デフォルトでは「Authenticated User(認証済みユーザー)」となっているので、Windowsシステムにログオン可能なユーザーにのみ許可されることになっている。と併用すると、認証済みと認証なしのいずれでも利用することができる。認証済みユーザーにのみメールの中継(後述)を許可したいのならば、このような設定で利用するとよい。

IPアドレス/ドメイン名によるアクセス制限の設定

 [接続制御]の画面では、SMTPクライアントのIPアドレスや(逆引きした)ドメイン名に基づいて、SMTPサーバへのアクセスの可否を決める。ただしSMTP仮想サーバ・インターフェイスが1つの場合は(これはデフォルトの状態)、インターネットとイントラネットの両方からアクセスされるので、制限を付けてはいけない。2つ以上のSMTP仮想サーバ・インターフェイスを用意して、それぞれ個別にアクセス制御や中継制御を行う場合は、アクセス可能なクライアントを限定するために、この機能を活用するとよいだろう。

中継の制限

 この画面は、SMTPの中継の制御を行うためのものである。LAN上のクライアントからのアクセスでは中継を許可し、インターネットからのアクセスでは確実に中継を禁止しなければならない。一般的には次のような制限を付けることになるだろう。

メールの中継の制限方法1
一般的な中継の制限方法。インターネットからのアクセス時に、IPパケットの送信元IPアドレスが変換されないようなネットワーク環境では、このようにして中継を制限する(通常のNAT/IPマスカレードではこのようになっている)。アクセス元のIPアドレスがこの範囲以外の場合はインターネットからのアクセスであると判断し、中継を拒否する。
  デフォルトでは中継を拒否するが、にある特定のIPアドレスの場合は許可するという設定。
  中継を許可するソースIPアドレスの指定。ローカルのLAN上のIPアドレスやSBS 2003サーバ自身のIPアドレス(127.0.0.1というローカル・ループバック・アドレスも含めること)の場合は、中継を許可する。
  SMTPの認証を通った場合は(つまりSBS 2003上に登録されているユーザーの場合は)、正当なユーザーであると判断し、中継を許可するように設定することもできる。だが実際には不正なユーザーが侵入を試みる場合もあるので、(リモート・アクセス・ユーザーのために)インターネット側からも中継を利用できるようにしたければ、標準のポート番号(TCPの25番)ではない別のポート番号(例:60025番など)を割り当て、そこでリッスンするように設定した方がセキュリティ的には望ましいだろう。必要ならば別のSMTP仮想サーバ・インターフェイスを定義して、そちらでのみ中継を許可する、といった設定方法を利用してもよい。
  のSMTPユーザー認証を利用する場合に、どのユーザーに対して中継を許可するかを指定する。デフォルトでは「Authenticated User(認証済みユーザー)」となっているので、Windowsシステムにログオン可能なユーザーにのみ許可されることになっている。

 ここでは、ローカルのLAN上で使われるプライベートIPアドレスの範囲を列挙し、これらのクライアントからのSMTPアクセスの場合には中継を許可している。一般的にはこれで正しく利用できることが多い。

 しかしネットワークの構成によっては、これでは不十分な場合があるので注意してほしい。今回想定しているネットワークでは(最初に提示した図参照)、インターネットからのアクセスはすべて172.16.1.1というIPアドレスを持つルータからやってくることになる。ルータにおけるポート・フォワーディング(サーバ公開)機能の実装方法に依存するが、パケットの内部ネットワークへのフォワード時に、IPパケットのソース側IPアドレスがルータのIPアドレス(172.16.1.1)に変換される場合がある(単なるアドレス変換機能ではなく、より高機能なSMTPのProxyサービスを通るとこのようになる場合が多い)。するとSBS 2003マシンからすれば、172.16.1.1という「ローカルのIPアドレス」を持つクライアントからアクセスされたように見える。つまりSMTP通信のIPパケットにおいて、ソース側のIPアドレスがグローバルIPアドレスではなく、172.16.1.1というローカルIPアドレスになるのである。

 このようなルータ(Proxy機能)を使っている場合は、以下のようにして、ルータからのアクセスの場合は中継を拒否するように設定すればよい。

メールの中継の制限方法2
インターネットからのアクセス時に、IPパケットの送信元IPアドレスも変換されてしまうようなネットワーク環境では、このようなルールを定義するとよい。ルータ(ここでは172.16.1.1)からのアクセス時にはインターネットからのアクセスであると想定し、この場合は中継を禁止する。
  デフォルトでは中継をすべて許可するが、にある特定のIPアドレスの場合は禁止するという設定。
  中継を拒否するソースIPアドレスの指定。

 自社のネットワーク環境ではどちらの方式が使われているかは、SMTP接続時にnetstatコマンドを実行し、接続元のIPアドレスがいくつになっているかを調べてもよいし、後述するSMTPのログ機能でクライアント側IPアドレスを調べてもよい。スキルがあるなら、管理ツールの「ネットワーク モニタ」でパケットの内容をチェックするのもよい(Windowsのオプション・ネットワーク・コンポーネットで別途インストールする必要がある)。ネットワーク・モニタ・ツールの使い方やインストール方法については別稿の「Windowsネットワーク・プロトコルの理解と検証」を参照していただきたい。

オープン・リレーのチェック

 メール・サーバの中継設定が完了したら、実際にインターネットやイントラネットなど、さまざまな場所からメール・サーバにSMTPプロトコルで接続して、オープン・リレーが有効になっていないかどうかをチェックする。この場合、実際にメーラ(メール・クライアント・ソフトウェア)を使って確認するという方法もあるが、これではSMTPのエラーの詳細をつかみにくいので、ここでは手動でtelnetコマンドを使ってテストする方法を紹介する。SMTPプロトコルの詳細についてはMaster of IP Networkフォーラムの「SMTPでメール送信の舞台裏をあやつる」や「インターネット・プロトコル詳説―SMTP」などを参照していただきたい。

 オープン・リレーを調査する場合には、telnetでSMTPポートに接続して、以下のようなコマンドを送信すればよい(先頭の「番号:」は行番号なので入力してはいけない)。

1: helo sbsserver
2: mail from:<test@example.com>
3: rcpt to:<test@example.com>
4: quit

 ここで1行目のheloコマンドにおける「sbsserver」というパラメータは、SBS 2003をインストールしたサーバの名称であるが、単なるプロトコル上のグリーティング・メッセージ(最初に送信するあいさつのようなもの)なので、ほかの文字列でもよい(正しくは、クライアント側のホスト名を指定する)。2行目と3行目にあるメール・アドレス(< > で囲むこと)は、それぞれメールの送信元と送信先のメール・アドレスである。<test@examples.com>は、このSBS 2003のドメインとはまったく関係のない別のドメインを使ったメール・アドレスであり、もしこれが許可されれば、オープン・リレーが許可されている状態であるといえる。だがこのコマンドの実行結果がエラーになるようならば、正しくオープン・リレーがブロックされているということになる。

 実際に実行してみると次のようになるはずである。まずは内部LAN上の任意のクライアントもしくはSBS 2003上でコマンド・プロンプトを開き、次のようにしてSBS 2003に接続して正しく外部へ送信できることを確認する。

C:\>telnet 172.16.1.11 smtp …ローカルのLAN上からSBS 2003に接続
220 d-advantage.jp Microsoft ESMTP MAIL Service, Version: 6.0.3790.0 ready at  Wed, 14 Apr 2004 10:09:48 +0900
helo sbsserver …オープニングのコマンド
250 d-advantage.jp Hello [172.16.1.51]
mail from:<test@example.com> …メールの送信元アドレスの指定
250 2.1.0 test@example.com....Sender OK
rcpt to:<test@example.com> …メールの送信先アドレスの指定
250 2.1.5 test@example.com …正しく受け付けられた
quit …中断・終了

 黄色い文字の部分は、サーバ側からの応答である。ここでは172.16.1.51のクライアント・マシンからSBS 2003(172.16.1.11)マシンに接続しているが、SBS 2003上から「telnet 172.16.1.11 smtp」と「telnet 127.0.0.1 smtp」も実行して、それぞれ同じ結果が得られることを確認していただきたい。これができないと、SBS 2003マシンそのものからメールを送信することができない。

 結果で注目すべき場所は、最後の「250 2.1.5 test@example.com」という応答である。これは<test@example.com>というメール・アドレスへの送信が正しく行えるということを表している。

 同様のテストをインターネット上の任意のホストから、ここで公開しているSBS 2003マシンのSMTPポートに向けても行ってみる。

C:\>telnet XX.XX.XX.XX smtp …インターネットからSBS 2003に接続
220 d-advantage.jp Microsoft ESMTP MAIL Service, Version: 6.0.3790.0 ready at  Wed, 14 Apr 2004 10:19:24 +0900
helo sbsserver
250 d-advantage.jp Hello [YY.YY.YY.YY] …クライアントのIPが表示される
mail from:<test@example.com> …メールの送信元アドレスの指定
250 2.1.0 test@example.com....Sender OK
rcpt to:<test@example.com> …メールの送信先アドレスの指定
550 5.7.1 Unable to relay for test@example.com …リレーできないというエラー
quit

 先頭にある「XX.XX.XX.XX」は、インターネット上からアクセスする場合の公開IPアドレスである。これはユーザーの環境に合わせて変更していただきたい。

 この結果で注目すべき点は、rcptコマンドに対する最後の「550 5.7.1 Unable to relay for test@example.com(550 5.7.1 test@example.comへはリレーできない)」という応答である。一般的にSMTPプロトコルでは、応答の先頭にある200番台の数値は肯定応答、500番台の数値はエラー応答を表す。この例では、「test@example.comへはリレーできない」というメッセージが示すとおり、リレーが拒否されている。これが正しい動作であるが、もし「250 2.1.5 test@example.com」という応答が戻ってくるようならば、もう一度設定を確認していただきたい。

 以上の例は、手動でオープン・リレーをチェックする方法であるが、これ以外にも自動でチェックしてくれるサービスを利用するという方法もある。詳しくはSecurity&TrustフォーラムのSecurity Tips「スパム中継防止のため、第三者中継をチェックする」などを参照していただきたい。


 INDEX
  [運用]実例で学ぶSBS 2003ネットワーク構築と運用
  第2回 SBS 2003のメール設定
    1.POP3/IMAPサービスの設定
    2.POP3コネクタによるメールの取得と再配布
    3.メールのオープン・リレー対策(1)
  4.メールのオープン・リレー対策(2)
    5.メールのログ機能の設定
 
 運用


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間