web-dev-qa-db-ja.com

リモートデスクトップ接続を介してユーザーに期限切れパスワードの変更を許可する

情報:

  • ドメインの一部ではなく、ADを持っていないサーバー(Windows 2012 R2)を使用しなければならない状況があります。これは私の選択ではなく、最適ではありませんが、私の管理外です。

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

  • AD/Exchangeは全体像の一部ではないため、ユーザーにはパスワードが期限切れになるという通知はありません。

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

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

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

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

質問:私は、ターミナルプログラムがWindowsリモートデスクトップ接続プロトコルの上に置かれていると仮定しています。端末プログラムでネットワークレベル認証クライアント側を無効にすると、Windows内蔵のリモートデスクトップ接続マネージャを使ってこれを無効にすることもできます。残念ながら、このオプションは接続マネージャのGUIには表示されず、NLA固有の ".RDP"ファイルにはパラメータも表示されません。

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

13
guht

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

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

enablecredsspsupport:i:0

あなたがさらに参照または読書を必要とするならば、ここに行きなさい: ネットワークレベル認証とCredSSPの専制政治

9
guht

これを解決するには、2つの方法があります。

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

次の指示は、woshub.comの記事からのものです Windows Server 2012のRD Webアクセスを介してユーザーに期限切れパスワードの再設定を許可します

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

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

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

    enter image description here

  2. 右側のペインでPasswordChangeEnabledparameterを見つけて、その値をtrueに変更します。

    enter image description here

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

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

    enter image description here

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

    enter image description here

    Tip。特別なパッチ - KB2648402をインストールした後も、同じWindows Server 2008 R2機能を利用できるようになります。


2.パスワードの有効期限が切れていることをユーザーに通知するプロンプトを有効にする

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

私は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への接続が必要です。

0
MadBoy