Frage Der beste Weg, den Computer zu finden, von dem sich ein Benutzer zuletzt angemeldet hat?


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

Der Zweck, den letzten angemeldeten PC kennenzulernen, ist Remote-Support über das Netzwerk anzubieten - unsere Benutzer bewegen sich ziemlich selten, aber ich würde gerne wissen, dass das, was ich berate, an diesem Morgen aktualisiert wird (wenn sie sich eingeloggt haben) , vermutlich) mindestens.

Ich denke auch über Anmeldeskripts nach, die die Benutzer- und Computernamen an einen bekannten Speicherort 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 Login-Skripte verwendet, dann erwähne sie definitiv - aber wenn es nur dazu kommt, die Station zu entsperren, wäre das sogar noch besser!


19
2017-07-23 21:32


Ursprung




Antworten:


Als Teil unseres Anmeldeskriptes habe ich diese Informationen (und mehr) in einer versteckten Freigabe auf einem Server mit einer Protokolldatei pro Benutzer angemeldet. Ein Abmeldeskripts fügt die Uhrzeit hinzu, zu der sich der Benutzer in derselben Protokolldatei abgemeldet hat. Einfach einzurichten, kostenlos und die Informationen sind in einem leicht lesbaren Format verfügbar.


22
2017-07-23 22:24



+1 sehr saubere Idee! - Frenchie
Außerdem erhalten Sie durch Anhängen an das Protokoll eine historische Aufzeichnung, die manchmal sehr nützlich sein kann. - John Gardeniers
Implementiert dies für jetzt, wird wahrscheinlich zu einem Vbs mit mehr Funktionen in der Zukunft :) Bis jetzt, mit einem sehr einfachen Batch-Login-Skript: Echo% Datum%,% Zeit%,% Benutzername%, Anmeldung,% Computername% >> \\ server \ logon $ \ logons.csv Mit Excel öffnen, und Sie sind fertig! - Garrett
Wird das Anmeldeskript als Benutzer ausgeführt? In diesem Fall kann der Benutzer auch das Protokoll öffnen und ändern. - James Yale
Ich habe etwas Ähnliches gemacht, außer dass das Anmeldeskript einen Webservice aufgerufen hat, der eine Datenbank aktualisiert hat. Die Datenbank hatte ein Web-Frontend, um den aktuellen Status anzuzeigen. Es war jedoch problematisch für mobile Benutzer. - Nic


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

Sie müssen eine benutzerdefinierte Delegierung des Steuerelements ausführen, damit "Authentifizierte Benutzer" die Beschreibungseigenschaft von Computerobjekten in der Domäne / den Domänen 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 Gruppenrichtlinienobjekt zugewiesen, das mit der Domäne verknüpft ist.

Wir haben einen Zeitstempel, Benutzernamen, IP (s) in das Beschreibungsfeld eingegeben. Der Zeitstempel steht an erster Stelle, weil er es einfach macht, "alte" Computerobjekte schnell zu erkennen, indem er im Beschreibungsfeld sortiert.

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

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
2017-07-24 11:03





Ich musste das gleiche Ergebnis aus ähnlichen Gründen erreichen; Bestimmen Sie, von welcher Maschine sich ein bestimmter Benutzer angemeldet hat. Ich wollte "vor der Tat" wissen und konnte Benutzer-Login-Skripte nicht ändern, wie oben beschrieben.
Ich habe Powershell auf dem Domänencontroller verwendet, für den 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 mit Excel oder Ihrem Favoriten-Editor und suchen Sie nach dem neuesten Eintrag, der sowohl den Kontonamen (Benutzername) als auch die Quell-Netzwerkadresse innerhalb desselben Ereignisses anzeigt.
Dies ist möglicherweise keine 100% zuverlässige Lösung (abhängig von DHCP Lease-Zeiten, etc.), aber es hat für mich funktioniert.


6
2018-03-01 00:38





Sie können Aktivieren Sie das Auditing für Kontoanmeldungsereignisse. Diese Veranstaltungen (einschließlich Arbeitsstationsentsperrung) wird im Sicherheitsprotokoll des Domänencontrollers gespeichert.

Es gibt auch Drittanbieter-Tools, die dies erleichtern können, wie z Wahre letzte Anmeldung.


6
2017-07-23 21:49





Ich schreibe einfach den Benutzernamen (sowie weitere Informationen, wie Datum und Uhrzeit, einige Programmversionen usw.) in die Computerbeschreibung mit einem Anmeldeskript. Auf diese Weise kann ich alle Informationen von AD Users & Computers schnell und einfach abrufen und als Bonus eine gute Möglichkeit identifizieren, welche PCs noch immer in AD seit einiger Zeit nicht mehr benutzt werden (und daher höchstwahrscheinlich tote Maschinen sind).


4
2017-07-24 09:06





ThatGraemeGuyDanke für das ausgezeichnete Skript! Ich musste es in PowerShell umschreiben, 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 'yyyy-MM-dd@HH: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
2017-11-24 07:58





Der Trick, genau zu wissen, wo sich die Benutzer zuletzt eingeloggt haben, ist die Protokollzusammenstellung. Wenn Sie mehrere Domänencontroller haben, müssen Sie entweder alle überprüfen oder die 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
2017-07-23 22:09





Der einzige Weg, um die neuesten Informationen zu erhalten, ist das Logging. Verwenden Sie ein Tool wie Microsoft Operations Manager oder ein kostenloses Tool wie Snare, um interessante Ereignisprotokolle vom Server an eine zentrale Stelle (normale Textdateien oder SQL-Datenbank) zu aggregieren und dann Tools wie Logparser- oder SQL-Abfragen zu verwenden, um den gewünschten Bericht zu generieren.

um verschiedene Ereignis-IDs für verschiedene Ereignisse zu finden, gehen Sie durch Ereignisprotokoll-Enzyklopädie

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


0
2017-07-25 07:48





Idealerweise würden Sie Folgendes für Ihr CSIRT-Team erfassen, um bei den Invastierungen zu helfen.

Benutzerkennung beim Anmelden Name der Arbeitsstation MAC-Adresse IP Adresse Datum / Zeitstempel Login-Typ (RDP, Interfactive usw.)

Dann dump das in einen SQL-Befehl in eine Datenbank, die sie abfragen können. Bits und Teile werden überall protokolliert, aber das Aufzeichnen spart Zeitersparnis beim Ziehen der Daten von DHCP / WINS-Servern usw.


0
2017-07-30 15:58



Ich denke, das ist ein bisschen übertrieben für "Hey, was ist Donnys Computername?" aber vielleicht werden wir eines Tages auf dieser Ebene sein: P - Garrett


Wenn Sie nach einer historischen Referenz suchen, können Sie ein Tool von Drittanbietern wie Anmeldezentrale von Motivate Systems. Es zeichnet alle Active Directory-Benutzeranmeldungen auf und stellt eine Webschnittstelle für Data Mining bereit. Es enthält auch einige ziemlich gute Graphen, die Logon-Statistiken in Prozent verwenden.


0
2018-03-26 19:34





ind Einloggen in AD

Oftmals müssen wir wissen, ob ein bestimmter Login Teil der Nutzergruppe ist. Oder manchmal müssen wir eine AD-Gruppe kennen und wissen, wer alle Logins dazu gehört.

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

Ich folge diesem Schritt, um eine Verknüpfung auf meinem Desktop zu erstellen, wo ich die Logins leicht finden kann Bitte folgen Sie dem Vorgang als

START-> RUN -> rundll32 dsquery, OpenQueryWindow

Sie können alle AD finden, mit denen Sie verbunden sind.

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


0
2018-02-01 12:26