ユーザーがリモートデスクトップ接続経由で期限切れのパスワードを変更できるようにする


13

情報:

  • ドメインの一部ではなく、ADを持たないサーバー(Windows 2012 R2)を使用せざるを得ない状況があります。これは私の選択ではなく、最適ではありませんが、制御できません。

  • また、RDPを介してこのサーバーに接続するローカルユーザーがいて、ローカルユーザーにはパスワード有効期限ポリシーがあります。

  • AD / Exchangeは画像の一部ではないため、ユーザーはパスワードの有効期限が切れそうだという通知を受け取りません。

問題: 問題は、ユーザーのパスワードの有効期限が切れ、リモートデスクトップ接続を使用してログインしようとしたときです。パスワードを変更することはできません。

サーバー側で「ネットワークレベル認証を使用してリモートデスクトップを実行しているコンピューターからのみ接続を許可する」のチェックを外したため、サーバーは着信RDPセッションからNLAを要求しません。

ただし、Windowsリモートデスクトップ接続マネージャーを使用する場合、NLAを強制しているようです。

「ターミナル」リモートデスクトップクライアントを使用している場合、クライアント側に「ネットワークレベル認証」の使用を無効にするオプションがあります。ターミナルクライアントを介してNLAを無効にし、サーバーに接続すると、ユーザーの有効期限が切れたパスワードを変更できます。

質問: ターミナルプログラムがWindowsリモートデスクトップ接続プロトコルの最上位にあるだけで、ターミナルプログラムを介してネットワークレベル認証クライアント側を無効にできるのであれば、おそらく間違っていると思います。 Windowsのビルトインリモートデスクトップ接続マネージャーを使用してこれを無効にします。残念ながら、接続マネージャーGUIにはこのオプションが表示されず、NLA固有の「.RDP」ファイルにはパラメーターが表示されません。

クライアント側のリモートデスクトップ接続マネージャーで[バージョン情報]をクリックすると、[ネットワークレベル認証がサポートされています]と表示されます。この言葉遣いは、それを使用することはオプションであると信じさせてくれますが、接続マネージャーでこれをオフにする方法はありません。ところで、この特定の接続マネージャーはv10です。


1
目標を達成するための提案された方法ではなく、根本的な目標に焦点を合わせるために、質問(具体的にはタイトル)を編集しました。XY問題を参照してください。
私は、モニカの復活

回答:


13

これは、次の2つのアプローチで解決できます。

1. RD Webアクセスロールをインストールし、リモートパスワード変更オプションを有効にします

次の指示はwoshub.comの記事「Windows Server 2012のRD WebAccessを介してユーザーが期限切れのパスワードをリセットできるようにする」からのものです

Windows 2012/2012 R2では、リモートユーザーがRD Webアクセスサーバー上の特別なWebページを使用してパスワード(現在または期限切れのパスワード)を変更できるオプションが登場しました。パスワードは次のように変更されます。ユーザーは、RD Webアクセスロールを持つサーバーの登録Webページにサインインし、特別なフォームを使用してパスワードを変更します。

リモートパスワード変更オプションは、リモートデスクトップWebアクセス(RD Webアクセス)ロールを持つサーバーで使用できますが、既定では無効になっています。パスワードを変更するには、C:\ Windows \ Web \ RDWeb \ Pages \ en-USにあるスクリプトpassword.aspxが使用されます

  1. パスワード変更オプションを有効にするには、構成されたRD Webアクセスロールを持つサーバーでIISマネージャーコンソールを開き、[サーバー名]->サイト->デフォルトWebサイト-> RDWeb->ページに移動し、セクションアプリケーション設定を開きます。

    ここに画像の説明を入力してください

  2. 右側のペインで、PasswordChangeEnabledパラメーターを見つけ、その値をtrueに変更します

    ここに画像の説明を入力してください

  3. 次のWebページにアクセスして、パスワード変更メカニズムをテストできます。

    https://RDSServerName/RDWeb/Pages/en-US/password.aspx

    ここに画像の説明を入力してください

  4. 期限切れのパスワードでRD Webアクセスサーバーに接続しようとすると、ユーザーはpassword.aspx Webページにリダイレクトされ、パスワードを変更するように求められます。

    ここに画像の説明を入力してください

    ヒント。同じWindows Server 2008 R2機能は、特別なパッチKB2648402をインストールした後に利用可能になります。


2.保留中のパスワードの有効期限をユーザーに通知するプロンプトを有効にします

  1. gpedit.mscRDSHサーバーで実行して、ローカルグループポリシーを開きます
  2. にナギバテ Computer Configuration\Windows Settings\Local Policies\Security Options
  3. 設定を編集します対話型ログオン:有効期限が切れる前にパスワードを変更するようユーザーに要求し、14などの妥当な日数を指定します。
  4. リモートデスクトップ経由でログインしたユーザーを含むユーザーは、パスワードの有効期限が切れる前に通知を受け取ります。

@twistyに感謝します。リモートデスクトップサーバーの役割をインストールすることもオプションではなかったことに言及しました。ただし、これは同様の状況にある他の人にとっては素晴らしい情報です。プロンプトは知っておくと良いことです!
guht

3
次に、パスワードを変更できるようにするために、サーバークライアントでNLAを無効にする以外に選択肢はありません。危険なことに、これによりRDP接続のセキュリティが大幅に低下します。
私は、モニカを復活させる

10

これは、「enablecredsspsupport」と呼ばれる.RDP構成ファイルのリストされていないプロパティによって制御されます。これを「0」に設定すると、RDPセッションでログインページが読み込まれ、ユーザーは期限切れのパスワードを変更できます。

.RDP構成ファイルで必要な正確な構文は次のとおりです。

enablecredsspsupport:i:0

さらに参照または参照が必要な場合は、こちらをご覧ください: ネットワークレベル認証とCredSSPの圧制


7
これは、サーバーがNLAを必要としない場合にのみ機能します。それ以外の場合、リモートコンピューターではネットワークレベルのサポートが必要ですが、ローカルコンピューターではサポートされていないというメッセージが表示されます。リンクされた記事の段落を引用して、この設定が実際に行うことを説明する必要があります。
simlev

1
注:リモートデスクトップ接続の[保存]ボタンをクリックすると、構成ファイルDefault.rdcが作成されます。([名前を付けて保存]ボタンをクリックして、ファイルが保存されているディレクトリを確認します。)これは、デフォルトでこの設定が必要な場合に編集するファイルです。または、必要なときに手動で開く別の.RDPファイルに保存することもできます。
バンファー

3

NLAを有効にしているため、どのオプションも機能しませんでした。PowerShellを使用してパスワードを変更する方法を次に示します。RDPにログインできない場合に、期限切れのパスワードを変更する方法に関する詳細なストーリーをご覧ください

function Set-PasswordRemotely {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory = $true)][string] $UserName,
        [Parameter(Mandatory = $true)][string] $OldPassword,
        [Parameter(Mandatory = $true)][string] $NewPassword,
        [Parameter(Mandatory = $true)][alias('DC', 'Server', 'ComputerName')][string] $DomainController
    )
    $DllImport = @'
[DllImport("netapi32.dll", CharSet = CharSet.Unicode)]
public static extern bool NetUserChangePassword(string domain, string username, string oldpassword, string newpassword);
'@
    $NetApi32 = Add-Type -MemberDefinition $DllImport -Name 'NetApi32' -Namespace 'Win32' -PassThru
    if ($result = $NetApi32::NetUserChangePassword($DomainController, $UserName, $OldPassword, $NewPassword)) {
        Write-Output -InputObject 'Password change failed. Please try again.'
    } else {
        Write-Output -InputObject 'Password change succeeded.'
    }
}

単純に実行するSet-PasswordRemotelyと、ユーザー名、古いパスワード、新しいパスワード、ドメインコントローラー、およびパスワードの変更という4つの質問が表示されます。ドメインに参加していないPCでも動作します。DCへの接続が必要です。


ECHO%LOGONSERVER%を使用してドメインコントローラーを取得できます。これと上記のpowershellはうまく機能しました
ケビンスキー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.