Lync Server 2010: 境界におけるセキュリティ

DoS 攻撃とパスワードのブルート フォース攻撃はかなり悪質なことがありますが、この種の攻撃からネットワークを保護することは可能です。

Rui Maximo

現在の密接かつ相互に接続された世界では、企業の従業員の多くがリモートで作業する可能性があるので、企業は従業員に最大限の柔軟性とモビリティを提供する必要があります。そのため、ほぼすべての組織がサービスをインターネットに公開しています。しかし、攻撃の脅威とは、いつも隣り合わせです。一部の企業では、特にサービス拒否攻撃 (DoS) とパスワードのブルート フォース攻撃を懸念しています。このような懸念を抱くのは当たり前のことです。というのも、これらの攻撃は、ユーザーに悪影響を与え、内部サーバーのリソースを消費するおそれがあるからです。

DoS 攻撃の主な問題点は、正当なサインイン要求とほとんど区別できないことです。違いは、サインインの頻度と要求元だけです。連続して何回もサインインしようとしている場合は、DoS 攻撃の可能性があります。

ほとんどの DoS 攻撃では、ユーザーのパスワードを推測して不正アクセスを行おうとします。Active Directory ドメイン サービスでセキュリティ ポリシーが有効な場合、DoS 攻撃を受けて、ログイン回数が上限に達すると、ユーザー アカウントがロックアウトされることがよくあります。

Microsoft Lync Server 2010 エッジ サーバーでは、業界標準のセキュリティ対策を使用して、不正アクセスを防ぎます。エッジ サーバーでは、サインイン要求を監視し、ネットワーク境界でアカウントをロックアウトします。また、すべての通信を暗号化して認証します。

エッジ サーバー自体が、DoS 攻撃を防ぐわけではありません。しかし、Lync Server には、サーバー アプリケーションの作成に使用できる柔軟なプログラミング プラットフォームが用意されており、作成したアプリケーションでサーバーのセッション開始プロトコル (SIP) メッセージをインターセプトして、Microsoft SIP Processing Language (MSPL) を使用した特殊なロジックを実行できます。これがセキュリティ フィルターの機能のしくみです。

セキュリティ フィルターでは、エッジ サーバーに着信するすべてのサインイン要求を調べます。エッジ サーバーではリモート ユーザーを認証しないので、サインイン要求は、ディレクターに渡すか内部プールに直接渡し、そこで認証プロセスを実行します。認証プロセスの実行後、応答がエッジ サーバーに返されます。セキュリティ フィルターでは、要求と応答の両方を調べます。サインインが失敗した場合、セキュリティ フィルターではユーザー アカウントごとに失敗回数を追跡します。

次にクライアントが同じユーザー アカウントにサインインしようとしたときに、許可されているサインインの最大試行回数を失敗回数が超えていると、セキュリティ フィルターでは、要求をディレクターや内部プールに渡して認証を行うことなく、要求を直ちに拒否します。エッジ サーバーでアカウント ロックアウトを適用することで、セキュリティ フィルターでは DoS 攻撃をネットワーク境界でブロックします。その結果、セキュリティ フィルターでは内部の Lync Server リソースを保護できます。

セキュリティ フィルターを使用して Windows NT LAN Manager (NTLM) バージョン 2 認証を阻止すると、ユーザーが企業が支給したラップトップからしかサインインできないようにすることが可能です。追加のセキュリティ対策 (BitLocker やグループ ポリシーを使用して、ユーザーが未承認のソフトウェアをインストールしないようにするなど) と併用すると、企業が支給したラップトップ自体が "スマートカード" として機能し、2 要素認証を実施できます。

1 回目で成功しなかったら

ユーザー アカウントに対するブルート フォース攻撃を防ぐために、多くの組織では Active Directory グループ ポリシーを使用して、失敗回数が一定数に達したらアカウントをロックアウトしています。この対策の欠点は、サインインを何度も繰り返すだけで、攻撃者がユーザーのアカウントをロックアウトできることです。これは、DoS 攻撃と同じです。

アカウントが Active Directory グループ ポリシーで保護されていない場合、攻撃者は、このようなブルート フォース攻撃をユーザーのパスワードに対して使用できます。このような攻撃は、貴重な内部サーバーのリソースを使い果たし、ユーザーはアカウントにアクセスできなくなります。

ユーザーを一意に識別すれば、ユーザー アカウントに対する攻撃を防止できます。ユーザーを識別する方法はいくつかあります。考えられる方法としては、送信元 IP アドレス、サインイン名 (SIP URI)、アカウント名、またはこれらを自由に組み合わせたものがあります。各方法を調査した結果、DoS 攻撃を行う悪意のあるクライアントは送信元 IP アドレスをスプーフィングする可能性があるので、送信元 IP アドレスはユーザーを一意に識別する方法として適切ではありません。

サインイン名は、Lync Server に正常にサインインするために必要ですが、ユーザーを認証しません。サインイン名はサインイン要求中に変更されることがありますが、その場合でも同じユーザー アカウントがロックアウトされます。したがって、送信元 IP アドレスとサインイン名は、どちらもユーザーを識別する方法として適していません。ユーザー アカウントを一意に識別するのは、アカウント名だけです。

ユーザー名とドメイン名で構成されるアカウント名は、認証プロトコルからしか抽出できません。サインインして認証を受けようとするリモート ユーザーは、Kerberos ではなく NTLM v2 プロトコルを使用します。NTLM プロトコルでは、3 段階のハンドシェイク認証プロセスを使用します。クライアントでは、この NTLM ハンドシェイクの 3 つ目の段階で、ユーザーの資格情報を渡します。

セキュリティ フィルターはエッジ サーバーで信頼されたサーバー アプリケーションとして実行されるので、このサインイン要求をインターセプトできます。インターセプトしたら、NTLM 認証メッセージからユーザー名とドメイン名をデコードします。応答からはアカウント名にアクセスできないので、セキュリティ フィルターではメッセージ ID を使用して応答を要求にマップします。

内部プールまたはディレクターからエッジ サーバーに認証応答を送信すると、セキュリティ フィルターでは REGISTER 応答をキャプチャします。サインインが失敗すると、セキュリティ フィルターでは失敗回数を記録します。サインインが成功すると、セキュリティ フィルターでは失敗回数を 0 にリセットします。

境界でフィルター処理する

エッジ サーバーでは、サインイン要求が着信するたびに、要求をセキュリティ フィルターに渡します。セキュリティ フィルターでは、そのユーザー アカウントに許可されている最大試行回数をサインイン要求が超えていないかどうかを確認します。許可されている最大ロックアウト回数を要求が超えていない場合、セキュリティ フィルターでは要求を内部プールまたはディレクターに渡すことを許可します。

許可されている最大ロックアウト回数を要求が超えている場合、セキュリティ フィルターでは要求をブロックし、403 応答を返します。つまり、要求を拒否します。ロックアウト期間中は、それ以降のサインインが拒否されます。ロックアウト期間が終了すると、新しいサインイン要求を許可するようにセキュリティ フィルターがリセットされます。

企業の Active Directory ドメインに参加していないコンピューターからユーザーがサインインすると、問題が発生することがあります。Lync 2010 では、自動的にユーザーのローカル コンピューターの資格情報を使用してサインインを試行できます。しかし、このような資格情報は企業ドメインの資格情報ではないので、認証は失敗します。その結果、Lync Server へのサインインがブロックされます。有効なユーザーをセキュリティ フィルターでロックアウトしないようにするため、セキュリティ フィルターでは、このようなサインインを失敗回数としてカウントしません。

Lync Server 2010 では、TLS-DSK という新しい認証プロトコルがサポートされるようになりました。TLS-DSK では、ユーザーは認証を受けるためにクライアント証明書を提示する必要があります。そのため、Lync クライアントでは Lync Server の証明書を要求します。この処理は、Kerberos を使用してユーザーが認証を受けている企業ネットワークから、初めて Lync Server にサインインするときに自動で実行されます。

2 回目以降のログインでは、このクライアント証明書を使用して認証します。これは証明機関から発行された証明書ではなく、Lync Server から発行された自己署名証明書です。同一ユーザーが別のコンピューターから Lync にサインインしようとすると、Kerberos (企業ネットワーク内からアクセスしている場合) を使用するか NTLM v2 (企業ネットワーク外からアクセスしている場合) を使用して認証を受けます。続いて、別のクライアント証明書を取得する処理が開始されます。

TLS-DSK では、2 要素認証に近いレベルのセキュリティを確保します。Windows BitLocker と併用すると、コンピューターやラップトップがスマートカードに相当するものとして機能します。BitLocker でコンピューターを起動するために必要なパスワードは、スマートカードの使用を承認するために必要な PIN に相当します。

攻撃者がユーザーのコンピューターからクライアント証明書を盗むリスクはゼロではありませんが、このリスクは軽減できます。それには、企業が支給したコンピューターをロックダウンして、ユーザーが未承認のアプリケーションをダウンロードしないようにします。

エッジ サーバーでは強制的に認証プロトコルを TLS-DSK から NTLM v2 にネゴシエートできます。その場合でも、既に説明したように、攻撃者はユーザーのアカウントを攻撃できます。このような攻撃を防ぐために、セキュリティ フィルターには、すべての NTLM v2 認証要求を拒否して TLS-DSK のみの認証を強制するオプションが用意されています。このオプションを使用しても、フェデレーション パートナー接続や PIC 接続に影響はありません。

構成に関する考慮事項

セキュリティ フィルター アプリケーションを実行するには、まずアプリケーションをエッジ サーバーに登録する必要があります。この登録は、次の手順に従って 1 回だけ行う必要があります。Lync Server 管理者のアクセス許可があるアカウントで、次の手順に示す Lync Server 2010 用 Windows PowerShell コマンドレットを実行します。

1. 任意の Lync Server で次の Windows PowerShell コマンドレットを実行して、security_filter アプリケーションを登録します。<Edge Server FQDN> パラメーターには、エッジ サーバーの完全修飾ドメイン名 (FQDN) を指定します。

new-CsServerApplication -identity "EdgeServer:<Edge Server FQDN>/security_filter" -uri "http://www.maximo.ws/security_filter" -critical $false

2. 次の Windows PowerShell コマンドレットを実行して、エッジ サーバーに対して、中央管理ストアの構成のレプリケーションを開始します。

invoke-CsManagementStoreReplication

3. エッジ サーバーで次の Windows PowerShell コマンドレットを実行して、security_filter が正しく登録されていることを検証します。

get-CsServerApplication -localstore

コマンド ライン バージョンの場合、セキュリティ フィルターを実行するには、3 つのパラメーターを渡す必要があります。Windows サービス バージョンの場合、インストーラーで、これらのパラメーターを指定することを求めるメッセージが表示されます。最初のパラメーターでは、内部の NetBIOS ドメイン名のコンマ区切りリストを指定します。指定したドメイン名は、リモート ユーザーがエッジ サーバー経由で内部 Lync Server に接続して認証を受けるときに使用します。

Woodgrove Bank という名前の企業に、woodgrovebank.com、contoso.com、および fabrikam.com という 3 つの内部 Active Directory フォレストがあるとしましょう。従業員は各フォレストのアカウントを持っているので、セキュリティ フィルターに渡す最初のパラメーターには、woodgrovebank,contoso,fabrikam という値を指定する必要があります。

これらのドメイン名では、Lync Server にサインインしようとするリモート ユーザーが 3 つのドメインのいずれかに所属する資格情報 (contoso\bob、fabrikam\alice など) を使用して接続しているかどうかを確認します。

2 番目のパラメーターは、アカウント ロックアウトの回数です。これは、アカウント ロックアウトを行うまで許可されているサインインの失敗回数です。

3 番目のパラメーターは、アカウント ロックアウト期間です。このパラメーターは、アカウントがロックアウトされてから、次のサインインを受け入れるまでアカウントのロックを維持する期間を指定します。このロックアウト期間中は、すべてのサインインが検証されることなく直ちに拒否されます。

Microsoft Lync Server 2010 エッジ サーバーでセキュリティ フィルターとこれらの認証プロトコルを使用すると、攻撃者がユーザー パスワードに対してブルート フォース攻撃や DoS 攻撃を仕掛けることが難しくなります。

Rui Maximo

Rui Maximo は、テクノロジ業界で 18 年以上にわたる経験を持ち、マイクロソフト、IBM、RSA、および数社の新興企業で働いたことがあります。専門的に学んだ分野は、コンピューター サイエンス、数学、および暗号化です。Lync Server については、RTC という名前そ使用していた 2003 年から熟知しています。RTC 製品チームでは、まずプログラム マネージャー、続いてリード プログラム マネージャーとして働きました。Maximo は、Microsoft Lync Server とその以前のバージョンに関する 5 冊の書籍の主な執筆者でもあります。

関連コンテンツ