Adam The Automator
ha már futtat távoli parancsokat a PowerShell Remoting (PSRemoting) segítségével, akkor tudja, milyen kényelmes a funkció. Csatlakozhat egy vagy több távoli számítógéphez, és úgy kezelheti őket, mintha helyiek lennének. PSRemoting függ a Windows Remote Management (WinRm), hogy ez megtörténjen, és ha nem használja WinRM SSL, akkor lehet, hogy megnyitja magát néhány biztonsági problémák.
ebben a gyakorlati oktatóanyagban megtudhatja, hogyan állíthatja be a Windowst az ügyfélen és a kiszolgálón a WinRM HTTPS-en (SSL) keresztüli használatához, és hogyan használhatja a tanúsítványokat a hitelesítéshez a WinRM HTTPS-en keresztüli használatakor.
Tartalomjegyzék
előfeltételek
ha szeretné követni ezt a bemutató áttekintést, győződjön meg róla, hogy rendelkezik a következőkkel:
- a Windows 7+ vagy Server 2008 R2 gép szolgál a kliens gép. Ez az oktatóanyag a Windows 10 rendszert fogja használni.
- Windows 7+ vagy Server 2008 R2+ rendszerű gép, amely kiszolgálógépként szolgál. Ez az oktatóanyag a Windows Server 2019 rendszert fogja használni.
- hozzáférés egy helyi adminisztrátori fiókhoz vagy egy helyi adminisztrátori jogokkal rendelkező fiókhoz mind az ügyfél -, mind a kiszolgálógépen.
- Active Directory tanúsítványszolgáltatások (ADCS) nyilvános kulcsú infrastruktúra (PKI) beállítása. Segítene, ha ADC-ket implementálnál a termelési implementációkhoz, de ez nem kötelező ehhez az oktatóanyaghoz és teszteléshez. Az oktatóanyag feltételezi, hogy a PKI vállalati vagy önálló CA-ként van beállítva.
miért használja a WinRM-et SSL-en keresztül?
a PSRemoting a dobozon kívül WinRM-et használ, és lehetővé teszi az ügyfélgépek távoli kezelését. Miután a PSRemoting létrehoz egy munkamenetet a WinRM felett, titkosítja az összes kommunikációt az ügyféltől a szerverig. Ezenkívül a PSRemoting HTTPS nélküli megvalósításának telepítési eljárása meglehetősen egyszerű.
ha a PSRemoting már titkosítja a munkamenetkommunikációt, akkor miért kell az ADC-k beállításához és a tanúsítványok kezeléséhez, ha már titkosítva van?
mert a hitelesítési folyamat során a hitelesítő adatok nem biztonságos formátumban küldhetők el a használt hitelesítési típustól függően.
a PSRemoting biztonságosabbá tételének egyik legegyszerűbb módja a WinRM HTTPS-en keresztüli használata HTTP helyett. A HTTPS magában foglalja a teljes kapcsolati adatfolyamot, beleértve a hitelesítést a WinRM által már használt titkosítási rétegen belül. A HTTPS egyidejűleg lehetőséget nyújt arra is, hogy érvényesítse azt a szervert, amelyhez csatlakozik, amire gondol.
a WinRM konfigurálása önaláírt tanúsítvánnyal
most ugorjunk be a bemutatókba. Az első trükk, fogsz tanulni, hogyan kell beállítani titkosítása PSRemoting kommunikáció WinRm SSL-en keresztül egy önaláírt tanúsítványt.
az önaláírt tanúsítvány használata nagyszerű módja annak, hogy tesztkörnyezetet állítson be anélkül, hogy aggódnia kellene egy olyan PKI miatt, mint az ADC. Amikor önaláírt tanúsítványt használ, létrehoz egy tanúsítványt, amelyet maga a kiszolgáló ír alá, amely alapvetően önmagáért kezeskedik.
a tanúsítványok általában két feladat elvégzésére léteznek: a kapcsolat hitelesítésére és titkosítására. Az önaláírt tanúsítvány használata csak az utóbbit valósítja meg. A kiszolgáló identitásának érvényesítéséhez mindig PKI által biztosított tanúsítványokat kell használnia. A PKI által biztosított tanúsítványok egyetlen bizalmi forrást biztosítanak, szemben azzal, hogy minden önaláírt tanúsítványt manuálisan kell megbízni.
a WinRM SSL-en keresztüli konfigurálása önaláírt tanúsítvánnyal négy magas szintű lépést igényel:
- az önaláírt tanúsítvány létrehozása a célgépen.
- a kiszolgáló WinRM webszerverének (figyelő) konfigurálása az önaláírt tanúsítvány hitelesítéshez való használatára.
- a megfelelő portok megnyitása a célgép Windows tűzfalán.
- parancs végrehajtása távoli kapcsolat kezdeményezésére az ügyfélen egy PowerShell parancsmag segítségével, például
Enter-PSSession
.
most menjünk végig az egyes lépéseken.
önaláírt tanúsítvány létrehozása
az első lépés egy önaláírt tanúsítvány létrehozása a kiszolgálón. Csatlakozáskor a PSRemoting ezt a tanúsítványt használja az összes kommunikáció titkosításához.
ha a kiszolgálón rendszergazdaként nyitott Windows PowerShell konzol van, futtassa a New-SelfSignedCertificate
parancsmagot az alábbiak szerint. Az alábbi parancs futtatása tanúsítványt generál ServerB.domain.com a helyi gép személyes tanúsítványtárolójában.
New-SelfSignedCertificate -Subject 'CN=ServerB.domain.com' -TextExtension '2.5.29.37={text}1.3.6.1.5.5.7.3.1'
a Subject
paraméternek a kiszolgáló teljesen minősített tartománynevének kell lennie. A WinRm az alanyt használja a szerver identitásának ellenőrzésére.
még akkor is, ha a szerver munkacsoportban van, mindig adjon meg egy domain nevet, pl., domain.com vagy Labor.helyi. Amikor csatlakozik a célgéphez, a DNS-névnek, amelyhez csatlakozik, pontosan meg kell egyeznie ezzel a Tárgynévvel, a kapcsolat sikertelen lesz.
a TextExtension
lehetővé teszi a tanúsítvány kulcshasználatának meghatározását (2.5.29.37
), amely meghatározza, hogy a tanúsítvány mire használható. Határozza meg a kulcs használatát a Kiszolgálóhitelesítéshez ({text}1.3.6.1.5.5.7.3.1
) annak biztosítása érdekében, hogy a tanúsítvány csak a kiszolgáló identitásának hitelesítésére használható.
az
New-SelfSignedCertificates
futtatása után visszaadja az általa létrehozott tanúsítvány ujjlenyomatát. Mentse el ezt, mivel szüksége lesz rá a következő parancshoz.
a WinRM-figyelő konfigurálása
Miután létrehozta az önaláírt tanúsítványt a kiszolgálón, konfigurálja a WinRm-figyelőt úgy, hogy kezdje el használni a tanúsítványt hitelesítéshez. Ehhez használja a winrm create
parancsot az alábbiak szerint.
az alábbi parancs Address=*
tájékoztatja a hallgatót, hogy hallgassa meg a kiszolgálón konfigurált IP-címet. Ha a kiszolgálónak több IP-címe van konfigurálva, itt megadhat egy adott IP-címet.
feltétlenül cserélje ki a
<cert thumbprint here>
helyőrzőt az utolsó lépésben visszaadott ujjlenyomatra.
winrm create winrm/config/Listener?Address=*+Transport=HTTPS '@{Hostname="ServerB.domain.com"; CertificateThumbprint="<cert thumbprint here>"}'
a WinRM SSL tűzfal portjának megnyitása
ezután, ha a Windows tűzfalat használja, engedélyeznie kell a HTTPS forgalmat a kiszolgálóra az alapértelmezett HTTPS porton keresztül 5986
.
nyissa meg a WinRM TŰZFALPORTJÁT HTTPS-en keresztül a PowerShell használatával az alábbi parancs futtatásával.
$FirewallParam = @{ DisplayName = 'Windows Remote Management (HTTPS-In)' Direction = 'Inbound' LocalPort = 5986 Protocol = 'TCP' Action = 'Allow' Program = 'System'}New-NetFirewallRule @FirewallParam
Csatlakozás a kiszolgálóhoz SSL-en keresztül
most konfigurálta a távoli Windows-kiszolgálót úgy, hogy fogadja az SSL-en keresztüli WinRM-kapcsolatokat. Ekkor térjen vissza az ügyfélhez, és kezdeményezzen bármilyen PSRemoting parancsot, amelyet tesztelni szeretne. Kipróbálhatja például a Enter-PSSession
vagy Invoke-Command
parancsmagot. Csak most csatlakozik egy kicsit más, mint az alapértelmezett HTTP kapcsolat.
a HTTPS-en keresztüli csatlakozáshoz általában egyetlen UseSSL
paraméter szükséges. Ez a paraméter azt mondja a parancsnak, hogy alapértelmezés szerint keressen egy HTTPS WinRM-hallgatót a HTTP-hallgatóval szemben. A UseSSL
paraméter több PSRemoting parancson érhető el.
a teszteléshez futtassa a Enter-PSSession
parancsot, amely megadja a kiszolgáló FQDN-jét az önaláírt tanúsítvány alanyának megfelelően, egy PSCredential objektumot a felhasználónév és jelszó meghatározásához, végül pedig a UseSSL
switch paramétert.
Enter-PSSession -ComputerName ServerB.domain.com -Credential (Get-Credential) -UseSSL
a fenti parancs futtatásakor hibaüzenet jelenik meg, mivel a kiszolgálón a WinRM figyelőt önaláírt tanúsítvány használatára konfigurálta. Amikor a PSRemoting kliens megpróbálja hitelesíteni a kiszolgálót, megpróbálja érvényesíteni a tanúsítványt, de nem sikerül. Az önaláírt tanúsítványnak nincs megbízhatósági lánca, amelyet a parancs követhet, és meghiúsul.
ha önaláírt tanúsítvánnyal szeretne csatlakozni a kiszolgálóhoz, felül kell írnia a tanúsítvány megbízhatóságának ellenőrzését. Ezt úgy teheti meg, hogy létrehoz egy SkipCACheck
nevű PSSessionOption-t a New-PSSessionOption
parancsmag használatával, majd átadja a parancsnak az alábbiak szerint.
$PSSessionOption = New-PSSessionOption -SkipCACheckEnter-PSSession -ComputerName ServerB -Credential (Get-Credential) -SessionOption $PSSessionOption -UseSSL
számos különböző PSSessionOption objektumot definiálhat a távoli kapcsolat olyan beállításainak hozzáadásához, amelyek nem szerepelnek közvetlenül a
Enter-PSSession
parancsmagban.
próbáljon meg újra csatlakozni, és a PowerShell most hitelesítő adatokat kér. Miután megadta, most csatlakoznia kell a szerverhez WinRM-mel SSL-en keresztül!
a WinRM konfigurálása hitelesítésszolgáltató által aláírt tanúsítvánnyal
ha a PSRemoting alkalmazást WinRM használatával kívánja használni a gyártásban, és a lehető legbiztonságosabb szeretne maradni, akkor a WinRM-re kell összpontosítania SSL-en keresztül egy hitelesítésszolgáltató (CA) által aláírt tanúsítvány használatával.
a hitelesítésszolgáltatóval aláírt tanúsítványok megbízhatósági láncot tartanak fenn, és biztonságosabbak, mint az egyszerű, saját aláírású tanúsítványok, mivel érvényesítik a tanúsítvány kibocsátójának személyazonosságát.
ha Active Directory-környezetben tartózkodik, a hitelesítésszolgáltató beállításának egyik leggyakoribb módja az ADC-k használata. Az ADC-k segítségével telepítheti a tanúsítványokat az eszközökre, és konfigurálhatja a WinRM-et ezen tanúsítványok használatára.
ez az oktatóanyag azt fogja feltételezni, hogy már van ADC beállítása és működése a környezetben.
a gyors beállításhoz kövesse a Microsoft dokumentációját, de a termelési telepítéshez alaposan meg kell vizsgálnia a konfigurációt, mivel a tanúsító hatóság a szervezet titkosítási erőfeszítéseinek középpontjában áll.
tanúsítványkérelem létrehozása
a hitelesítésszolgáltató által kiadott tanúsítvány használatának első lépése a tanúsítvány létrehozása. A tanúsítvány létrehozásához először ki kell adnia egy tanúsítványkérelmet egy tanúsítvány-aláírási kérelem (CSR) használatával. A létrehozás után ezt a CSR-t el lehet küldeni a CA-nak a tanúsítvány kiadására.
ez a szakasz lépései az ADC-telepítéseken fognak működni, ha vállalati HITELESÍTÉSSZOLGÁLTATÓRÓL vagy önálló HITELESÍTÉSSZOLGÁLTATÓRÓL van szó. Ha hirdetésbe integrált vállalati hitelesítésszolgáltatót használ, felgyorsíthatja a tanúsítványok regisztrálását anélkül, hogy végrehajtaná az ebben a szakaszban leírt lépéseket a tanúsítvány automatikus regisztrálása vagy a Tanúsítványsablonok használatával.
míg a szerveren (ServerB ebben a tutorial), hozza létre a CSR:
- futtassa a certlm-et.msc A Windows Tanúsítványkezelő megnyitásához.
2. Kattintson a jobb gombbal a személyes áruházra, és válassza az összes feladat —> speciális műveletek —> egyéni kérés létrehozása lehetőséget.
3. Ehhez az oktatóanyaghoz hagyja az összes mezőt alapértelmezettként, amíg el nem jut az alább látható Tanúsítványinformációs oldalra. Amikor ideér, kattintson a részletek legördülő menüre, majd válassza a Tulajdonságok lehetőséget.
4. Kattintson a tárgy fülre, és módosítsa a típust a Common name – re.
5. Most adja meg a kiszolgáló teljesen minősített tartománynevét, ha csatlakozik egy tartományhoz, vagy csak a gazdagép nevét, ha nem, majd kattintson a Hozzáadás gombra.
ne feledje, hogy a WinRM SSL figyelő használatához a közös nevet kell használnia. A lista többi opciója is szerepelhet, de nem szükséges ehhez a telepítéshez.
6. Kattintson a kiterjesztés fülre.
7. Ha nem tanúsítványalapú hitelesítést használ, amelyre később kerül sor, bontsa ki az extended key usage fejlécet, és adja hozzá a kiszolgálói hitelesítést. Ez a kulcshasználati típus jelzi a Windows számára, hogy a tanúsítványt a kiszolgáló hitelesítésére kell használni. További lehetőségek közé tartozik az ügyfél-hitelesítés, a kód aláírása és a dokumentum titkosítása.
8. Ha tanúsítványalapú hitelesítést szeretne beállítani, győződjön meg róla, hogy az ügyfél-hitelesítést választja, az alábbiak szerint.
9. Ezután kattintson a privát kulcs fülre, és vegye figyelembe a Kulcsopciókat. Módosítsa az alapértelmezett kulcsméretet 1024-ről legalább 2048-ra a kulcspár biztonságának megerősítése érdekében.
erősebb kriptográfiai szolgáltatók is elérhetők a Windows rendszerben, de előfordulhat, hogy a régebbi szoftverekkel nem kompatibilis.
10. Zárja be a tanúsítvány tulajdonságai ablakot, és mentse el a beállításokat az OK gombra kattintva, majd kattintson a Tovább gombra az utasítások folytatásához.
11. Most adjon meg egy elérési utat a tanúsítványkérelem kimenetéhez, ahol később letöltheti, majd kattintson a Befejezés gombra.
miután elkészült, rendelkeznie kell egy tanúsítványkérési fájllal.
tanúsítvány kérése
Miután létrehozta a kérelmet, be kell nyújtania a kérelmet a hitelesítésszolgáltatónak, amely létrehozza a tanúsítványt. Ahhoz, hogy ezt:
- keresse meg az ADCS-kiszolgálót a http://<server név FQDN>/certsrv/certrqxt címen.asp.
2. Nyissa meg a Jegyzettömb segítségével korábban létrehozott tanúsítványkérési fájlt, és másolja a tanúsítványkérelem fájljának szövegét a kérelem mezőbe. A tanúsítvány további attribútumaihoz semmi sem szükséges.
3. Kattintson A Küldés Gombra. Ez benyújtja kérését a CA-nak. Ezután meg kell mutatnia a kérelem azonosítóját, amelyre később szükség lesz. Mentsd meg ezt! Később szükséged lesz rá.
4. Most csatlakozzon az ADCS-környezet részét képező CA-kiszolgálóhoz a helyi számítógép Windows Tanúsítványkezelőjével vagy RDP-n keresztül a certsrv futtatásával.msc.
5. Kattintson függőben lévő kérések.
6. Kattintson a jobb gombbal a függőben lévő kérelemre, kattintson az összes feladat elemre, majd kattintson a probléma elemre. Ez jóváhagyja az imént benyújtott kérelmet a korábbi lépés kérésazonosítója alapján.
a tanúsítvány regisztrálása
most, hogy kiadott egy tanúsítványt a hitelesítésszolgáltatón, itt az ideje, hogy regisztrálja a tanúsítványt azon a kiszolgálón, amelyen a WinRM-et konfigurálja. Ahhoz, hogy ezt:
- azon a szerveren, amelyen a WinRM-et SSL-en keresztül állítja be, keresse meg a http://<servername FQDN> /certckpn-t.asp. Egyetlen függőben lévő tanúsítványkérelmet kell látnia.
szükség esetén lekérheti a nyilvános tanúsítványt egy másik gépről, de a WinRM-hez HTTPS-en keresztül beállított kiszolgálótól kezdve egyszerűsíti a folyamatot.
2. Válassza ki a listából a benyújtott kérelmet, majd töltse le a tanúsítványláncot. Töltse le a teljes tanúsítványláncot, ha a WinRM-et HTTPS-en keresztül konfiguráló kiszolgálónak a CA-ja van gyökérkiszolgálóként.
3. Nyissa meg a tanúsítványlánc fájlt. Látnia kell a kiszolgálóhoz tartozó tanúsítványt, valamint a láncban magasabb szintű hitelesítésszolgáltatói tanúsítványokat. Win2 alatt.labor.az int a kért tanúsítvány, a WIN2-CA pedig annak a hitelesítésszolgáltatónak a tanúsítványa, amely a win2.lab.int.
4. Kattintson duplán az egyik tanúsítványra, majd a megnyíló mezőben kattintson a tanúsítvány telepítése gombra. Mivel ezt a tanúsítványt a kiszolgáló fogja használni, nem pedig egy adott felhasználó, módosítsa a beállítást helyi gépre.
5. Folytassa a promptot, hagyva mindent alapértelmezettként. Az alapértelmezett értékeknek a tanúsítványt a megbízható gyökér Tanúsítványok tárolójában kell elhelyezniük.
6. Most ismételje meg a 3-5. lépéseket a listában szereplő összes többi tanúsítvány esetében. Ha egynél több tanúsítvánnyal rendelkezik, ellenőrizze, hogy az összes többi tanúsítvány a közbenső tanúsító hatóságok tárolójában van-e elhelyezve.
a WinRM HTTPS figyelő létrehozása és beállítása
most, hogy az összes tanúsítvány telepítve van, itt az ideje beállítani a WinRM-et a kiszolgálón, hogy ezt a tanúsítványt használja a figyelő számára.
a PowerShell megnyitásával a WinRm szerveren:
- futtassa az alábbi parancsot a WinRm figyelő automatikus beállításához. A
winrm
parancs ezt úgy teszi, hogy a helyi gépi tanúsítványtárolóban olyan tanúsítványt keres, amely megfelel a WinRM követelményeinek.
winrm quickconfig -transport:https
2. A Windows tűzfal alapértelmezés szerint blokkolja a 5986
WinRM HTTPS portot. Annak érdekében, hogy a tűzfal engedélyezze a 5986
bejövő portot, futtassa a következő PowerShell parancsot:
$FirewallParam = @{ DisplayName = 'Windows Remote Management (HTTPS-In)' Direction = 'Inbound' LocalPort = 5986 Protocol = 'TCP' Action = 'Allow' Program = 'System' } New-NetFirewallRule @FirewallParam
a WinRM SSL kapcsolat tesztelése
ezen a ponton készen áll a csatlakozásra. A kedvenc PSRemoting parancsmagok, például a Invoke-Command
vagy a Enter-PSSession
használatával csatlakozzon a szerverhez, és használja a UseSSL
paramétert.
Enter-PSSession -ComputerName ServerB.domain.com -UseSSL -Credential (Get-Credential)
mindig győződjön meg arról, hogy a
ComputerName
paraméter értéke pontosan megegyezik a tanúsítvány létrehozásakor megadott közös névvel. Ha megpróbál csatlakozni egy másik gazdagépnévhez vagy esetleg a gazdagép IP-címéhez, tanúsítvány-eltérési hibát kap, amely kapcsolathibát okoz.
tanúsítványalapú hitelesítés beállítása
mostanra már be kell állítania egy WinRM figyelőt a HTTPS használatához. Ha igen, akkor felhasználóhitelesítési tanúsítvánnyal is hitelesítheti magát helyi felhasználóként a távoli kiszolgálón. A felhasználói tanúsítvány használata az egyik legbiztonságosabb, de a beállítása eltart egy ideig. Meg fogja találni, hogy ez is sok ismétlődő munka, mivel minden tanúsítvány egyedi az egyes ügyfélgéphez.
a tanúsítványalapú hitelesítés csak helyi felhasználói fiókokkal működik, tartományi felhasználókkal nem.
feltételezve, hogy tanúsítványt kért az Ügyfélhitelesítéshez a tanúsítványkérelem létrehozása szakaszban leírtak szerint, olvassa el tovább:
tanúsítványhitelesítés engedélyezése és a felhasználó leképezése a kiszolgálón
- a kiszolgálón futtassa a
Set-Item
parancsot a tanúsítványalapú hitelesítés engedélyezéséhez.
Set-Item WSMan:\localhost\Service\Auth\Certificate -Value $true
2. Ezután futtassa a Get-ChildItem
parancsot a Megbízható legfelső szintű hitelesítésszolgáltatók tárolójában, hogy megtalálja a hitelesítésszolgáltató ujjlenyomatát, amely kiadta az ügyfélhitelesítési tanúsítványt. Ehhez szűrje a tanúsítványokat a hitelesítésszolgáltató nevét tartalmazó tárgy szerint.
Get-ChildItem Cert:\LocalMachine\Root | Where-Object {$_.Subject -like 'CA-Name'}
3. Futtassa az alábbi parancsot, ahol a SubjectName
a tanúsítvány létrehozásakor megadott felhasználói tanúsítvány tárgya
a CAThumbprint
a hitelesítésszolgáltató ujjlenyomatát gyűjti össze az előző paranccsal, majd a hitelesítő adatok megadására kéri a helyi felhasználó felhasználónevét és jelszavát, amelyet a tanúsítványalapú hitelesítéshez fog használni.
New-Item WSMan:\localhost\ClientCertificate -Subject SubjectName -URI * -Issuer CAThumbprint -Credential (Get-Credential)
tanúsítványalapú hitelesítés tesztelése
most, hogy a tanúsítvány felhasználói leképezés beállítása megtörtént, használja az ügyfélgépen található tanúsítványt hitelesítő adatok megadása nélkül.
a PowerShell-ben lévő ügyfélen szerezze be az ügyféltanúsítvány ujjlenyomatát a személyes tanúsítványtárolóban.
Get-ChildItem Cert:\CurrentUser\My
most adja meg az ujjlenyomatot a CertificateThumbprint
paraméterben egy PSRemoting parancshoz, mint az alábbiakban.
Enter-PSSession -ComputerName ServerName -CertificateThumbprint <Thumbprint>
vegye figyelembe, hogy mivel a tanúsítványalapú hitelesítés csak HTTPS-hallgatóval használható
-UseSSL
implicit, ellentétben más hitelesítési módszerekkel, ahol meg kell adnia az SSL használatát.
most, hogy megtanulta, hogyan kell beállítani a WinRM-et SSL-en keresztül, tudjon meg többet a PSRemoting-ról a PowerShell Remoting: The Ultimate Guide post-ban!
szeretne többet megtudni a PowerShell-ről általában, beleértve a PSRemoting-ot is? Nézze meg a PowerShell-t a Sysadmins számára, a könyv!
Leave a Reply