次の方法で共有


ログ分析テスト シナリオを使用して Kerberos 認証のトラブルシューティングを行う

この記事では、仮想的なクライアントとサーバーの展開を使用して、Kerberos 認証に関する問題のトラブルシューティング方法を示します。

環境と構成

  • ユーザー "John" は、 contoso.com ドメインに属しています。

  • すべてのドメインのドメイン ネーム システム (DNS) サーバーはドメイン コントローラーです。

  • John は、次のように構成されたクライアント コンピューターにサインインします。

    • 名前とドメイン: Client1.contoso.com

    • オペレーティング システム: Windows 11

    • ブラウザー: Microsoft Edge

    • 監視アプリケーション: ネットワーク モニター ( Microsoft Network Monitor からインストール)

    • インターネット オプションの構成: すべての contoso.com サイトがローカル イントラネット ゾーンに属している

      すべての 'contoso.com' Web サイトがローカル イントラネット ゾーンにあることを示すインターネット プロパティのスクリーンショット。

  • クライアント コンピューターで、John は次のように構成されたターゲット サーバーに接続します。

    • 名前とドメイン: IISServer.contoso.com

    • オペレーティング システム: Windows Server 2019

    • ターゲット サービス: インターネット インフォメーション サービス (IIS) で実行される Web サイト

    • ターゲット サービス アカウント: コンピューター アカウント (サービスは IISServer.contoso.comのコンテキストで実行されます)

    • ターゲット サービス ポート: TCP ポート 80

    • 認証構成 (インターネット インフォメーション サービス マネージャーで構成):

      • Windows 認証有効です

        Windows 認証が有効になっていることを示す [インターネット インフォメーション サービス マネージャー] ウィンドウのスクリーンショット。

      • 次のスクリーンショットに示すように、有効な認証プロバイダーの一覧には Negotiate が含まれています。

        [有効なプロバイダー] に [ネゴシエート] が含まれていることを示す [プロバイダー] ウィンドウのスクリーンショット。

    • ログオン監査の構成: ログオンの成功の監査とログオン失敗の監査の両方が有効になっています。

      既定では、すべての Windows Server オペレーティング システムで成功と失敗のログオン監査が有効になっています。 この設定を確認するには、管理コマンド プロンプト ウィンドウを開き、次のコマンドを実行します。

      auditpol /get /Subcategory:"logon"
      

      この設定が有効になっている場合、このコマンドは次の出力を生成します。

      System audit policy
      Category/Subcategory                    Setting
      Logon/Logoff
        Logon                                 Success and Failure
      

      この結果が表示されない場合は、次のコマンドを実行して、成功と失敗の監査ログを有効にします。

      auditpol /set /subcategory:"Logon" /Success:enable /Failure:enable
      

想定される認証フロー

次の図は、Kerberos 要求メッセージと応答メッセージのシーケンスと、前のセクションで説明した環境内のそれらのメッセージのパスを示しています。

認証フローのスクリーンショット。

このプロセスは、クライアント コンピューター Client1.contoso.comにサインインしているユーザー John が Microsoft Edge ブラウザーを開き、 IISServer.contoso.comに接続すると開始されます。

手順 1 はクライアント コンピューターで実行され、次の手順が含まれます。

  1. DNS リゾルバー サービスは IISServer.contoso.com キャッシュして、この情報が既にキャッシュされているかどうかを確認します。
  2. DNS リゾルバー サービスは、HOSTS ファイル (C:\Windows\System32\drivers\etc\Hosts) で IISServer.contoso.comのマッピングを確認します。
  3. DNS クライアント サービスは、(IP 構成設定で構成されている) 優先 DNS サーバーに DNS クエリを送信します。

手順 2 は DNS サーバー (ドメイン コントローラー) で行われ、次の手順が含まれます。

  1. DNS サーバー サービスは、構成済みのゾーンを確認し、ホスト "A" レコードを見つけ、 IISServer.contoso.com を IP アドレス 192.168.2.104に解決します。
  2. DNS サーバーは、クライアント コンピューターに IP アドレスを返します。

手順 3 はクライアント コンピューターで行われ、次の手順が含まれます。

  1. クライアント コンピューターは、TCP ポート 80 を使用して、IISServer.contoso.comで TCP 3 方向ハンドシェイクを実行します。
  2. クライアント コンピューターは、匿名の HTTP 要求を IISServer.contoso.comに送信します。

手順 4 はターゲット サーバーで実行され、次の手順が含まれます。

  1. ( IISServer.contoso.comとして実行されている) Web サービスは、 Client1.contoso.comから要求を受信します。
  2. Web サービスは、"HTTP 401" チャレンジ応答を含む Client1.contoso.com に応答メッセージを送信します。 メッセージでは、優先認証プロバイダーとしてネゴシエートを指定し、セカンダリ認証プロバイダーとして NTLM を指定します。

手順 5 はクライアント コンピューターで行われ、次の手順が含まれます。

  1. クライアント コンピューターは、 IISServer.contoso.comからチャレンジ応答メッセージを受信します。
  2. Microsoft Edge プロセスでは、 IISServer.contoso.com がローカル イントラネット ゾーンに属していることを確認します。 そのため、認証プロセスでは NTLM ではなく Kerberos を使用する必要があります。
  3. Microsoft Edge プロセスは LSASS.exe を呼び出して、 IISServer.contoso.comのサービス チケットを探します。
  4. この場合、クライアント コンピューターには適切なサービス チケットがありません。 Microsoft Edge プロセスは、チケットの要求を Kerberos 配布センター (KDC) に送信します。

手順 6 はドメイン コントローラーで行われ、次の手順が含まれます。

  1. ドメイン コントローラー (KDC サービス) は、 Client1.contoso.com から要求を受信し、SPN HTTP\IISServer.contoso.com (または HOST\IISServer.contoso.com) を使用するサービスを検索します。
  2. ドメイン コントローラーは、要求されたサービスを、 IISServer.contoso.comのコンテキストで実行される Web サービスとして識別します。
  3. ドメイン コントローラーは、 IISServer.contoso.com Web サービスのサービス チケットを含むクライアント コンピューターに応答を送信します。

手順 7 はドメイン コントローラーで行われ、次の手順が含まれます。

  1. Microsoft Edge プロセスは、サービス チケットを含む Kerberos アプリケーション プロトコル (AP) メッセージを作成します。
  2. Microsoft Edge プロセスは、"HTTP 401" チャレンジ応答メッセージに応答して、ap メッセージを IISServer.contoso.com に送信します。

手順 8 は Web サーバーで行われ、次の手順が含まれます。

  1. IIS プロセスは、ローカルLSASS.exeプロセスに対してクエリ 実行します。
  2. LSASS.exe プロセスはチケットを復号化し、SessionID と John のグループ メンバーシップを含むユーザーのトークンを作成します。
  3. LSASS.exe プロセスは、トークンのハンドルを IIS プロセスに返します。
  4. IIS プロセスは、トークン内のグループ情報をチェックして、John が要求されたページにアクセスするためのアクセス許可を持っていることを確認します。
  5. IIS プロセスは、要求されたページをブラウザーに送信します。

ネットワーク モニターを使用して認証テストを記録する

「環境 と構成 」セクションで説明されている環境に似た環境でトレース データを収集するには、次の手順を使用します。 このテストでは、「 予期される認証フロー 」セクションで説明されている方法でシステム コンポーネントが対話する必要があります。

このセクションの手順を使用するには、ローカルの Administrators グループに属している必要があります。

  1. クライアント コンピューターで、管理コマンド プロンプト ウィンドウを開き、 ipconfig /flushdns実行します。
  2. ネットワーク モニターを開き、記録を開始します。
  3. Microsoft Edge を開きます。 アドレス バーに「http://iisserver.contoso.com」と入力します。
  4. Microsoft Edge 操作が完了したら、ネットワーク モニターでの記録を停止します。

認証テストで生成されるデータを確認する

認証テストでは、次の情報が生成されます。

  • ネットワーク モニターのトレース データ
  • チケット データ
  • 認証イベントにおける監査の成功と失敗のイベントデータ

このセクションの残りの部分では、認証フローで生成されるデータについて詳しく説明します。

重要なイベントのトレース データを確認する

トレース データで、次のトレースの抜粋のような情報を探します。

  • ホスト "A" レコードのドメイン コントローラーに対する DNS クエリIISServer.contoso.com:

    3005    00:59:30.0738430    Client1.contoso.com    DCA.contoso.com    DNS    DNS:QueryId = 0x666A, QUERY (Standard query), Query  for iisserver.contoso.com of type Host Addr on class Internet
    
  • ドメイン コントローラー上の DNS サービスからの DNS 応答:

    3006    00:59:30.0743438    DCA.contoso.com    Client1.contoso.com    DNS    DNS:QueryId = 0x666A, QUERY (Standard query), Response - Success, 192.168.2.104
    
  • IISServer.contoso.com IIS Web サーバーへのClient1.contoso.com上の Microsoft Edge プロセスからの匿名要求:

    3027    00:59:30.1609409    Client1.contoso.com    iisserver.contoso.com    HTTP    HTTP:Request, GET /
    Host:  iisserver.contoso.com
    
  • IISServer.contoso.comからClient1.contoso.comへの HTTP 401 チャレンジ応答メッセージ:

    3028    00:59:30.1633647    iisserver.contoso.com    Client1.contoso.com    HTTP    HTTP:Response, HTTP/1.1, Status: Unauthorized, URL: /favicon.ico Using Multiple Authetication Methods, see frame details
    
    WWWAuthenticate: Negotiate
    WWWAuthenticate: NTLM
    
  • SPN (TGS 要求メッセージとも呼ばれます) としてHTTP/iisserver.contoso.comを使用するサービスのClient1.contoso.comからドメイン コントローラーへのサービス チケット要求DCA.contoso.com

    3034    00:59:30.1834048    Client1.contoso.com    DCA.contoso.com    KerberosV5    KerberosV5:TGS Request Realm: CONTOSO.COM Sname: HTTP/iisserver.contoso.com
    
  • IISServer.contoso.comのサービス チケット (TGS 応答メッセージとも呼ばれます) を含むDCA.contoso.comからのサービス チケット応答:

    3036    00:59:30.1848687    DCA.contoso.com    Client1.contoso.com    KerberosV5    KerberosV5:TGS Response Cname: John 
    Ticket: Realm: CONTOSO.COM, Sname: HTTP/iisserver.contoso.com
    Sname: HTTP/iisserver.contoso.com
    
  • Client1.contoso.comの Microsoft Edge プロセスから IISServer.contoso.com への 2 番目の要求。 このメッセージには、サービス チケットが含まれています。

    3040    00:59:30.1853262    Client1.contoso.com    iisserver.contoso.com    HTTP    HTTP:Request, GET /favicon.ico , Using GSS-API Authorization
    Authorization: Negotiate
    Authorization:  Negotiate YIIHGwYGKwYBBQUCoIIHDzCCBwugMDAuBgkqhkiC9xIBAgIGCSqGSIb3EgECAgYKKwYBBAGCNwICHgYKKwYBBAGCNwICCqKCBtUEggbRYIIGzQYJKoZIhvcSAQICAQBugga8MIIGuKADAgEFoQMCAQ6iBwMFACAAAACjggTvYYIE6zCCBOegAwIBBaENGwtDT05UT1NPLkNPTaIoMCagAwIBAqEfMB0bBEhUVFAbF
    SpnegoToken: 0x1
    NegTokenInit: 
    ApReq: KRB_AP_REQ (14)
    Ticket: Realm: CONTOSO.COM, Sname: HTTP/iisserver.contoso.com
    
  • IIS サーバーから Client1.contoso.comへのメッセージ。 このメッセージは、ユーザーが認証および承認されていることを示します。

    3044    00:59:30.1875763    iisserver.contoso.com    Client1.contoso.com    HTTP    HTTP:Response, HTTP/1.1, Status: Not found, URL: / , Using GSS-API Authentication
    WWWAuthenticate: Negotiate oYG2MIGzoAMKAQChCwYJKoZIgvcSAQICooGeBIGbYIGYBgkqhkiG9xIBAgICAG+BiDCBhaADAgEFoQMCAQ+ieTB3oAMCARKicARuIF62dHj2/qKDRV5XjGKmyFl2/z6b9OHTCTKigAatXS1vZTVC1dMvtNniSN8GpXJspqNvEfbETSinF0ee7KLaprxNgTYwTrMVMnd95SoqBkm/FuY7WbTAuPvyRmUuBY3EKZEy
    NegotiateAuthorization: 
    GssAPI: 0x1
    NegTokenResp: 
    ApRep: KRB_AP_REP (15)
    

クライアント コンピューターでチケット情報を確認する

クライアント コンピューターのコマンド プロンプトで、 klist ticketsを実行します。 出力は次の抜粋のようになります。

Client: John @ CONTOSO.COM
Server: HTTP/iisserver.contoso.com @ CONTOSO.COM
KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96
Ticket Flags 0x40a10000 -> forwardable renewable pre_authent name_canonicalize
Start Time: 11/28/2022 0:59:30 (local)
End Time:   11/28/2022 10:58:56 (local)
Renew Time: 12/5/2022 0:58:56 (local)
Session Key Type: AES-256-CTS-HMAC-SHA1-96
Cache Flags: 0
Kdc Called: DCA.contoso.com

ターゲット サーバーの監査イベントを確認する

IISServer.contoso.comのイベント ビューアーで、Windows ログ>セキュリティ ログに移動して、サインイン (ログオン) イベントを確認します。 イベント ID 4624 または 4625 のインスタンスを探し、次のフィールドを確認します。

  • キーワード: 監査の成功 または 監査の失敗
  • ログオンの種類: 3 (ネットワーク ログオン)
  • [新しいログオン] フィールドのセキュリティ ID: Contoso\John
  • 送信元ネットワーク アドレス: クライアント コンピューターの IP アドレス
  • ログオン プロセス認証パッケージ: Kerberos

イベント レコードのフルテキストは、次の抜粋のようになります。

Log Name:      Security
Source:        Microsoft-Windows-Security-Auditing
Date:          11/28/2022 12:59:30 AM
Event ID:      4624
Task Category: Logon
Level:         Information
Keywords:      Audit Success
User:          N/A
Computer:      IISServer.contoso.com
Description:
An account was successfully logged on.

Subject:
    Security ID:        NULL SID
    Account Name:        -
    Account Domain:        -
    Logon ID:        0x0

Logon Information:
    Logon Type:        3
    Restricted Admin Mode:    -
    Virtual Account:        No
    Elevated Token:        No

Impersonation Level:        Impersonation

New Logon:
    Security ID:        CONTOSO\John
    Account Name:        John
    Account Domain:        CONTOSO.COM
    Logon ID:        0x1B64449
    Linked Logon ID:        0x0
    Network Account Name:    -
    Network Account Domain:    -
    Logon GUID:        {<GUID>}

Process Information:
    Process ID:        0x0
    Process Name:        -

Network Information:
    Workstation Name:    -
    Source Network Address:    192.168.2.101
    Source Port:        52655

Detailed Authentication Information:
    Logon Process:        Kerberos
    Authentication Package:    Kerberos

認証ワークフローのトラブルシューティング

ネットワーク トレースを確認して、問題が発生したプロセス内の場所を絞り込むことができるように、どのステップが失敗するかを確認します。 この情報を使用して、問題の解決に役立つトラブルシューティング方法を決定します。

ネットワーク接続を確認する

DNS または TCP 通信に問題がある場合は、次の操作を確認します。

  • クライアント コンピューター (Client1.contoso.com) からターゲット サーバー (IISServer.contoso.com) の名前を解決できることを確認します。

  • DNS サーバーがターゲット サーバーの IP アドレスを正しく解決していることを確認します。 これを行うには、PowerShell ウィンドウを開き、次のコマンドレットを実行します。

    Resolve-DnsName -Name IISServer.contoso.com
    

    このコマンドレットの出力は、次の抜粋のようになります。

    Name                                       Type   TTL   Section    IPAddress
    ----                                       ----   ---   -------    ---------
    IISServer.contoso.com                      A      1200  Answer     192.168.2.104
    
  • クライアント コンピューターとターゲット サーバーの間で、必要なネットワーク ポートが開かれていることを確認します。 これを行うには、以下のコマンドレットを実行します。

    Test-NetConnection -Port 80 IISServer.contoso.com 
    

    このコマンドレットの出力は、次の抜粋のようになります。

    ComputerName     : IISServer.contoso.com
    RemoteAddress    : 192.168.2.104
    RemotePort       : 80
    InterfaceAlias   : Ethernet 2
    SourceAddress    : 192.168.2.101
    TcpTestSucceeded : True
    

クライアント コンピューターでチケット情報を確認する

  1. Web サイトにアクセスしようとしているユーザーのコンテキストで、(管理コマンド プロンプト ウィンドウではなく) 標準のコマンド プロンプト ウィンドウを開きます。

  2. 指定された順序で次のコマンドを実行します。

    klist purge
    klist get http/iisserver.contoso.com
    

    これらのコマンドの出力は、次の抜粋のようになります。

    Current LogonId is 0:0xa8a98b
    A ticket to http/iisserver.contoso.com has been retrieved successfully.
    
    Cached Tickets: (2)
    
    #0>     Client: John @ CONTOSO.COM
            Server: krbtgt/CONTOSO.COM @ CONTOSO.COM
            KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96
            Ticket Flags 0x40e10000 -> forwardable renewable initial pre_authent name_canonicalize
            Start Time: 11/28/2022 1:28:11 (local)
            End Time:   11/28/2022 11:28:11 (local)
            Renew Time: 12/5/2022 1:28:11 (local)
            Session Key Type: AES-256-CTS-HMAC-SHA1-96
            Cache Flags: 0x1 -> PRIMARY
            Kdc Called: DCA.contoso.com
    
    #1>     Client: John @ CONTOSO.COM
            Server: http/iisserver.contoso.com @ CONTOSO.COM
            KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96
            Ticket Flags 0x40a10000 -> forwardable renewable pre_authent name_canonicalize
            Start Time: 11/28/2022 1:28:11 (local)
            End Time:   11/28/2022 11:28:11 (local)
            Renew Time: 12/5/2022 1:28:11 (local)
            Session Key Type: AES-256-CTS-HMAC-SHA1-96
            Cache Flags: 0
            Kdc Called: DCA.contoso.com
    

    この抜粋は、チケットが正常に取得されたことを示しています。 チケットの詳細は、[キャッシュされたチケット] セクションに "#1>" というラベルが付けられます。

IIS Web サービスが既定の資格情報を使用して IIS サーバーで実行されていることを確認します

Web サイトにアクセスしようとしているユーザーのコンテキストで、(管理 PowerShell プロンプト ウィンドウではなく) 標準の PowerShell プロンプト ウィンドウを開きます。

invoke-webrequest -Uri http://IIsserver.contoso.com -UseDefaultCredentials

これらのコマンドの出力は、次の抜粋のようになります。

StatusCode        : 200
StatusDescription : OK
Content           : <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
                    <html xmlns="http://www.w3.org/1999/xhtml">
                    <head>
                    <meta http-equiv="Content-Type" cont...
RawContent        : HTTP/1.1 200 OK
                    Persistent-Auth: true
                    Accept-Ranges: bytes
                    Content-Length: 703
                    Content-Type: text/html
                    Date: Mon, 28 Nov 2022 09:31:40 GMT
                    ETag: "3275ea8a1d91:0"
                    Last-Modified: Fri, 25 Nov 2022...

ターゲット サーバーのセキュリティ イベント ログを確認する

ターゲット サーバーのイベント ビューアーで、 Windows ログ>セキュリティ ログに移動します。 イベント ID 4624 (Audit Success) または 4625 (Audit Failure) のインスタンスを探します。

他のサービスが正しく機能することを確認する

ターゲット サーバー上の他のサービスが Kerberos 認証を処理できることを確認するには、次の手順に従います。

  1. ターゲット サーバーで、テストに使用するファイル共有を作成するか、既存のファイル共有を識別します。 自分 ("John" のロール) がフォルダーに対する読み取りアクセス許可を持っていることを確認します。

  2. クライアント コンピューターで (ユーザー "John" として) サインインし、Windows エクスプローラーを開きます。

  3. アドレス バーに「 \\IISServer.contoso.com \Software$」と入力します。

  4. ターゲット サーバーでイベント ビューアーを開き、セキュリティ イベントを確認します。 新しいイベント ID 4624 イベント、またはイベント ID 4625 イベントがあることを確認します。

  5. クライアント コンピューターで、コマンド プロンプトで klist tickets コマンドを実行します。 コマンド出力には、次の抜粋に示すように、 CIFS/IISServer.contoso.comのサービス チケットが含まれている必要があります。

    #1>     Client: John @ CONTOSO.COM
            Server: cifs/iisserver.contoso.com @ CONTOSO.COM
            KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96
            Ticket Flags 0x40a10000 -> forwardable renewable pre_authent name_canonicalize
            Start Time: 11/28/2022 1:40:22 (local)
            End Time:   11/28/2022 11:28:11 (local)
            Renew Time: 12/5/2022 1:28:11 (local)
            Session Key Type: AES-256-CTS-HMAC-SHA1-96
            Cache Flags: 0
            Kdc Called: DCA.contoso.com