it-swarm.com.de

Der beste Weg, um den Computer zu finden, von dem ein Benutzer zuletzt angemeldet war?

Ich hoffe, dass irgendwo in Active Directory das "zuletzt von [Computer] angemeldete" geschrieben/gespeichert wird oder dass es ein Protokoll gibt, das ich analysieren kann?

Der Zweck, den letzten angemeldeten PC kennen zu wollen, besteht darin, Remote-Support über das Netzwerk anzubieten - unsere Benutzer bewegen sich ziemlich selten, aber ich würde gerne wissen, dass alles, was ich berate, an diesem Morgen aktualisiert wurde (als sie sich angemeldet haben) vermutlich) mindestens.

Ich denke auch über Anmeldeskripte nach, die die Benutzer- und Computernamen an einen bekannten Ort schreiben, auf den ich verweisen kann, aber einige unserer Benutzer möchten sich nicht für jeweils 15 Tage abmelden.

Wenn es eine elegante Lösung gibt, die Anmeldeskripte verwendet, erwähnen Sie sie auf jeden Fall - aber wenn es nur zum Entsperren der Station funktioniert, wäre das sogar noch besser!

24
Garrett

Als Teil unseres Anmeldeskripts habe ich diese Informationen (und mehr) in einer versteckten Freigabe auf einem Server mit einer Protokolldatei pro Benutzer angemeldet. Ein Abmeldeskript fügt die Zeit hinzu, die der Benutzer bei derselben Protokolldatei abgemeldet hat. Einfach einzurichten, keine Kosten und die Informationen sind in einem einfach zu lesenden Format verfügbar.

26
John Gardeniers

Wir tun dies über ein Anmeldeskript, das die Beschreibung des Computerobjekts in AD aktualisiert.

Sie müssen eine benutzerdefinierte Delegierung der Steuerung durchführen, damit "Authentifizierte Benutzer" die Beschreibungseigenschaft von Computerobjekten in die Domäne (n) schreiben können.

Sobald dies erledigt ist, benötigen Sie lediglich ein Skript, das die gewünschten Informationen generiert und die Eigenschaften in das Computerobjekt schreibt. Dieses Skript wird dann als Anmeldeskript über ein mit der Domäne verknüpftes Gruppenrichtlinienobjekt zugewiesen.

Wir geben einen Zeitstempel, einen Benutzernamen und eine IP in das Beschreibungsfeld ein. Der Zeitstempel steht an erster Stelle, da er das Sortieren "alter" Computerobjekte durch Sortieren im Beschreibungsfeld erleichtert.

Hier ist das Skript, das ich dafür geschrieben habe, wenn Sie es als Ausgangspunkt verwenden möchten:

On Error Resume Next

Set objSysInfo = CreateObject("ADSystemInfo") 'Bind to AD
Set objNet = CreateObject("WScript.Network")

strCompDN = objSysInfo.ComputerName 'DN for computer, e.g. "CN=VISTAWORKSTATION,OU=Child OU Name,OU=Parent OU Name,DC=domain,DC=com"
Set objComp = GetObject("LDAP://" & strCompDN) 'IADsComputer object

strUserDN = objSysInfo.UserName 'DN for user, e.g. "CN=John Smith,OU=Child OU Name,OU=Parent OU Name,DC=domain,DC=com"
Set objUser = GetObject("LDAP://" & strUserDN) 'IADsUser object

strUsrLogin = LCase(objNet.UserName)

strNow = Now
strDateStamp = DatePart("yyyy",strNow) & _
    Right("0" & DatePart("m",strNow), 2) & _
    Right("0" & DatePart("d",strNow), 2) & _
    "@" & _
    Right("0" & DatePart("h",strNow), 2) & _
    Right("0" & DatePart("n",strNow), 2)

'RegExp object used to perform a simple match on IP address
Set objRE = New RegExp
objRE.IgnoreCase = True
'Note this regexp pattern isn't "correct" for matching an IPv4 address properly, but since WMI will return an
'array of IP addresses, this is sufficient to distinguish IPv4 vs IPv6
objRE.Pattern = "^\d+\.\d+\.\d+\.\d+$"

strIP = ""

'Connect to WMI and retreive all network adapters
Set objWMI = GetObject("winmgmts:")
Set colNICs = objWMI.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration")

'Get the IP(s) assigned to whichever network adapter has our default gateway
If colNICs.Count > 0 Then
    For Each objNIC in colNICs
        If IsArray(objNIC.DefaultIPGateway) Then
            arrIP = objNIC.IPAddress
            For i = 0 To UBound(arrip)
                If objRE.Test(arrIP(i)) Then strIP = strIP & " " & arrIP(i)
            Next
            strMAC = objNIC.MACAddress
        End If  
    Next
End If

strIP = Trim(strIP)

objComp.Description = strDateStamp & " " & strUsrLogin & " " & strIP
objComp.Put "extensionAttribute1", strUsrLogin
objComp.Put "extensionAttribute2", strIP
objComp.Put "extensionAttribute3", strMAC

objComp.SetInfo
10
ThatGraemeGuy

Ich musste aus ähnlichen Gründen das gleiche Ergebnis erzielen; Bestimmen Sie irgendwie, auf welchem ​​Computer sich ein bestimmter Benutzer angemeldet hat. Ich wollte "vorher" wissen und konnte die Benutzeranmeldeskripte nicht wie oben beschrieben ändern.
Ich habe Powershell für das DC) verwendet, gegen das sich der Benutzer authentifiziert hat, um das Sicherheitsereignisprotokoll zu analysieren:

get-eventlog "Security" | where {$_.Message -like "*Username*" -AND "Source Network Address"} | export-csv C:\Temp\test.csv

Öffnen Sie die CSV-Datei mit Excel oder Ihrem Lieblingseditor und suchen Sie nach dem neuesten Eintrag, in dem sowohl der Kontoname (Benutzername) als auch die Quellnetzwerkadresse innerhalb desselben Ereignisses angezeigt werden.
Dies ist möglicherweise keine 100% zuverlässige Lösung (abhängig von den DHCP-Lease-Zeiten usw.), aber es hat bei mir funktioniert.

6
marcusjv

Sie können Überwachung aktivieren für Kontoanmeldeereignisse. Diese Ereignisse (einschließlich der Entsperrung der Workstation) werden im Sicherheitsprotokoll des DC gespeichert.

Es gibt auch Tools von Drittanbietern, die dies vereinfachen können, z. B. True Last Logon .

6
Adam Brand

Ich schreibe einfach den Benutzernamen (sowie andere Informationen wie Datum und Uhrzeit, einige Programmversionen usw.) mithilfe eines Anmeldeskripts in die Computerbeschreibung. Auf diese Weise kann ich schnell und einfach alle Informationen von AD-Benutzern und -Computern abrufen und als Bonus eine gute Möglichkeit finden, festzustellen, welche PCs, die sich noch in AD befinden, seit einiger Zeit nicht mehr verwendet wurden (und daher höchstwahrscheinlich tote Maschinen sind).

4
Maximus Minimus

ThatGraemeGuy, danke für das exzellente Skript! Ich musste es in PowerShell neu schreiben, aber es funktioniert immer noch.

$CompDN = "(&(objectCategory=computer)(objectClass=computer)(cn=$env:COMPUTERNAME))"
$strCompDN = [string]([adsisearcher]$CompDN).FindOne().Properties.distinguishedname
$objComp = [ADSI]("LDAP://"+$strCompDN)

# quit if computer is a server or DC
if (($strCompDN -like '*Controller*') -or ($strCompDN -like '*SERVER*')) { exit }

$strUsrLogin = $env:username
$strDateStamp = Get-Date -f '[email protected]:mm'
$IPPattern = "^\d+\.\d+\.\d+\.\d+$"

$colNICs = gwmi Win32_NetworkAdapterConfiguration
if ($colNICs.Count -gt 0) {
foreach ($objNIC in $colNICs){
        if ($objNIC.DefaultIPGateway) {
            $arrIP = $objNIC.IPAddress
            for ($i=0; $i -lt $colNICs.Count; $i++) { 
            if ($arrIP[$i] -match $IPPattern) { $strIP = $arrIP[$i]; $strMAC = $objNIC.MACAddress }
            }
        }
    }
}

$objComp.Description = $strDateStamp + " - " + $strUsrLogin + " - " + $strIP
$objComp.extensionAttribute1 = $strUsrLogin
$objComp.extensionAttribute2 = $strIP
$objComp.extensionAttribute3 = $strMAC
$objComp.SetInfo()
3

Der Trick, um sicher zu wissen, wo sich Benutzer zuletzt angemeldet haben, ist neben den Vorschlägen von Adam die Protokollaggregation. Wenn Sie mehrere Domänencontroller haben, müssen Sie entweder alle überprüfen oder Ihre Protokollierung zentralisieren und dann das einzelne Protokoll überprüfen.

Einige, vielleicht sogar die meisten Tools von Drittanbietern sind intelligent genug, um alle Domänencontroller abzufragen. Aber wenn Sie daran denken, ein Skript zu schreiben, um es selbst zu analysieren, kann ich nicht stark genug für die Zentralisierung Ihrer Protokolle argumentieren.

2
Laura Thomas

Im Idealfall erfassen Sie Folgendes für Ihr CSIRT-Team, um bei Untersuchungen behilflich zu sein.

benutzer-ID, die sich mit dem Namen der Arbeitsstation anmeldet MAC-Adresse IP-Adresse Datum/Zeitstempel Anmeldetyp (rdp, interaktiv usw.)

Speichern Sie das dann in einem SQL-Befehl in einer Datenbank, die sie abfragen können. Kleinigkeiten werden überall protokolliert, aber das Aufzeichnen spart Zeit beim Abrufen der Daten von DHCP/WINS-Servern usw.

1
Scott

Ich wollte dies als Kommentar zu Marcusjvs Antwort oben hinzufügen, aber ich habe nicht den Ruf, so dass eine separate Antwort reichen muss:

In diesem Ausdruck wird -AND "Source Network Address" immer als TRUE ausgewertet

Ich denke, was Sie brauchen, ist: get-eventlog "Sicherheit" | where {$ . Message-like "* username *" -AND $. Message.contains ("Source Network Address")}

1
SS64

ind In AD anmelden

Oft müssen wir wissen, ob ein bestimmtes Login Teil der Anzeigenbenutzergruppe ist. Oder manchmal müssen wir eine AD-Gruppe kennen und wollten wissen, wer alle Anmeldungen sind.

Es gibt viele verschiedene Möglichkeiten, dies zu erreichen.

Ich folge diesem Schritt, um eine Verknüpfung auf meinem Desktop zu erstellen, in der ich die Anmeldungen leicht finden kann. Folgen Sie dem Vorgang als

START-> RUN -> rundll32 dsquery, OpenQueryWindow

Auf diese Weise können Sie alle ADs finden, zu denen Sie gehören.

Start-> Einstellungen-> Systemsteuerung -> Administrator-Tools -> Active Directory-Benutzer und -Computer Wählen Sie die Domäne aus, für die Sie sich anmelden möchten, klicken Sie mit der rechten Maustaste auf diese Domäne und wählen Sie die Option "Suchen".

0
Lepide

Die einzige Möglichkeit, die neuesten Informationen zu erhalten, ist die Suche nach Protokollen. Verwenden Sie ein Tool wie Microsoft Operations Manager oder ein kostenloses Tool wie Snare, um interessante Ereignisprotokolle vom Server an einem zentralen Ort (normale Textdateien oder SQL-Datenbank) zusammenzufassen, und verwenden Sie dann Tools wie Logparser oder SQL-Abfragen, um den gewünschten Bericht zu generieren.

um verschiedene Ereignis-IDs für verschiedene Ereignisse zu finden, gehen Sie zu Event Log Encyclopedia

Lassen Sie mich wissen, wenn Sie dieser Route folgen möchten, kann ich Ihnen helfen, die entsprechenden Abfragen für logparser zu erstellen.

0
KAPes

Wenn Sie nach einer historischen Referenz suchen, können Sie ein Drittanbieter-Tool wie Logon Central von Motivate Systems ausprobieren. Es zeichnet alle Active Directory-Benutzeranmeldungen auf und bietet eine Weboberfläche für das Data Mining. Es enthält auch einige ziemlich gute Grafiken, die Anmeldestatistiken in prozentuale Auslastung umwandeln.

0
Scott