Naplózás és jelentéskészítés a JEAAuditing and Reporting on JEA

A JEA üzembe helyezése után rendszeresen ellenőriznie kell a JEA konfigurációját.After you've deployed JEA, you need to regularly audit the JEA configuration. A naplózás segít felmérni, hogy a megfelelő személyek férhetnek hozzá a JEA-végponthoz, és a hozzájuk rendelt szerepkörök továbbra is megfelelőek-e.Auditing helps you assess that the correct people have access to the JEA endpoint and their assigned roles are still appropriate.

Regisztrált JEA-munkamenetek keresése a gépenFind registered JEA sessions on a machine

A Get-PSSessionConfiguration parancsmaggal ellenőrizhető, hogy mely JEA-munkamenetek vannak regisztrálva a gépen.To check which JEA sessions are registered on a machine, use the Get-PSSessionConfiguration cmdlet.

# Filter for sessions that are configured as 'RestrictedRemoteServer' to find JEA-like session configurations
Get-PSSessionConfiguration | Where-Object { $_.SessionType -eq 'RestrictedRemoteServer' }
Name          : JEAMaintenance
PSVersion     : 5.1
StartupScript :
RunAsUser     :
Permission    : CONTOSO\JEA_DNS_ADMINS AccessAllowed, CONTOSO\JEA_DNS_OPERATORS AccessAllowed,
                CONTOSO\JEA_DNS_AUDITORS AccessAllowed

A végpontra érvényes jogosultságok az engedély tulajdonságban szerepelnek.The effective rights for the endpoint are listed in the Permission property. Ezek a felhasználók jogosultak a JEA-végponthoz való kapcsolódásra.These users have the right to connect to the JEA endpoint. Azonban az azokhoz a szerepkörökhöz és parancsokhoz, amelyekhez hozzáférnek, a végpont regisztrálásához használt munkamenet-konfigurációs fájlban található RoleDefinitions tulajdonság határozza meg.However, the roles and commands they have access to is determined by the RoleDefinitions property in the session configuration file that was used to register the endpoint. Bontsa ki a RoleDefinitions tulajdonságot a szerepkör-hozzárendelések kiértékeléséhez egy regisztrált JEA-végponton.Expand the RoleDefinitions property to evaluate the role mappings in a registered JEA endpoint.

# Get the desired session configuration
$jea = Get-PSSessionConfiguration -Name 'JEAMaintenance'

# Enumerate users/groups and which roles they have access to
$jea.RoleDefinitions.GetEnumerator() | Select-Object Name, @{
  Name = 'Role Capabilities'
  Expression = { $_.Value.RoleCapabilities }
}

Elérhető szerepkör-képességek keresése a gépenFind available role capabilities on the machine

A JEA beolvassa a .psrc szerepkör-képességeket a RoleCapabilities mappában tárolt fájlokból egy PowerShell-modulon belül.JEA gets role capabilities from the .psrc files stored in the RoleCapabilities folder inside a PowerShell module. A következő függvény megkeresi a számítógépen elérhető összes szerepkör-funkciót.The following function finds all role capabilities available on a computer.

function Find-LocalRoleCapability {
    $results = @()

    # Find modules with a "RoleCapabilities" subfolder and add any PSRC files to the result set
    Get-Module -ListAvailable | ForEach-Object {
        $psrcpath = Join-Path -Path $_.ModuleBase -ChildPath 'RoleCapabilities'
        if (Test-Path $psrcpath) {
            $results += Get-ChildItem -Path $psrcpath -Filter *.psrc
        }
    }

    # Format the results nicely to make it easier to read
    $results | Select-Object @{ Name = 'Name'; Expression = { $_.Name.TrimEnd('.psrc') }}, @{
        Name = 'Path'; Expression = { $_.FullName }
    } | Sort-Object Name
}

Megjegyzés

A függvény eredményeinek sorrendje nem feltétlenül jelenti azt a sorrendet, amelyben a szerepkör-képességek ki lesznek választva, ha több szerepkör-képesség is ugyanazzal a névvel van megosztva.The order of results from this function is not necessarily the order in which the role capabilities will be selected if multiple role capabilities share the same name.

Egy adott felhasználóra érvényes jogosultságok kereséseCheck effective rights for a specific user

A Get-PSSessionCapability PARANCSMAG egy JEA-végponton elérhető összes parancsot enumerálja egy felhasználó csoporttagságok alapján.The Get-PSSessionCapability cmdlet enumerates all the commands available on a JEA endpoint based on a user's group memberships. A kimenete Get-PSSessionCapability megegyezik a JEA-munkamenetben futó Get-Command -CommandType All megadott felhasználó nevével.The output of Get-PSSessionCapability is identical to that of the specified user running Get-Command -CommandType All in a JEA session.

Get-PSSessionCapability -ConfigurationName 'JEAMaintenance' -Username 'CONTOSO\Alice'

Ha a felhasználók nem rendelkeznek a csoportok olyan állandó tagjaival, amelyek további JEA jogokat biztosítanak, akkor ez a parancsmag nem tükrözi ezeket az extra engedélyeket.If your users aren't permanent members of groups that would grant them additional JEA rights, this cmdlet may not reflect those extra permissions. Ez akkor fordul elő, ha az igény szerinti privilegizált hozzáférés-kezelési rendszerek használata lehetővé teszi, hogy a felhasználók átmenetileg egy biztonsági csoporthoz tartozzanak.This happens when using just-in-time privileged access management systems to allow users to temporarily belong to a security group. Alaposan értékelje ki a felhasználók szerepkörökhöz és képességekhez való hozzárendelését annak biztosításához, hogy a felhasználók csak a feladatok sikeres elvégzéséhez szükséges hozzáférési szintet kapják meg.Carefully evaluate the mapping of users to roles and capabilities to ensure that users only get the level of access needed to do their jobs successfully.

PowerShell-eseménynaplókPowerShell event logs

Ha engedélyezte a modul-vagy parancsfájl-blokkoló naplózását a rendszeren, a Windows-eseménynaplókban láthatja az eseményeket, amelyeket a felhasználók egy JEA-munkamenetben futtatnak.If you enabled module or script block logging on the system, you can see events in the Windows event logs for each command a user runs in a JEA session. Ezeknek az eseményeknek a megkereséséhez nyissa meg a Microsoft-Windows-PowerShell/operatív eseménynaplót, és keresse meg az eseményeket a 4104-es azonosítójú eseménnyel.To find these events, open Microsoft-Windows-PowerShell/Operational event log and look for events with event ID 4104.

Minden eseménynapló-bejegyzés tartalmaz információt arról a munkamenetről, amelyben a parancs futott.Each event log entry includes information about the session in which the command was run. A JEA-munkamenetek esetében az esemény a ConnectedUser és a RunAsUserkapcsolatos információkat tartalmaz.For JEA sessions, the event includes information about the ConnectedUser and the RunAsUser. A ConnectedUser az a tényleges felhasználó, aki létrehozta a JEA-munkamenetet.The ConnectedUser is the actual user who created the JEA session. A RunAsUser a parancs végrehajtásához használt JEA-fiók.The RunAsUser is the account JEA used to execute the command.

Az alkalmazás eseménynaplói megjelenítik a RunAsUseráltal végzett módosításokat.Application event logs show changes being made by the RunAsUser. Így a modul és a parancsfájlok naplózása engedélyezve van ahhoz, hogy egy adott parancs visszahívása visszakerüljön a ConnectedUser.So having module and script logging enabled is required to trace a specific command invocation back to the ConnectedUser.

Alkalmazás-eseménynaplókApplication event logs

A külső alkalmazásokkal vagy szolgáltatásokkal folytatott JEA-munkamenetekben futtatott parancsok a saját eseménynaplóba is naplózhatók az eseményeket.Commands run in a JEA session that interact with external applications or services may log events to their own event logs. A PowerShell-naplók és-átiratok eltérően más naplózási mechanizmusok nem rögzítik a JEA-munkamenet csatlakoztatott felhasználóját.Unlike PowerShell logs and transcripts, other logging mechanisms don't capture the connected user of the JEA session. Ehelyett ezek az alkalmazások csak a virtuális futtató felhasználót naplózzák.Instead, those applications only log the virtual run-as user. Ha meg szeretné állapítani, hogy ki futtatta a parancsot, akkor meg kell tekintenie egy munkamenet -átírást, vagy korrelálnia kell a PowerShell-eseménynaplókat az alkalmazás eseménynaplójában látható idővel és felhasználóval.To determine who ran the command, you need to consult a session transcript or correlate PowerShell event logs with the time and user shown in the application event log.

A Rendszerfelügyeleti webszolgáltatások naplója segítséget nyújthat a futtató felhasználóknak az alkalmazás-eseménynaplóban való összekapcsolásához is.The WinRM log can also help you correlate run-as users to the connecting user in an application event log. 193 -es azonosítójú esemény a Microsoft-Windows rendszerben – a Rendszerfelügyeleti webszolgáltatások/operatív napló rögzíti a biztonsági azonosító (SID) és a fiók nevét mind a kapcsolódó felhasználó, mind pedig a futtató felhasználó számára minden új JEA-munkamenethez.Event ID 193 in the Microsoft-Windows-Windows Remote Management/Operational log records the security identifier (SID) and account name for both the connecting user and run as user for every new JEA session.

Munkamenet-átiratokSession transcripts

Ha úgy konfigurálta a JEA, hogy az egyes felhasználói munkamenetek számára hozzon létre egy átiratot, a rendszer az összes felhasználó műveletének szöveges másolatát a megadott mappában tárolja.If you configured JEA to create a transcript for each user session, a text copy of every user's actions are stored in the specified folder.

A következő parancs (rendszergazdaként) megkeresi az összes átirat könyvtárat.The following command (as an administrator) finds all transcript directories.

Get-PSSessionConfiguration |
  Where-Object { $_.TranscriptDirectory -ne $null } |
    Format-Table Name, TranscriptDirectory

Az egyes átiratok a munkamenet elindításának idejével, a munkamenethez kapcsolódó felhasználóval és a hozzájuk rendelt JEA-identitással kapcsolatos információkkal kezdődnek.Each transcript starts with information about the time the session started, which user connected to the session, and which JEA identity was assigned to them.

**********************
Windows PowerShell transcript start
Start time: 20160710144736
Username: CONTOSO\Alice
RunAs User: WinRM Virtual Users\WinRM VA_1_CONTOSO_Alice
Machine: SERVER01 (Microsoft Windows NT 10.0.14393.0)
[...]

Az átirat törzse információt tartalmaz a felhasználó által meghívott parancsokról.The body of the transcript contains information about each command the user invoked. A használt parancs pontos szintaxisa nem érhető el a JEA-munkamenetekben, mert az átalakított parancsok a PowerShell távelérési szolgáltatásban.The exact syntax of the command used is unavailable in JEA sessions because of the way commands are transformed for PowerShell remoting. Azonban továbbra is meghatározhatja a végrehajtott érvényes parancsot.However, you can still determine the effective command that was executed. Az alábbi példa egy JEA-munkamenetben futó Get-Service Dns felhasználó egy példáját mutatja be:Below is an example transcript snippet from a user running Get-Service Dns in a JEA session:

PS>CommandInvocation(Get-Service): "Get-Service"
>> ParameterBinding(Get-Service): name="Name"; value="Dns"
>> CommandInvocation(Out-Default): "Out-Default"
>> ParameterBinding(Out-Default): name="InputObject"; value="Dns"

Running  Dns                DNS Server

A rendszer minden egyes, a felhasználó által futtatott parancshoz CommandInvocation -sort ír.A CommandInvocation line is written for each command a user runs. A ParameterBindings rögzíti a parancshoz megadott összes paramétert és értéket.ParameterBindings record each parameter and value supplied with the command. Az előző példában látható, hogy a paraméter neve a (z) Get-Service parancsmaghoz tartozó DNS értéket adta meg.In the previous example, you can see that the parameter Name was supplied the with value Dns for the Get-Service cmdlet.

Az egyes parancsok kimenete CommandInvocationis indít, általában a következőhöz: Out-Default.The output of each command also triggers a CommandInvocation, usually to Out-Default. A inputobject elemnél Out-Default a parancs által visszaadott PowerShell-objektum.The InputObject of Out-Default is the PowerShell object returned from the command. Az objektum részletei az alábbi néhány sorban vannak kinyomtatva, és szorosan utánozzák, hogy a felhasználó mit látott.The details of that object are printed a few lines below, closely mimicking what the user would have seen.

Lásd mégSee also

A PowerShell-♥ a Blue Team blogjának biztonsági bejegyzésePowerShell ♥ the Blue Team blog post on security