none
[Active Directory| ]Anmeldung eines Administrators überwachen RRS feed

  • Frage

  • Servus Community,

    ich habe im Active Directory für die Geschäftsleitung einen dedizierten Benutzer angelegt und in die Gruppe der Domänen-Administratoren aufgenommen. Ich würde für diesen Benutzer gerne das Audit-Log aktivieren, damit ein Eventeintrag erzeugt wird, wenn dieser Benutzer verwendet wird. Das sollte sowohl lokale Anmeldungen auf den DCs berücksichtigen, wie auch Anmeldungen auf einen der Domänen Member Server oder Windows Client Computer.

    Gefunden habe ich jetzt, dass ich die Überwachung zuerst mit einer GPO auf die OU der Domänen-Controller aktivieren muss aber das verwendete Beispiel konfiguriert andere Events, wie zB Passwortänderungen oder Anlegen neuer Benutzer. Welche  GPO müsste ich konfigurieren?

    Danach sollte dann eine Überwachungsrichtlinie für das Prinzipal des angelegten Benutzers aktiviert werden. Hier gibt es eine ganze Latte an Einstellmöglichkeiten. Ist die Standardeinstellung dafür ausreichend oder muss hier explizit ein bestimmtes Objekt aktiviert werden?

    Meine Vorstellung wäre, das og GPO auf den Container Domain Controllers einzusetzen und damit einen Logeintrag für jeden erfolgreichen und nicht erfolgreichen Anmeldeversuch des oben beschriebenen Adminaccounts (gladmin) zu erzeugen. Egal wo sich der Benutzer anmeldet, muss er ja das Passwort im AD abgleichen. Das wäre der Punkt bei dem ich ansetzen würde.

    Funktioniert das so wie ich mir das vorgestellt habe oder gibt es Probleme, die ich übersehen habe?

    Thx & Bye Tom


    Donnerstag, 5. November 2020 10:02

Alle Antworten

  • Moin,

    für die Anmeldeversuche musst Du keine expliziten prinzipalbezogenen Audit-Einträge konfigurieren. Die Überwachung der Anmeldeereignisse reicht dafür bereits. Die granularen Einstellungen brauchst Du, wenn Du mitschneiden willst, *was* das Prinzipal macht.

    Denk daran, dass das Aufkommen an Security Event Logs auf DCs drastisch steigt. Man sollte die Größe also erhöhen, damit die interessanten Events nicht zu schnell ausaltern.


    Evgenij Smirnov

    http://evgenij.smirnov.de

    Donnerstag, 5. November 2020 10:40
  • Servus,

    >Für die Anmeldeversuche musst Du keine expliziten prinzipalbezogenen Audit-Einträge konfigurieren. Die Überwachung der Anmeldeereignisse reicht dafür bereits.

    Puh, das findet dort kein Mensch mehr. Kann man nicht etwas konfigurieren, was im Grunde die selbe Information beinhaltet aber nur auf dieses eine Benutzerobjekt wirkt und nachdem man gezielt filtern kann?

    Thx & Bye Tom

    Donnerstag, 5. November 2020 14:52

  • Puh, das findet dort kein Mensch mehr. 

    Zeit, PowerShell zu lernen :-)

    Evgenij Smirnov

    http://evgenij.smirnov.de

    Donnerstag, 5. November 2020 14:58
  • > Zeit, PowerShell zu lernen :-)

    Da kann ich nach dem Inhalt eines Events suchen? Dass ich die Event IDs filtern kann, wusste ich aber nach einen Benutzernamen in einem Event...?

    Bye Tom

    Donnerstag, 5. November 2020 16:35
  • Moin,

    mit einem hochkomplexen XPath-Filter auch das, aber Du kannst ja *nachträglich* filtern. Hier ein Beispiel, aber schau Dir mal die Arbeit von Przemyslaw Klys, er hat das Thema ziemlich an die Spitze getrieben.

    <#
        Gathers Event 4624 from all DCs der specified domain and filters out computer account logons.
    #>
    [CmdletBinding()]
    Param(
        [Parameter(Mandatory=$false)][string]$DomainName = "my.ad.doma.in",
        [Parameter(Mandatory=$false)][ValidateRange(1,2880)][int]$PastMinutes = 5,
        [Parameter(Mandatory=$false)][string]$UserName
    )
    if (@(Get-Module ActiveDirectory -ListAvailable).Count -gt 0) {
        Import-Module ActiveDirectory
    } else {
        Write-Warning "ActiveDirectory module not found!"
        exit
    }
    if ([string]::IsNullOrEmpty($DomainName)) {
        $DomainName = $env:USERDNSDOMAIN
    }
    try {
        $addom = Get-ADDomain $DomainName -EA Stop
    } catch {
        $addom = $null
    }
    if ($addom -eq $null) { exit }
    $LTValues = @{
        '2' = 'Interactive'
        '3' = 'Network'
        '4' = 'Batch'
        '5' = 'Service'
        '7' = 'Unlock'
        '8' = 'NetworkCleartext'
        '9' = 'NewCredentials'
        '10' = 'RemoteInteractive'
        '11' = 'CachedInteractive'
    }
    $dcs = $addom.ReplicaDirectoryServers
    $i = 0
    $filter = @{
        'LogName' = 'Security'
        'id' = 4624
        'starttime' = (Get-Date).AddMinutes(-$PastMinutes)
    }
    $results = @()
    foreach ($dc in $dcs) {
        $i++
        Write-Progress -Status "Gathering event log from DC $(($dc -split "\.")[0]) ($i/$($dcs.Count))" -Activity "Harvesting DCs..." -PercentComplete (100 * $i / $dcs.Count) -id 1
        $events = Get-WinEvent -ComputerName $dc -FilterHashtable $filter
        $j = 0
        Write-Host "Harvested $($events.Count) events from DC $dc"
        foreach ($event in $events) {
            $j++
            Write-Progress -Status "Processing event $($j)/$($events.Count))" -Activity "Processing events..." -PercentComplete (100 * $j / $events.Count) -Id 2
            if ($event.Properties[5].Value -notmatch '\$$') {
                if ([string]::IsNullOrEmpty($UserName) -or ($event.Properties[5].Value -eq $UserName)) {
                    if ($event.Properties[11].Value -ne '-') {
                        $ws = $event.Properties[11].Value
                    } else {
                        $ws = $null
                    }
                    if ($event.Properties[18].Value -ne '-') {
                        $ip = $event.Properties[18].Value
                    } else {
                        $ip = $null
                    }
                    $res = [PSCustomObject]@{
                        'UserName' = $event.Properties[5].Value
                        'LogonDC' = $dc
                        'Timestamp' = $event.TimeCreated
                        'LogonType' = $event.Properties[8].Value
                        'LogonTypeText' = $LTValues[($event.Properties[8].Value.ToString())]
                        'AuthPackage' = $event.Properties[10].Value
                        'Workstation' = $ws
                        'IPAddress' = $ip
                    }
                    $results += $res
                }
            }
        }
        Write-Progress -Status "Processing completed" -Activity "Processing events..." -Id 2 -Completed
    }
    $results


    Evgenij Smirnov

    http://evgenij.smirnov.de

    Donnerstag, 5. November 2020 17:04
  • Am 05.11.2020 schrieb Thomas Pronto Wildgruber:

    > Zeit, PowerShell zu lernen :-)

    Da kann ich nach dem Inhalt eines Events suchen? Dass ich die Event IDs filtern kann, wusste ich aber nach einen Benutzernamen in einem Event...?

    Schau mal ob dir das hier weiter hilft:
    https://devblogs.microsoft.com/scripting/filtering-event-log-events-with-powershell/

    Servus
    Winfried


    WSUS Package Publisher:
    https://github.com/DCourtel/Wsus_Package_Publisher
    HowTos für WSUS/WPP: http://www.wsus.de/wpp
    GPO's: http://www.gruppenrichtlinien.de
    NNTP-Bridge für MS-Foren: http://communitybridge.codeplex.com/

    Donnerstag, 5. November 2020 17:18
  • Wenn Du Client/Server-Events aufzeichnest (beispielsweise mit Windows Event Forwarding) wäre eventuell auch das hier hilfreich (für Logons an einem Rechner): https://docs.microsoft.com/de-de/windows/security/threat-protection/auditing/audit-special-logon.

    Generell wäre es aber auch eine Diskussion wert, warum die GF in den Domänen-Admins drin stehen muss ;).


    Dienstag, 10. November 2020 11:47
  • Servus,

    Da scheinen wirklich viele Wege zum Ziel zu führen.

    > Wenn Du Client/Server-Events aufzeichnest (beispielsweise mit Windows Event Forwarding) wäre eventuell auch das hier hilfreich (für Logons an einem Rechner)

    Ich denke das müsste auch mit dem Abgleich des Passworts im AD abgedeckt sein. Ich habe jetzt zwei Varianten ausprobiert. Einmal das Parsen des Logfiles nach dem betroffenen Benutzerobjekt im Event 4769. Dazu wäre ausser das Parsen keine weitere Maßnahme notwendig. Aus akademischen Interesse dann noch das Aktivieren der entsprechenden GPO, welche im Grunde die gleiche Information im Event 4624 abspeichert.

    Dazu habe ich jetzt in der Ereignisanzeige eine benutzerdefinierte Ansicht erstellt, die alle Events sammelt, in welcher das Benutzerobjekt im entsprechenden Event vorkommt. Ich wollte dann noch die E-Mail Notification einrichten, die eine E-Mail an die IT schickt, wenn das Event eintritt aber das hat bislang irgendwie noch nicht funktioniert. Die Aufgabe startet zwar aber eine E-Mail wird nicht gesendet und die Aufgabe beendet sich auch nicht mehr. Das ist aber erst mal nicht so wichtig, dass schaue ich mir später an.

    https://community.spiceworks.com/how_to/164925-monitor-and-alert-upon-a-specific-user-logon

    > Generell wäre es aber auch eine Diskussion wert, warum die GF in den Domänen-Admins drin stehen muss

    Berechtigte Frage aber das wurde schon abgeklärt, dass wir der Bitte nachkommen müssen. Im Grunde geht es der GL darum, dass die Infrastruktur weiter administriert werden kann, wenn ein Admin von einem Satellit erschlagen wird und der zweite zeitgleich vom Bus überfahren wird.

    Ein dedizierter Benutzer für die Geschäftsleitung wurde deshalb angelegt, um genau nach diesen filtern zu können. Es bringt uns nichts das Domänenadmin-Passwort einfach so rauszugeben, da wir dann nicht mehr zwischen den Zugriffen unterscheiden können. Taucht aber der dedizierte Admin in den Logfiles auf, gibt es Gesprächsbedarf.

    Da ja noch eine Reihe weiterer Passwörter infrage kommen, sind wir noch am überlegen wie wir die gesamte Liste schützen und den Zugriff protokollieren sollen. Daran arbeiten wir noch aber das Domänenadminpasswort ist schon erst mal das wichtigste Passwort. Wer sich auskennt, kann damit eigentlich alles weitere herausfinden aber am Ende soll das ganze ja keine Schnitzeljagd werden, sondern einem Dienstleister die Möglichkeit geben den Kahn bei Maschinenschaden sicher ans Ufer zu bringen.

    Thx & Bye Tom   



    Dienstag, 10. November 2020 13:22