Adam Automator

pokud již používáte vzdálené příkazy s PowerShell Remoting (PSRemoting), víte, jak pohodlná je tato funkce. Můžete se připojit k jednomu nebo více vzdáleným počítačům a spravovat je, jako by byly místní. PSRemoting závisí na vzdálené správě systému Windows (WinRm), aby se to stalo, a pokud nepoužíváte WinRM přes SSL, můžete se otevírat některým bezpečnostním problémům.

v tomto praktickém tutoriálu se dozvíte, jak nastavit systém Windows na klientovi a serveru tak, aby používal WinRM přes HTTPS (SSL) a jak používat certifikáty k ověření při použití WinRM přes HTTPS.

obsah

předpoklady

pokud byste chtěli sledovat tento návod, ujistěte se, že máte následující:

  • stroj Windows 7+ nebo Server 2008 R2, který slouží jako klientský počítač. Tento tutoriál bude používat systém Windows 10.
  • stroj Windows 7 + nebo Server 2008 R2+, který slouží jako serverový stroj. Tento výukový program bude používat systém Windows Server 2019.
  • přístup k účtu místního správce nebo účtu s právy místního správce na klientském i serverovém počítači.
  • zřízena infrastruktura veřejných klíčů služby Active Directory Certificate Services (ADCS) (PKI). Pomohlo by, kdybyste implementovali ADC pro implementaci výroby, ale pro tento tutoriál a testování je to volitelné. Výukový program bude předpokládat, že PKI je nastaven jako podnik nebo samostatná CA.

Proč používat WinRM přes SSL?

PSRemoting, po vybalení z krabice, používá WinRM a umožňuje vzdáleně spravovat klientské počítače. Jakmile PSRemoting vytvoří relaci přes WinRM, šifruje veškerou komunikaci z klienta na server. Také postup nastavení pro implementaci PSRemoting bez HTTPS je poměrně jednoduchý.

pokud PSRemoting již šifruje komunikaci relace, proč projít potížemi s nastavením něčeho jako ADC a správou certifikátů, když je již šifrována?

protože během procesu ověřování mohou být přihlašovací údaje odesílány v nezabezpečených formátech v závislosti na použitém typu ověřování.

jedním z nejjednodušších způsobů, jak zvýšit bezpečnost Psremotingu, je použití WinRM přes HTTPS místo HTTP. HTTPS zakóduje celý váš proud připojení, včetně ověřování v rámci vrstvy šifrování, kterou WinRM již používá. HTTPS také současně poskytuje způsob, jak ověřit server, ke kterému se připojujete, je to, co si myslíte, že je.

konfigurace WinRM s self-Signed certifikátem

pojďme nyní skočit do demonstrací. Pro první trik se naučíte, jak nastavit šifrování PSRemoting komunikace s WinRm přes SSL prostřednictvím certifikátu s vlastním podpisem.

použití certifikátu s vlastním podpisem je skvělý způsob, jak nastavit testovací prostředí bez obav o PKI, jako je ADC. Při použití self-signed certifikát, vygenerujete certifikát, který server sám podepíše, který v podstatě ručí za sebe.

existují certifikáty, které obvykle provádějí dvě úlohy; Ověřte připojení a zašifrujte jej. Použití certifikátu s vlastním podpisem implementuje pouze tento certifikát. Chcete-li ověřit identitu serveru, musíte vždy použít certifikáty poskytnuté PKI. Certifikáty poskytované PKI poskytují jediný zdroj důvěry vs. musí důvěřovat každému certifikátu podepsanému Samostatně ručně.

konfigurace WinRM přes SSL pomocí certifikátu s vlastním podpisem vyžaduje čtyři kroky na vysoké úrovni:

  1. vytvoření certifikátu s vlastním podpisem na cílovém stroji.
  2. konfigurace serveru WinRM webserver (listener) pro použití self-signed certifikát pro autentizaci.
  3. otevření příslušných portů na firewallu Windows cílového počítače.
  4. provedení příkazu k zahájení vzdáleného připojení na klientovi pomocí rutiny PowerShell jako Enter-PSSession.

Pojďme nyní projít každý krok.

vytvoření Self-Signed certifikátu

prvním krokem je generování self-signed certifikátu na serveru. Při připojení bude PSRemoting používat tento certifikát k šifrování veškeré komunikace.

na Serveru s konzolou Windows PowerShell otevřenou jako správce spusťte rutinu New-SelfSignedCertificate, jak je uvedeno níže. Spuštění níže uvedeného příkazu vygeneruje certifikát pro ServerB.domain.com v osobním obchodě s certifikáty místního stroje.

New-SelfSignedCertificate -Subject 'CN=ServerB.domain.com' -TextExtension '2.5.29.37={text}1.3.6.1.5.5.7.3.1'
vytvoření certifikátu s vlastním podpisem.
vytvoření certifikátu s vlastním podpisem.

parametr Subject by měl být plně kvalifikovaný název domény serveru. WinRm používá předmět k ověření identity serveru.

i když je server v pracovní skupině, vždy uveďte název domény, např. domain.com nebo laboratoř.místní. Při připojení k cílovému počítači musí název DNS, ke kterému se připojujete, přesně odpovídat tomuto názvu subjektu, připojení selže.

TextExtension umožňuje definovat použití klíče certifikátu (2.5.29.37), který definuje, k čemu je certifikát povolen. Definujte použití klíče pro autentizaci serveru ({text}1.3.6.1.5.5.7.3.1), abyste zajistili, že certifikát lze použít pouze k ověření identity serveru.

po spuštění New-SelfSignedCertificates vrátí otisk prstu vygenerovaného certifikátu. Uložte to, jak budete potřebovat pro další příkaz.

konfigurace posluchače WinRM

jakmile na serveru vytvoříte certifikát s vlastním podpisem, nakonfigurujte posluchače WinRm tak, aby tento certifikát začal používat pro autentizaci. Chcete-li to provést, použijte příkaz winrm create, jak je uvedeno níže.

Address=* v níže uvedeném příkazu informuje posluchače, aby poslouchal na jakékoli IP adrese nakonfigurované na serveru. Pokud má server nakonfigurováno více adres IP, můžete zde definovat konkrétní adresu IP.

nezapomeňte nahradit zástupný symbol <cert thumbprint here> otiskem palce vráceným v posledním kroku.

winrm create winrm/config/Listener?Address=*+Transport=HTTPS '@{Hostname="ServerB.domain.com"; CertificateThumbprint="<cert thumbprint here>"}'
vytvoření WinRM posluchač s self-signed certifikátem.
vytvoření WinRM posluchače s self-signed certifikátem.

otevření portu brány WinRM SSL Firewall

dále, pokud používáte bránu firewall systému Windows, budete muset povolit provoz HTTPS přicházející na server přes výchozí port HTTPS 5986.

otevřete port brány firewall pro WinRM přes HTTPS pomocí PowerShell spuštěním níže uvedeného příkazu.

$FirewallParam = @{ DisplayName = 'Windows Remote Management (HTTPS-In)' Direction = 'Inbound' LocalPort = 5986 Protocol = 'TCP' Action = 'Allow' Program = 'System'}New-NetFirewallRule @FirewallParam

připojení k serveru přes SSL

nyní jste nakonfigurovali vzdálený server Windows tak, aby přijímal připojení WinRM přes SSL. V tuto chvíli se vraťte ke klientovi a zahajte všechny příkazy PSRemoting, které chcete vyzkoušet. Můžete například zkusit rutinu Enter-PSSession nebo Invoke-Command . Teprve nyní se připojujete trochu jinak než s výchozím připojením HTTP.

připojení přes HTTPS obvykle vyžaduje jeden parametr UseSSL. Tento parametr říká příkazu, aby hledal HTTPS WinRM listener vs. http listener, jako by to bylo ve výchozím nastavení. Parametr UseSSL je k dispozici u více příkazů PSRemoting.

pro testování spusťte Enter-PSSession poskytnutím FQDN serveru, jak je definováno subjektem certifikátu s vlastním podpisem, objektem PSCredential pro definování uživatelského jména a hesla a nakonec parametrem přepínače UseSSL.

Enter-PSSession -ComputerName ServerB.domain.com -Credential (Get-Credential) -UseSSL

pokud spustíte výše uvedený příkaz, zobrazí se chybová zpráva, protože jste nakonfigurovali posluchače WinRM na serveru tak, aby používal certifikát s vlastním podpisem. Kdykoli se klient PSRemoting pokusí ověřit na serveru, pokusí se certifikát ověřit a nemůže. Self-signed certifikát nemá řetězec důvěry příkaz může následovat a selže.

selhání certifikační autority kontrola důvěry s vlastním podepsaným certifikátem.
selhání certifikační autority kontrola důvěryhodnosti s vlastním podepsaným certifikátem.

Chcete-li se připojit k serveru pomocí certifikátu s vlastním podpisem, musíte přepsat kontrolu důvěryhodnosti certifikátu. Můžete tak učinit vytvořením PSSessionOption s názvem SkipCACheck pomocí rutiny New-PSSessionOption a předáním příkazu, jak je uvedeno níže.

$PSSessionOption = New-PSSessionOption -SkipCACheckEnter-PSSession -ComputerName ServerB -Credential (Get-Credential) -SessionOption $PSSessionOption -UseSSL

můžete definovat mnoho různých objektů PSSessionOption a přidat možnosti pro vzdálené připojení, které nejsou zahrnuty přímo v rutině Enter-PSSession.

zkuste se znovu připojit a PowerShell by vás nyní měl vyzvat k zadání pověření. Jakmile je k dispozici, měli byste se nyní připojit k serveru pomocí WinRM přes SSL!

konfigurace WinRM s certifikátem podepsaným CA

pokud máte v úmyslu používat PSRemoting pomocí WinRM ve výrobě a chcete zůstat co nejbezpečnější, musíte se zaměřit na WinRM přes SSL pomocí certifikátu podepsaného certifikační autoritou (CA).

certifikáty podepsané CA udržují řetězec důvěry a jsou bezpečnější než jednoduché certifikáty podepsané samostatně, protože ověřují totožnost emitenta certifikátu.

pokud jste v prostředí služby Active Directory, jedním z nejčastějších způsobů nastavení CA je ADCs. S ADCS můžete nasadit certifikáty do zařízení a nakonfigurovat WinRM pro použití těchto certifikátů.

tento tutoriál bude předpokládat, že již máte nastavené ADC a pracujete ve svém prostředí.

pro rychlé nastavení můžete sledovat dokumentaci společnosti Microsoft, ale pro nasazení výroby byste měli konfiguraci důkladně prozkoumat, protože certifikační autorita je ve středu úsilí organizace o šifrování.

vytvoření požadavku na certifikát

prvním krokem při použití certifikátu vydaného CA je vytvoření certifikátu. Chcete-li vytvořit certifikát, musíte nejprve vydat žádost o certifikát pomocí žádosti o podpis certifikátu (CSR). Po vygenerování může být tato CSR odeslána do CA k vydání certifikátu.

kroky této sekce budou fungovat na nasazení ADCS, pokud se jedná o podnikovou CA nebo samostatnou CA. Pokud používáte podnikovou CA integrovanou reklamou, můžete urychlit zápis certifikátů, aniž byste prošli kroky v této části pomocí automatického zápisu certifikátu nebo šablon certifikátů.

na serveru (ServerB v tomto tutoriálu) vytvořte CSR:

  1. spusťte certlm.msc otevřete Správce certifikátů systému Windows.

2. Klepněte pravým tlačítkem myši na osobní obchod a vyberte všechny úkoly – > pokročilé operace – > vytvořit vlastní požadavek.

3. V tomto tutoriálu ponechte všechna pole jako výchozí, dokud se nedostanete na níže uvedenou stránku s informacemi o certifikátu. Až se sem dostanete, klikněte na rozbalovací nabídku podrobnosti a vyberte Vlastnosti.

vytvoření vlastní žádosti o certifikát.
vytvoření vlastní žádosti o certifikát.

4. Klikněte na kartu předmět a změňte typ na společný název.

5. Nyní zadejte plně kvalifikovaný název domény serveru, pokud je připojen k doméně, nebo pouze název hostitele, pokud není, a klikněte na Přidat.

určení předmětu žádosti o certifikát.
zadání subjektu pro žádost o certifikát.

Všimněte si, že pro použití s WinRM SSL listener, musíte použít společný název. Ostatní možnosti v seznamu mohou být zahrnuty, ale pro toto nasazení nejsou nutné.

6. Klikněte na kartu Rozšíření.

7. Pokud nepoužíváte ověřování založené na certifikátech, které bude zahrnuto později, rozbalte záhlaví rozšířeného použití klíče a přidejte ověření serveru. Tento typ použití klíče říká systému Windows, že certifikát by měl být použit pro autentizaci serveru. Mezi další možnosti patří ověřování klienta, podepisování kódu a šifrování dokumentů.

8. Pokud chcete nastavit ověřování založené na certifikátech, ujistěte se, že jste zvolili ověřování klienta, jak je uvedeno níže.

žádost o certifikát ověření klienta.
žádost o certifikát ověření klienta.

9. Dále klikněte na kartu soukromý klíč a všimněte si klíčových možností. Změňte výchozí velikost klíče z 1024 na nejméně 2048, abyste posílili zabezpečení páru klíčů.

v systému Windows jsou k dispozici také silnější kryptografičtí poskytovatelé, ale můžete čelit nekompatibilitě se starším softwarem.

10. Zavřete okno Vlastnosti certifikátu a uložte nastavení kliknutím na OK a kliknutím na Další pokračujte s výzvami.

11. Nyní zadejte cestu k výstupu požadavku na certifikát, kde jej můžete později načíst a kliknout na Dokončit.

po dokončení byste měli mít soubor s žádostí o certifikát.

žádost o certifikát

jakmile budete mít požadavek vytvořen, budete nyní muset tuto žádost odeslat do vaší CA, která vygeneruje certifikát. K tomu, že:

  1. přejděte na server ADCS na http://<server název FQDN> / certsrv / certrqxt.aplikace.
webová stránka Podání žádosti o certifikát.
webová stránka žádosti o certifikát.

2. Otevřete soubor žádosti o certifikát vytvořený dříve pomocí programu Poznámkový blok a zkopírujte text ze souboru žádosti o certifikát do pole žádosti. Pro další atributy tohoto certifikátu není vyžadováno nic.

3. Klikněte Na Odeslat. To odešle vaši žádost CA. Pak by vám měl ukázat ID požadavku, které bude vyžadováno později. Nech si to! Budeš to potřebovat později.

4. Nyní se připojte k serveru CA, který je součástí vašeho prostředí ADCS, pomocí Správce certifikátů systému Windows v místním počítači nebo pomocí RDP spuštěním certsrv.měsíc.

5. Klikněte na nevyřízené požadavky.

vydávání certifikátu z čekající žádosti.
vydávání certifikátu z nevyřízené žádosti.

6. Klepněte pravým tlačítkem myši na čekající požadavek, klikněte na všechny úkoly a klikněte na problém. Tím se schválí požadavek, který jste právě odeslali na základě ID požadavku z předchozího kroku.

zápis certifikátu

Nyní, když jste vydali certifikát na CA, je čas zaregistrovat certifikát na serveru, na kterém konfigurujete WinRM. Udělat:

  1. ze serveru, na kterém nastavujete WinRM přes SSL, přejděte na http://<server název FQDN> / certckpn.aplikace. Měli byste vidět jednu nevyřízenou žádost o certifikát.
Zobrazení stavu čekající žádosti o certifikát.
Zobrazení stavu čekající žádosti o certifikát.

v případě potřeby můžete získat veřejný certifikát z jiného počítače, ale počínaje serverem, který nastavujete pro WinRM přes HTTPS, proces zjednodušuje.

2. Vyberte požadavek, který jste odeslali ze seznamu, a stáhněte si řetězec certifikátů. Měli byste si stáhnout celý řetězec certifikátů, pokud server, který konfigurujete WinRM přes HTTPS, má váš CA jako kořenový server.

stahování řetězce certifikátů.
stahování řetězce certifikátů.

3. Otevřete soubor řetězce certifikátů. Měli byste vidět certifikát pro váš server a všechny certifikáty certifikační autority vyšší v řetězci. Pod win2.laboratoř.int je požadovaný certifikát a WIN2-CA je certifikát pro CA, který vydal certifikát pro win2.lab.int.

zobrazení certifikátů uvnitř řetězce certifikátů.
zobrazující certifikáty uvnitř řetězce certifikátů.

4. Poklepejte na jeden z certifikátů a v poli, které se otevře, klikněte na tlačítko Instalovat certifikát. Protože tento certifikát bude používán serverem a nikoli konkrétním uživatelem, změňte možnost na místní počítač.

Import certifikátu do místního úložiště certifikátů stroje.
Import certifikátu do místního úložiště certifikátů stroje.

5. Pokračujte v výzvě a ponechte vše jako výchozí. Výchozí hodnoty by měly umístit certifikát do důvěryhodného úložiště kořenových certifikací.

6. Nyní opakujte kroky 3-5 pro každý z dalších certifikátů v seznamu. Pokud máte více než jeden certifikát, ujistěte se, že všechny ostatní certifikáty jsou umístěny v obchodě zprostředkujících certifikačních autorit.

Vytvořte a nastavte WinRM HTTPS Listener

Nyní, když jsou nainstalovány všechny certifikáty, je čas nakonfigurovat WinRM na vašem serveru tak, aby tento certifikát používal pro posluchače.

s PowerShell otevřeným na serveru WinRm:

  1. spusťte níže uvedený příkaz a automaticky nastavte posluchače WinRm. Příkaz winrm to provede vyhledáním certifikátu v místním úložišti certifikátů počítače, který odpovídá požadavkům WinRM.
winrm quickconfig -transport:https

2. Brána Firewall systému Windows ve výchozím nastavení zablokuje Port HTTPS WinRM 5986. Chcete-li zajistit, aby brána firewall umožňovala příchozí port 5986, spusťte následující příkaz PowerShell:

$FirewallParam = @{ DisplayName = 'Windows Remote Management (HTTPS-In)' Direction = 'Inbound' LocalPort = 5986 Protocol = 'TCP' Action = 'Allow' Program = 'System' } New-NetFirewallRule @FirewallParam

testování připojení WinRM SSL

v tomto okamžiku jste připraveni se připojit. Pomocí oblíbených rutin PSRemoting jako Invoke-Command nebo Enter-PSSession se připojte k serveru a použijte parametr UseSSL.

Enter-PSSession -ComputerName ServerB.domain.com -UseSSL -Credential (Get-Credential)

vždy se ujistěte, že hodnota parametru ComputerName přesně odpovídá společnému názvu poskytnutému při vytváření certifikátu. Pokud se pokusíte připojit k jinému názvu hostitele nebo možná IP adrese hostitele, obdržíte chybu nesouladu certifikátu způsobující selhání připojení.

nastavení autentizace založené na certifikátech

Nyní byste již měli mít posluchače WinRM nastaveného pro použití HTTPS. Pokud ano, můžete také použít certifikát ověření uživatele k ověření jako místní uživatel na vzdáleném serveru. Použití uživatelského certifikátu je jedním z nejbezpečnějších, ale nastavení chvíli trvá. Zjistíte, že je to také hodně opakované práce, protože každý certifikát je jedinečný pro individuální klientský stroj.

ověřování založené na certifikátech funguje pouze s místními uživatelskými účty, nikoli s uživateli domény.

za předpokladu, že jste požadovali certifikát pro ověření klienta, jak je uvedeno v sekci vytvoření požadavku na certifikát, přečtěte si:

povolení ověřování certifikátů a mapování uživatele na serveru

  1. na serveru spusťte příkaz Set-Item, abyste povolili ověřování založené na certifikátech.
Set-Item WSMan:\localhost\Service\Auth\Certificate -Value $true

2. Dále spusťte Get-ChildItem a podívejte se do úložiště důvěryhodných certifikačních autorit Root a najděte otisk CA, který vydal certifikát ověření klienta. Chcete-li to provést, filtrujte certifikáty podle předmětu, který obsahuje název vašeho CA.

Get-ChildItem Cert:\LocalMachine\Root | Where-Object {$_.Subject -like 'CA-Name'}

3. Spusťte níže uvedený příkaz, kde SubjectName je předmětem uživatelského certifikátu, který jste zadali při vytváření certifikátu

CAThumbprint je otisk palce CA shromážděný předchozím příkazem a poté se zobrazí výzva k zadání pověření uživatelské jméno a heslo místního uživatele, které bude použito pro ověření založené na certifikátu.

New-Item WSMan:\localhost\ClientCertificate -Subject SubjectName -URI * -Issuer CAThumbprint -Credential (Get-Credential)

testování ověřování na základě certifikátu

Nyní, když je nastavení mapování certifikátu pro uživatele, použijte certifikát na klientském počítači k ověření bez poskytnutí pověření.

na klientovi v PowerShell získáte otisk palce klientského certifikátu hledáním v obchodě s osobními certifikáty.

Get-ChildItem Cert:\CurrentUser\My

Nyní zadejte otisk palce v parametru CertificateThumbprint na příkaz PSRemoting, jako je níže.

Enter-PSSession -ComputerName ServerName -CertificateThumbprint <Thumbprint>

Všimněte si, že autentizace založená na certifikátu je použitelná pouze s posluchačem HTTPS -UseSSL, na rozdíl od jiných metod ověřování, kde je třeba zadat použití SSL.

Nyní, když jste se naučili, jak nastavit WinRM přes SSL, přečtěte si více o PSRemoting v našem PowerShell Remoting: The Ultimate Guide post!

chcete se dozvědět více o PowerShell obecně, včetně hodně o PSRemoting? Podívejte se na PowerShell pro sysadminy, knihu!

Leave a Reply