web-dev-qa-db-ja.com

RADIUS:MSCHAPv2エラー691による認証

RADIUS経由でAcme Packet Net-Net 3820(SBC)に認証を設定する作業をしています。会計の面では問題なく機能しています。物事の認証面は別の問題です。パケットキャプチャから、アクセス要求メッセージが実際にRADIUSサーバーに到達し、その時点でRADIUSサーバーがドメインコントローラーとの通信を開始していることがわかります。次に、通信のチェーンがRADIUSに戻り、最後にSBCに戻ります。問題は、返される応答が常に理由コード16のアクセス拒否メッセージであることです(ユーザー資格情報の不一致により認証に失敗しました。提供されたユーザー名が既存のユーザーアカウントと一致しないか、パスワードが正しくありません)。これは、イベント4625および6273を確認できるセキュリティイベントログを確認することで確認できます。以下のイベントを参照してください(注:名前とIPは無害なものを保護するために変更されています)。

イベントID:6273


Network Policy Server denied access to a user.

Contact the Network Policy Server administrator for more information.

User:
    Security ID:            NULL SID
    Account Name:           real_username
    Account Domain:         real_domain
    Fully Qualified Account Name:   real_domain\real_username

Client Machine:
    Security ID:            NULL SID
    Account Name:           -
    Fully Qualified Account Name:   -
    OS-Version:         -
    Called Station Identifier:      -
    Calling Station Identifier:     -

NAS:
    NAS IPv4 Address:       10.0.0.10
    NAS IPv6 Address:       -
    NAS Identifier:         radius1.real_domain
    NAS Port-Type:          -
    NAS Port:           101451540

RADIUS Client:
    Client Friendly Name:       sbc1mgmt
    Client IP Address:          10.0.0.10

Authentication Details:
    Connection Request Policy Name: SBC Authentication
    Network Policy Name:        -
    Authentication Provider:        Windows
    Authentication Server:      RADIUS1.real_domain
    Authentication Type:        MS-CHAPv2
    EAP Type:           -
    Account Session Identifier:     -
    Logging Results:            Accounting information was written to the SQL data store and the local log file.
    Reason Code:            16
    Reason:             Authentication failed due to a user credentials mismatch. Either the user name provided does not map to an existing user account or the password was incorrect.

イベントID:4625


An account failed to log on.

Subject:
    Security ID:        SYSTEM
    Account Name:       RADIUS1$
    Account Domain:     REAL_DOMAIN
    Logon ID:       0x3E7

Logon Type:         3

Account For Which Logon Failed:
    Security ID:        NULL SID
    Account Name:       real_username
    Account Domain:     REAL_DOMAIN

Failure Information:
    Failure Reason:     Unknown user name or bad password.
    Status:         0xC000006D
    Sub Status:     0xC000006A

Process Information:
    Caller Process ID:  0x2cc
    Caller Process Name:    C:\Windows\System32\svchost.exe

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

Detailed Authentication Information:
    Logon Process:      IAS
    Authentication Package: Microsoft_AUTHENTICATION_PACKAGE_V1_0
    Transited Services: -
    Package Name (NTLM only):   -
    Key Length:     0

This event is generated when a logon request fails. It is generated on the computer where access was attempted.

The Subject fields indicate the account on the local system which requested the logon. This is most commonly a service such as the Server service, or a local process such as Winlogon.exe or Services.exe.

The Logon Type field indicates the kind of logon that was requested. The most common types are 2 (interactive) and 3 (network).

The Process Information fields indicate which account and process on the system requested the logon.

The Network Information fields indicate where a remote logon request originated. Workstation name is not always available and may be left blank in some cases.

The authentication information fields provide detailed information about this specific logon request.
    - Transited services indicate which intermediate services have participated in this logon request.
    - Package name indicates which sub-protocol was used among the NTLM protocols.
    - Key length indicates the length of the generated session key. This will be 0 if no session key was requested.

したがって、一見すると、問題は無効なユーザー名またはパスワードの不一致の場合にすぎないように見えます。これは、MSCHAPv2応答に691のエラーコードがあることがわかるパケットキャプチャでさらに確認されます(ユーザー名またはパスワード、あるいはその両方がドメインで無効であるため、アクセスが拒否されました)。問題は、有効なユーザー名を使用していることを知っていて、トラブルシューティングのために作成した新しいユーザー名を含め、多くのユーザー名を試してみたことです。不一致のパスワードでないことを確認するためにパスワードをリセットした回数がわかりません。端末のエンコードの問題がないことを確認するために、かなり短く、文字のみを含むパスワードを使用することも確認しました(SSHクライアント経由でSBCに接続します)。また、SBCとRADIUSサーバー間の通信中に使用される共有シークレットを使用して、同じことを行いました。ログイン時にユーザー名にドメイン名のプレフィックスを付けてみました(ただし、それは必要ではないと思います)。また、ユーザーの完全なUPNを使用してログインしようとしました。いくつかのRADIUSテストクライアント(NTRadPing、RadiusTestなど)を試しましたが、MSCHAPv2をサポートしていないか、EAP-MSCHAPv2のみをサポートしています。 PHPのPECL RADIUSモジュールを使用して自分のクライアントを作成しました。それでもエラーコード691のMSCHAPv2認証で常に失敗するようです。そうでないことを確認するために可能な限りのことをしたのに、なぜ無効なユーザー名や不正なパスワードの応答が返されるのかについて誰かが何か考えを持っていますか?

RADIUS構成の仕様は次のとおりです。

  • Windowsサーバー2012 R2
  • アカウンティング用のSQL Server 2012バックエンドデータベース。
  • サーバーはドメインで承認されており、 "RASおよびIASサーバー"グループのメンバーです。そのグループは、テストに使用しているアカウントにアクセスできます。
  • テストしているアカウントでは、[ダイヤルイン]プロパティタブで[NPSネットワークポリシーによるアクセスの制御]オプションがオンになっています。
  • 上記のイベントから、クライアントフレンドリ名を適用していることがわかるIPアドレスで単に一致するように構成されたRADIUSクライアント。
  • 接続要求ポリシー:上記の「SBC Authenication」ポリシーが適用されています。唯一の条件は、わかりやすい名前に正常に一致する正規表現です。
  • ネットワークポリシー:上記のイベントに見られるように、何も適用されていません。トラブルシューティングの目的で、処理順序に対して「1」に設定されたネットワークポリシーを作成しました。その唯一の条件は、現在、任意の時間、任意の日に設定されている曜日と時間の制限です。
  • 認証方法はMSCHAPv2またはMSCHAPv2のみに設定されています(ユーザーはパスワードの有効期限が切れた後でパスワードを変更できます)。これをネットワークポリシーだけに追加してみました。また、これを接続要求ポリシーに追加して、ネットワークポリシーの認証方法を上書きするように設定しようとしました。
  • ドメイン内にPEAPを使用してワイヤレスクライアントを認証する他のRADIUSサーバーがあり、すべて正常に動作します。ただし、これはMSCHAPv2でのみ機能する必要があります(EAPなし)。
  • 他のすべての構成はデフォルトに設定されています。

考慮すべき他の唯一の注意事項は、上記のイベントでセキュリティIDが「NULL SID」であることがわかります。これがログオンの失敗の間で特に一般的であることを知っていますが、この問題が無効なユーザー名または不正なパスワードを示していることを考えると、おそらくこの場合問題になります。また、このサーバーは、Active Directoryの同じコンピューターアカウントを使用して再構築されています。再構築する前にうまくいったかどうかはわかりません。基本的に、このサーバーを構築し、SQLの役割を別のサーバーに分離することを決定した場合にのみ、サーバーをドメインに承認し、SQLを追加しました。 SQLをアンインストールするのではなく、マシンを再構築しました。ただし、Windowsを再インストールする前に、コンピューターアカウントをリセットしました。これは重要ではないと思いますが、以前に承認されたNPSサーバーの同じSIDを再利用すると問題が発生するという奇妙な癖がある場合は指摘します。

全体としては、これはかなり基本的な設定であり、うまくいけば、誰かが何が起こっているのかを理解するための十分な情報を提供できたと思います。 RADIUSサーバーに関して言えば、これに対する私の理解が少し基本的なものであるとすれば申し訳ありませんが、私はここの新しい人だと言えるでしょう。

編集1:

この問題をさらにトラブルシューティングするために、テスト用に追加のサーバーを起動してみました。これが私が実行した追加のテストです。

複数のドメイン

これを3つの異なる分離ドメインで試しました。テストドメインと運用ドメイン、およびExchangeとConfigMgrに加えられた変更を除いて、カスタマイズの方法がほとんどないプライベートホームドメインの両方。上記の結果はすべて同じです。

VPNサービス

Windows Server 2012 R2を使用して、標準のVPNセットアップを実行するために別のサーバーを立ち上げました。その意図は、VPNでRADIUS認証を使用できるかどうかを確認することであり、それが機能する場合は、SBCに問題があることがわかります。ただし、RADIUSを使用するように構成する前に、ローカルVPNサーバー上の標準のWindows認証で機能することを確認しようとしました。興味深いことに、RADIUSサーバーと同じイベントがログに記録されて失敗します。クライアントマシンはWindows 8.1ワークステーションです。繰り返しますが、ワイヤレス環境専用に使用されているRADIUSサーバーが稼働していることを指摘します。これらのRADIUSサーバーと私が問題を抱えているサーバーの唯一の違いは、動作しているワイヤレスサーバーがMSCHAPv2ではなくPEAPを使用していることです。

FreeRADIUS

現在、私はLinuxの第一人者ではありませんが、私はそれを稼働させていると信じています。コンソールにログオンしたときに、ntlm_authを使用してユーザーを認証できます。ただし、radiusdサービスがntlm_authを使用して本質的に同じことを実行しようとすると、失敗し、Windowsサーバーで取得したのと同じメッセージが返されます(E = 691)。 radiusdサービスをデバッグモードで実行しているので、何が起こっているのかをより詳しく確認できます。必要に応じて、取得したデバッグ情報を投稿できます。しかし、私が特に興味を持っているのは次のような行です。

(1) ERROR: mschap : Program returned code (1) and output 'Logon failure (0xc000006d)'
(1) mschap : External script failed.
(1) ERROR: mschap : External script says: Logon Failure (0xc000006d)
(1) ERROR: mschap : MS-CHAP2-Response is incorrect

ここで注意すべきことは、基本的にはまだ「間違ったパスワード」メッセージが表示されますが、実際のステータスコード(0xc000006d)は、Windowsサーバーで取得したもの(0xc000006a)とは少し異なるということです。このドキュメントから、これらのコードの意味を確認できます NTSTATUS値 。このFreeRADIUSサーバーの良いところは、デバッグモードのときにすべてのチャレンジ応答を確認できることです。したがって、MSCHAPv2応答の計算方法を理解できる場合は、それを比較して、これが単に誤計算されたチャレンジ応答であるかどうかを確認できます。 Update6aコードが6dコードのサブステータスコードにすぎないことに気づきました。 Windowsサーバーと何も変わらないので、チャレンジレスポンスで計算エラーが発生するかどうかはまだ疑問です。

現在、RADIUSサーバーのWindows Server 2008 R2インスタンスを起動して、それが役立つかどうかを確認しています。しかし、今まで誰にも気付かれずにW2K8 R2とW2K12 R2の間でサービスに何か問題があったとしたら、私は驚きます。これでうまくいかない場合は、Microsoftにケースをオープンする必要があるかもしれません。 更新:W2K8 R2と同じ結果。

更新2

私はMicrosoftとの訴訟を起こし、彼らは数週間その問題に取り組みました。最初の1週間は、これをワイヤレスに関係がないこと、および接続しようとしているデバイスがEAPの形式を使用するRADIUSサーバーに対する認証をサポートしていないことを理解してもらうために時間を費やしました。認証方法をMSCHAPv2のみとしてセットアップしようとしていることを彼らが最終的に理解すると、彼の最初の反応は単に「それを行うことはできません」でした。彼は、トップボックスで何らかの形式のEAPまたはPEAPセットアップが常に必要な場合でも(その認証方法ウィンドウのPAPおよびその他の "安全性の低い方法"の場合でも)と述べました。これは私には非常にありそうにないようだったので、私はこれを述べ、それから彼が件名を変更し、いかなるドキュメントも提供しなかったことを示すいくつかのドキュメントを求めました。問題はユーザー名とパスワードにあるようだと彼らが私に言ったとき、私がマイクロソフトと一緒に何も得ていないことが明らかになりました。したがって、プレミアチケットの件名にE691エラーコードが含まれている場合、ユーザー名とパスワードの不一致を意味し、私の非常に長い段落にも関わらず、私がそれを確実にするために可能な限りのことをしたと説明したのに、2週間かかって結論が出ました。はユーザー名とパスワードに問題はありません。

残念ながら、私のプロジェクトリーダーは、プレミアサポートの時間をこれ以上無駄にしたくないので、ケースをクローズしました。おそらく、SBCローカル共有ログインを処理し、アカウンタビリティを実施する他の方法をセットアップするだけです(アクセス権を持つのは4人だけです)。

プロジェクトを削除するように指示される前に、FreeRADIUSサーバーをMSCHAPv2のみを使用して機能させることができましたが、FreeRADIUSサーバーのローカルアカウントを使用してのみこれを実行できたことを指摘します。これは、FreeRADIUS構成ファイルのどこかに保存されているプレーンテキストのパスワードです。したがって、明らかにソリューションではありませんが、少なくとも、SBCがMSCHAPv2を介してRADIUSサーバーと正しく通信していることを示しています。これと私が上で述べた他の事柄は、問題がRADIUSサーバーとドメインコントローラーの間にあると私に信じさせます。 NTLM認証は、サーバーにローカルでログインしているときにWindows RADIUSサーバーとFreeRADIUSサーバーの両方で正常に機能します(テストアカウント経由でWindows RADIUSにログインでき、ntlm_authを使用すると、FreeRADIUSサーバーで認証に成功します。ユーザー名とパスワードのみのコマンド)、どちらのRADIUSサーバーもRADIUSアクセス要求として入ってくるときにユーザーを介して認証されないようです(FreeRADIUSは、ローカルにログインするときに使用するのと同じntlm_authコマンドを使用しますが、ユーザー名とチャレンジレスポンスを提供するコマンドのユーザー名とパスワード。

だから、ここでこのスレッドを終了しますが、私はこれを監視し、誰かが何かを投稿した場合に通知します。誰かが解決策を投稿したりコメントを書いたりした場合、私は返信します。

7
New Guy

ソリューション

RADIUSサーバーを使用してSBCへのアクセスを制御するこのアプローチを放棄してから約1か月後、考えられる解決策を見つけました。もちろん、この時点でも他のプロジェクトで忙しく戻ってこのソリューションを試してみるので、これで問題が解決するかどうか100%とは言えませんが、説明したら、これが答えであることにおそらく同意するでしょう。

私の同僚の1人は、MSCHAPv2がパスワードのチャレンジと応答を生成するためにNTLMに依存していることがわかったときに、さまざまな議論を交わしているMicrosoft会議に出席していました。 Windowsで使用する場合、プレーンな古いMSCHAPおよびMSCHAPv2(つまり、EAP-MSCHAPv2またはPEAPではない)は、デフォルトでNTLMv1を使用しますRASサービス。

多くの人が既に追いついているように、私たちは多くの管理者と同様に、DCでNTLMv1を無効にしているため、DCはNTLMv2要求のみを受け入れます。これが、私が引き続き取得した失敗が「不正なパスワード」エラーであった理由を説明しています。 DCに送信されるパスワードはNTLMv1形式であり、無視されていました。

これに気付いた後、さらに調査を行うことができ、次の記事を見つけました。

http://support.Microsoft.com/kb/2811487

この記事では、前述のE = 691エラーコードを含め、同じ現象について説明します。この記事では、MSCHAPv2応答の作成時に強制的にRASサービスがNTMLv2を使用するようにするための回避策も提供します。問題が何であるかを正確に理解した後、これらの記事を見つけるのがいかに簡単かおかしいです。

繰り返しますが、すでに廃止されたRADIUSサーバーを再構築する時間がないため、これが問題であることを確認する必要がありますが、可能性があります。他の誰かがこの問題に遭遇した場合に備えて、この可能な解決策を投稿したかったのです。

編集-確認済み

これらのSBCでより大きな役割を担うように求められたため、このプロジェクトに戻ってWindows RADIUS serverを再び立ち上げました。今回は、リンクで説明されているレジストリキーを適用しました上記のRADIUSサーバーとSBCの間の通信のパケットキャプチャを取得した後、実際には、SBCで「Access Accept」メッセージが返されていることがわかります。したがって、少なくとも、私たちが抱えていた問題は上記のとおりです。

TL; DR

DCでNTLMv1が無効にされました。 RADIUSサーバーがNTLMv2を使用するように強制するようにレジストリキーを設定すると、問題が修正されました。

3
New Guy

私の経験から、MS NPSは、RADIUS事前共有キーが一致しない場合、次のように通知します。

Event 14: A RADIUS message was received from RADIUS client x.x.x.x with an invalid authenticator. This is typically caused by mismatched shared secrets. Verify the configuration of the shared secret for the RADIUS client in the Network Policy Server snap-in and the configuration of the network access server.

イベントログに記録されます。

キャプチャしたトラフィックにAccess-Rejectが表示されるという事実は、事前共有キーが両側で一致することも意味します。そうでない場合、NPSは応答せず、Access-requestの後にRADIUSパケットは表示されません。 。

提供したログで重要なことは次のとおりです。

Sub Status:     0xC000006A

これは、「ユーザー名は正しいがパスワードが間違っている」ことを意味します。それは私の見解ではかなり明白です。

MS-CHAPv2は、リバーシブル暗号化を使用してパスワードを保存する必要がないことを知っていますが、これを確認するには、使用するユーザーアカウントにこのチェックボックスを設定し、その後、パスワードを再設定して、再試行してください。

0
Max Doronin

新しい2012R2ドメインコントローラーを既存の2008R2環境に追加した後、NPSサーバーからの認証で同じ問題が発生しました。新しい2012R2ドメインコントローラーでは、NTLMv1が無効になっていますが、2008R2ドメインコントローラーでは有効になっています。

ユーザーのアクセスをランダムに拒否するNPSサーバー(2008R2を実行)。

次のイベントがNPSサーバーに記録されました:イベントID 6273(セキュリティログ)ネットワークポリシーサーバーがユーザーへのアクセスを拒否しました。理由コード:16理由:ユーザー資格情報の不一致により認証が失敗しました。指定されたユーザー名が既存のユーザーアカウントにマップされていないか、パスワードが正しくありません。

2008R2 dcに接続されたNPSサーバーがすべて魅力的に機能しました。しかし、2012R2のDCへのアクセスは拒否されました。新しい2012R2ドメインコントローラーでNTLMv1が無効になっているためです。

MS KB記事( http://support.Microsoft.com/kb/2811487 )のソリューションが完全に機能することを確認できます!。

この素晴らしい記事をありがとうございました!!!この問題を解決するのに非常に多くの時間を節約できました。 -)

0
Marco

FYI-動作しているRADIUS + MSCHAPシステムをアップグレードした後、同じエラーが発生しました。

「\ 000E = 691 R = 1」

Winbindソケットへの権利を放棄するようなある種のサンバ変更があったことがわかりました。 winbindd_privグループにfreeradを追加すると、問題が修正されました。

/ etc/group:winbindd_priv:x:110:freerad

0
Rick Romero