A második ugrás végrehajtása a PowerShell távoli eljáráshívásai során
A "második ugrási probléma" az alábbihoz hasonló helyzetre utal:
- A rendszer bejelentkezett a ServerA-ba.
- A ServerA-ból elindít egy távoli PowerShell-munkamenetet a ServerB-hez való csatlakozáshoz.
- A ServerB-en futtatott parancs a PowerShell-remoting munkameneten keresztül próbál hozzáférni egy erőforráshoz a ServerC-en.
- Az erőforráshoz való hozzáférés a ServerC-en megtagadva, mert a PowerShell-újraküldési munkamenet létrehozásához használt hitelesítő adatok nem lesznek átadva a ServerB-bőla ServerC-be.
A probléma többféleképpen is kezelhető. Az alábbi táblázat a kívánt sorrendben sorolja fel a metódusokat.
Konfiguráció | Feljegyzés |
---|---|
CredSSP | Egyensúlyba teszi a könnyű használatot és a biztonságot |
Erőforrás-alapú Kerberos korlátozott delegálás | Nagyobb biztonság egyszerűbb konfigurációval |
Kerberos korlátozott delegálás | Magas biztonság, de tartományi Rendszergazda istratort igényel |
Kerberos-delegálás (nincs korlátozva) | Nem ajánlott |
Just Enough Administration (JEA) | A legjobb biztonságot nyújthatja, de részletesebb konfigurációt igényel |
PSSessionConfiguration futtatókörnyezetek használatával | Egyszerűbben konfigurálható, de hitelesítő adatok kezelését igényli |
Hitelesítő adatok átadása szkriptblokkon Invoke-Command belül |
A legegyszerűbben használható, de meg kell adnia a hitelesítő adatokat |
CredSSP
A hitelesítéshez használhatja a hitelesítőadat-biztonsági támogatási szolgáltatót (CredSSP). A CredSSP gyorsítótárazza a hitelesítő adatokat a távoli kiszolgálón (ServerB), így használatával hitelesítő adatokkal kapcsolatos lopási támadásokat indíthat el. Ha a távoli számítógép biztonsága sérül, a támadó hozzáfér a felhasználó hitelesítő adataihoz. A CredSSP alapértelmezés szerint le van tiltva az ügyfél- és kiszolgálószámítógépeken is. Csak a legmegbízhatóbb környezetekben engedélyezze a CredSSP-t. Például egy tartományvezérlőhöz csatlakozó tartományi rendszergazda, mert a tartományvezérlő megbízható.
A CredSSP PowerShell-remotinghoz való használatakor felmerülő biztonsági problémákról további információt a Véletlen szabotázs: Óvakodj a CredSSP-ről című témakörben talál.
További információ a hitelesítő adatok ellopásával kapcsolatos támadásokról: Pass-the-Hash (PtH) támadások és egyéb hitelesítő adatok ellopása.
A CredSSP PowerShell-remotinghoz való engedélyezésére és használatára vonatkozó példa: A PowerShell "Second-Hop" funkciójának engedélyezése a CredSSP-vel.
Előnyök
- A Windows Server 2008 vagy újabb rendszerű kiszolgálókon működik.
Hátrányok
- Biztonsági résekkel rendelkezik.
- Az ügyfél- és kiszolgálói szerepkörök konfigurálásához is szükség van.
- nem működik a Védett felhasználók csoporttal. További információ: Védett felhasználók biztonsági csoport.
Kerberos korlátozott delegálás
A második ugráshoz használhat régi korlátozott delegálást (nem erőforrás-alapú). Konfigurálja a Kerberos által korlátozott delegálást a "Bármely hitelesítési protokoll használata" beállítással a protokollváltás engedélyezéséhez.
Előnyök
- Nincs szükség speciális kódolásra
- A hitelesítő adatok nincsenek tárolva.
Hátrányok
- Nem támogatja a WinRM második ugrását.
- A konfiguráláshoz tartományi Rendszergazda istrator-hozzáférés szükséges.
- A távoli kiszolgáló (ServerB) Active Directory-objektumán kell konfigurálni.
- Egy tartományra korlátozva. Nem lehet tartományokat vagy erdőket keresztezni.
- Az objektumok és a szolgáltatásnévnevek (SPN-ek) frissítésére vonatkozó jogosultságokat igényel.
- A ServerB felhasználói beavatkozás nélkül beszerezhet egy Kerberos-jegyet a ServerC-be a felhasználó nevében.
Feljegyzés
A fiókkal rendelkező Active Directory-fiókok bizalmasak, és nem delegálhatók delegálható tulajdonságkészletek. További információkért lásd: "A fiók bizalmas és nem delegálható" elemelemzés a kiemelt fiókokhoz, a Kerberos-hitelesítési eszközökhöz és a Gépház.
Erőforrás-alapú Kerberos korlátozott delegálás
Az erőforrás-alapú Kerberos korlátozott delegálás (a Windows Server 2012-ben bevezetett) használatával konfigurálja a hitelesítő adatok delegálását azon a kiszolgálóobjektumon, ahol az erőforrások találhatók. A fent ismertetett második ugrási forgatókönyvben úgy konfigurálja a ServerC-t , hogy megadja, honnan fogadja el a delegált hitelesítő adatokat.
Előnyök
- A hitelesítő adatok nincsenek tárolva.
- PowerShell-parancsmagokkal konfigurálva. Nincs szükség speciális kódolásra.
- Nincs szükség tartományi Rendszergazda istrator-hozzáférésre a konfiguráláshoz.
- Tartományok és erdők között működik.
Hátrányok
- Windows Server 2012 vagy újabb verziót igényel.
- Nem támogatja a WinRM második ugrását.
- Az objektumok és a szolgáltatásnévnevek (SPN-ek) frissítésére vonatkozó jogosultságokat igényel.
Feljegyzés
A fiókkal rendelkező Active Directory-fiókok bizalmasak, és nem delegálhatók delegálható tulajdonságkészletek. További információkért lásd: "A fiók bizalmas és nem delegálható" elemelemzés a kiemelt fiókokhoz, a Kerberos-hitelesítési eszközökhöz és a Gépház.
Példa
Tekintsünk meg egy PowerShell-példát, amely úgy konfigurálja az erőforrás-alapú korlátozott delegálást a ServerC-en, hogy engedélyezze a delegált hitelesítő adatokat egy ServerB-ből. Ez a példa feltételezi, hogy minden kiszolgáló a Windows Server támogatott verzióit futtatja, és hogy minden megbízható tartományhoz legalább egy Windows tartományvezérlő tartozik.
A korlátozott delegálás konfigurálása előtt hozzá kell adnia a funkciót az RSAT-AD-PowerShell
Active Directory PowerShell-modul telepítéséhez, majd importálnia kell a modult a munkamenetbe:
Add-WindowsFeature RSAT-AD-PowerShell
Import-Module ActiveDirectory
Get-Command -ParameterName PrincipalsAllowedToDelegateToAccount
Több elérhető parancsmag rendelkezik PrincipalsAllowedToDelegateToAccount paraméterrel:
CommandType Name ModuleName
----------- ---- ----------
Cmdlet New-ADComputer ActiveDirectory
Cmdlet New-ADServiceAccount ActiveDirectory
Cmdlet New-ADUser ActiveDirectory
Cmdlet Set-ADComputer ActiveDirectory
Cmdlet Set-ADServiceAccount ActiveDirectory
Cmdlet Set-ADUser ActiveDirectory
A PrincipalsAllowedToDelegateToAccount paraméter beállítja az MsDS-AllowedToActOnBehalfOfOtherIdentity Active Directory objektumattribútumot, amely egy hozzáférés-vezérlési listát (ACL) tartalmaz, amely meghatározza, hogy mely fiókok rendelkeznek engedéllyel hitelesítő adatok delegálásához a társított fiókhoz (a példában ez lesz a KiszolgálóA gépfiókja).
Most állítsuk be a kiszolgálókat ábrázoló változókat:
# Set up variables for reuse
$ServerA = $env:COMPUTERNAME
$ServerB = Get-ADComputer -Identity ServerB
$ServerC = Get-ADComputer -Identity ServerC
A WinRM (és így a PowerShell-újramoting) alapértelmezés szerint számítógépfiókként fut. Ezt a szolgáltatás StartName tulajdonságának winrm
megtekintésével tekintheti meg:
Get-CimInstance Win32_Service -Filter 'Name="winrm"' | Select-Object StartName
StartName
---------
NT AUTHORITY\NetworkService
Ahhoz, hogy a ServerC engedélyezze a Delegálást egy PowerShell-újrametszési munkamenetből a ServerB-en, a ServerC PrincipalsAllowedToDelegateToAccount paraméterét a ServerB számítógépobjektumára kell állítani:
# Grant resource-based Kerberos constrained delegation
Set-ADComputer -Identity $ServerC -PrincipalsAllowedToDelegateToAccount $ServerB
# Check the value of the attribute directly
$x = Get-ADComputer -Identity $ServerC -Properties msDS-AllowedToActOnBehalfOfOtherIdentity
$x.'msDS-AllowedToActOnBehalfOfOtherIdentity'.Access
# Check the value of the attribute indirectly
Get-ADComputer -Identity $ServerC -Properties PrincipalsAllowedToDelegateToAccount
A Kerberos Key Distribution Center (KDC) 15 percig gyorsítótárazza a megtagadott hozzáférésű kísérleteket (negatív gyorsítótár). Ha a ServerB korábban megkísérelte elérni a ServerC-t, a következő parancs meghívásával törölnie kell a gyorsítótárat a ServerB-en:
Invoke-Command -ComputerName $ServerB.Name -Credential $cred -ScriptBlock {
klist purge -li 0x3e7
}
Újraindíthatja a számítógépet, vagy legalább 15 percet várhat a gyorsítótár törléséhez.
A gyorsítótár törlése után sikeresen futtathat kódot a ServerA-ból a ServerB-ből a ServerC-be:
# Capture a credential
$cred = Get-Credential Contoso\Alice
# Test kerberos double hop
Invoke-Command -ComputerName $ServerB.Name -Credential $cred -ScriptBlock {
Test-Path \\$($using:ServerC.Name)\C$
Get-Process lsass -ComputerName $($using:ServerC.Name)
Get-EventLog -LogName System -Newest 3 -ComputerName $($using:ServerC.Name)
}
Ebben a példában a változót $using
arra használjuk, hogy láthatóvá tegye a változót a $ServerC
ServerB számára.
A változóval kapcsolatos további információkért lásd: $using
about_Remote_Variables.
Ha lehetővé szeretné tenni, hogy több kiszolgáló hitelesítő adatokat delegáljon a ServerC-nek, állítsa a ServerC PrincipalsAllowedToDelegateToAccount paraméterének értékét egy tömbre:
# Set up variables for each server
$ServerB1 = Get-ADComputer -Identity ServerB1
$ServerB2 = Get-ADComputer -Identity ServerB2
$ServerB3 = Get-ADComputer -Identity ServerB3
$ServerC = Get-ADComputer -Identity ServerC
$servers = @(
$ServerB1,
$ServerB2,
$ServerB3
)
# Grant resource-based Kerberos constrained delegation
Set-ADComputer -Identity $ServerC -PrincipalsAllowedToDelegateToAccount $servers
Ha a második ugrást a tartományok között szeretné elvégezni, a Kiszolgáló paraméterrel adja meg annak a tartománynak a tartományvezérlőjének teljes tartománynevét (FQDN), amelyhez a ServerB tartozik:
# For ServerC in Contoso domain and ServerB in other domain
$ServerB = Get-ADComputer -Identity ServerB -Server dc1.alpineskihouse.com
$ServerC = Get-ADComputer -Identity ServerC
Set-ADComputer -Identity $ServerC -PrincipalsAllowedToDelegateToAccount $ServerB
A hitelesítő adatok ServerC-hez való delegálásának eltávolításához állítsa a ServerC PrincipalsAllowedToDelegateToAccount paraméterének értékét a következő értékre$null
:
Set-ADComputer -Identity $ServerC -PrincipalsAllowedToDelegateToAccount $null
Információ az erőforrás-alapú Kerberos korlátozott delegálásáról
- A Kerberos-hitelesítés újdonságai
- A Windows Server 2012 enyhíti a Kerberos korlátozott delegálásának fájdalmát, 1. rész
- A Windows Server 2012 enyhíti a Kerberos korlátozott delegálásának fájdalmát, 2. rész
- A Kerberos korlátozott delegálásának ismertetése a Microsoft Entra-alkalmazásproxyk integrált Windows-hitelesítéssel történő üzembe helyezéséhez
- [MS-ADA2 Active Directory-sémaattribútumok M2.210 attribútum msDS-AllowedToActOnBehalfOfOtherIdentity]MS-ADA2
- [MS-SFU Kerberos Protocol Extensions: Service for User and Constrained Delegation Protocol 1.3.2 S4U2proxy]MS-SFU
- Távoli Rendszergazda istráció korlátozott delegálás nélkül a PrincipalsAllowedToDelegateToAccount használatával
Kerberos-delegálás (nincs korlátozva)
A Kerberos korlátozás nélküli delegálásával is elvégezheti a második ugrást. Mint minden Kerberos-forgatókönyvben, a hitelesítő adatok sem tárolódnak. Ez a metódus nem támogatja a WinRM második ugrását.
Figyelmeztetés
Ez a módszer nem szabályozza, hogy hol használják a delegált hitelesítő adatokat. Kevésbé biztonságos, mint a CredSSP. Ez a módszer csak tesztelési forgatókönyvekhez használható.
Just Enough Administration (JEA)
A JEA lehetővé teszi, hogy korlátozza a rendszergazda által futtatható parancsokat a PowerShell-munkamenetek során. A második ugrási probléma megoldására használható.
További információ a JEA-ról: Just Enough Rendszergazda istration.
Előnyök
- Virtuális fiók használata esetén nincs jelszókarbantartás.
Hátrányok
- A WMF 5.0-s vagy újabb verziójára van szükség.
- Konfigurálást igényel minden köztes kiszolgálón (ServerB).
PSSessionConfiguration futtatókörnyezetek használatával
Létrehozhat egy munkamenet-konfigurációt a ServerB-en, és beállíthatja annak RunAsCredential paraméterét.
A PSSessionConfiguration és a futtatókörnyezetek második ugrással kapcsolatos problémájának megoldásáról további információt a PowerShell több ugrásos újratelepítésének másik megoldása című témakörben talál.
Előnyök
- Bármely kiszolgálóval együttműködik a WMF 3.0-s vagy újabb verziójával.
Hátrányok
- A PSSessionConfiguration és a RunA konfigurálásáhozminden köztes kiszolgálón (ServerB) szükség van.
- Jelszókarbantartást igényel tartományi futtató fiók használata esetén
Hitelesítő adatok átadása egy meghívási parancs szkriptblokkon belül
A hívás ScriptBlock paraméterén belül hitelesítő adatokat adhat át az Invoke-Command parancsmagnak.
Előnyök
- Nincs szükség speciális kiszolgálókonfigurációra.
- Bármely WMF 2.0-s vagy újabb rendszert futtató kiszolgálón működik.
Hátrányok
- Kínos kódtechnikát igényel.
- A WMF 2.0 futtatása esetén az argumentumok távoli munkamenetbe való továbbításához eltérő szintaxis szükséges.
Példa
Az alábbi példa bemutatja, hogyan adhat át hitelesítő adatokat egy szkriptblokkban:
# This works without delegation, passing fresh creds
# Note $Using:Cred in nested request
$cred = Get-Credential Contoso\Administrator
Invoke-Command -ComputerName ServerB -Credential $cred -ScriptBlock {
hostname
Invoke-Command -ComputerName ServerC -Credential $Using:cred -ScriptBlock {hostname}
}
Lásd még
PowerShell távoli eljáráshívásainak biztonsági megfontolásai
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: