Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

HTTPSを介したPowerShellリモート処理(WinRM)の構成

既定では、PowerShell Remotingセッションのトラフィックは、HTTP(TCP / 5985)またはHTTPS(TCP / 5986)のどちらのトランスポートプロトコルが使用されているかに関係なく暗号化されます。とにかく、すべてのトラフィックはAES-256キーを使用して暗号化されます。ただし、ADフォレストの外部またはワークグループ内のリモートコンピューターに接続する場合(Kerberosはとの信頼関係を確立できません)、中間者攻撃のリスクがあります。サードパーティのコンピューターに接続するときは、PSRemotingに常にHTTPSトランスポートを使用することをお勧めします。

この記事では、HTTPS経由でPowerShellRemotingを構成する方法を説明します。 SSL証明書を使用します。 HTTPSを介したPSRemotingセッションは、ADドメイン/フォレスト外のコンピューターに接続するときに高いセッションセキュリティレベルを提供します。

以下の手順では、PowerShell RemotingoverHTTPSを使用して接続するWindowsを実行しているリモートデバイスを構成する方法について説明します。

Windowsのネットワークの場所がプライベートまたはドメインに設定されていることを確認してください:

Get-NetConnectionProfile

次のコマンドを使用して、WinRMとPSRemotingを有効にします。

Enable-PSRemoting -Force

ドメインでは、GPOを使用してWinRMを構成できます。

WinRMのHTTPSを構成するには、最初に、接続するコンピューターでSSL証明書を作成する必要があります。証明書は、WinRMトラフィックを暗号化するために使用されます。 PowerShellを使用して自己署名証明書を作成する方が簡単です。ドメイン環境では、自動登録を使用してWinRM証明書を自動的に発行できます。

証明書のDNS名としてコンピューター名とそのIPアドレスを指定します(ネットワークにDNSサーバーがない場合に便利です)。証明書のサブジェクト代替名の両方の値を取得し、PowerShellを使用して自己署名証明書を生成できます:

$hostName = $env:COMPUTERNAME
$hostIP=(Get-NetAdapter| Get-NetIPAddress).IPv4Address|Out-String
$srvCert = New-SelfSignedCertificate -DnsName $hostName,$hostIP -CertStoreLocation Cert:\LocalMachine\My
$srvCert

新しいSSL証明書は、コンピューターの個人証明書ストアに表示されます。

HTTPSを介したPowerShellリモート処理(WinRM)の構成

デフォルトでは、WindowsのPowerShell Remoting用に異なるポートに2つのリスナーが作成されます:

  • ポート5985のHTTP
  • ポート5986のHTTPS

以下に示すように、アクティブなWSManリスナーのリストを取得できます。

Get-ChildItem wsman:\localhost\Listener

デフォルトのHTTPおよびHTTPSリスナーを削除します:

Get-ChildItem wsman:\localhost\Listener\ | Where-Object -Property Keys -like 'Transport=HTTP*' | Remove-Item -Recurse

新しいHTTPSリスナーを作成し、それに証明書をバインドします:

New-Item -Path WSMan:\localhost\Listener\ -Transport HTTPS -Address * -CertificateThumbPrint $srvCert.Thumbprint -Force

HTTPSを介したPowerShellリモート処理(WinRM)の構成

WinRM HTTPSトラフィックを許可するWindowsファイアウォールルールを作成するか、アクティブであることを確認します。

New-NetFirewallRule -Displayname 'WinRM - Powershell remoting HTTPS-In' -Name 'WinRM - Powershell remoting HTTPS-In' -Profile Any -LocalPort 5986 -Protocol TCP

WinRMサービスを再起動します:

Restart-Service WinRM

次のコマンドを使用して、WinRMHTTPSリスナーがバインドされている証明書のフィンガープリントを確認できます。

WinRM e winrm/config/listener

リモートホストが構成されます。次に、SSL証明書をCERファイルにエクスポートする必要があります。

Export-Certificate -Cert $srvCert -FilePath c:\PS\SSL_PS_Remoting.cer

WinRMサーバーとクライアントの構成では、暗号化されていない接続は許可されないことに注意してください(デフォルト):

dir WSMan:\localhost\Service | ? Name -eq AllowUnencrypted
dir WSMan:\localhost\Client | ? Name -eq AllowUnencrypted

HTTPSを介したPowerShellリモート処理(WinRM)の構成

必要に応じて、次のように暗号化されていない接続を無効にすることができます。

winrm set winrm/config/service '@{AllowUnencrypted="false"}'
winrm set winrm/config/client '@{AllowUnencrypted="false"}

CERファイルを管理コンピューターにコピーし、以下のコマンドを使用してインポートします(または、GPOを使用して証明書を他のコンピューターに展開します):

Import-Certificate -FilePath c:\PS\SSL_PS_Remoting.cer -CertStoreLocation Cert:\LocalMachine\root\

次に、WinRM HTTPSを使用してリモートWindowsホストに接続するには、 -UseSSLを使用する必要があります Enter-PSSessionおよびInvoke-Commandコマンドレットの引数。次の例では、PowerShellコンソールからIPアドレスを使用してリモートホストに接続します(このIPアドレスをTrustedHostsに追加していないことに注意してください):

$SessionOption = New-PSSessionOption -SkipCNCheck
Enter-PSSession -Computername 192.168.13.4 -UseSSL -Credential maxbak -SessionOption $SessionOption

HTTPSを介したPowerShellリモート処理(WinRM)の構成

SkipCNCheckを使用せずにIPアドレスで接続する場合 オプションの場合、次のエラーが発生します。The SSL certificate contains a common name (CN) that does not match the hostname


  1. BITSとPowerShellを使用して信頼性の低いネットワーク経由で大きなファイルをコピーする

    原則として、ローカルおよびグローバルネットワークでは、ファイルはSMB、FTP、またはHTTPプロトコルを使用してデバイス間で転送されます。これらすべてのプロトコルの問題は、大きなファイルのダウンロードを再開する際の問題です。これは、ネットワークの速度が遅い場合や信頼性が低い場合にさらに悪化する可能性があります。さらに、これらのプロトコルを使用してファイルをコピーする場合、サーバーと受信者の間で使用可能なすべての帯域幅が使用されるため、ネットワークパフォーマンスや他のネットワークアプリの動作に悪影響を与える可能性があります(ネットワークで正しいQoSポリシーを構成できるとは限りません)。装置)

  2. Windows10でDNSoverHTTPS(DoH)を有効にする

    DNS over HTTPS ( DoH )サポートはWindows 10 2004ビルド(2020年5月の更新)に表示されました。これで、Windows 10は、組み込みのDoHクライアントを使用してHTTPSプロトコルを介して名前を解決できます。この記事では、DNS over HTTPSプロトコルの用途、最新のWindows10ビルドでDNSoverHTTPSプロトコルを有効にして使用する方法について説明します。コンピューターがDNSサーバーに接続して名前を解決すると、クリアテキストでインターネット経由でDNS要求/応答を受信します。攻撃者は、man-in-the-middleタイプの