Inhalt
Was ist ADSISearcher?
ADSISearcher ist eine Vereinfachung der .NET-Klasse `System.DirectoryServices.DirectorySearcher` in PowerShell. Es ermöglicht, LDAP-Abfragen zu stellen, um Daten aus dem Active Directory abzurufen, wie z. B. Benutzer- und Computerinformationen, Gruppenmitgliedschaften und weitere Eigenschaften von AD-Objekten. Die Syntax ist vergleichsweise simpel, da ADSISearcher eine Kurzform darstellt.
Wie führe ich eine einfache Abfrage mit ADSISearcher durch?
LDAP (Lightweight Directory Access Protocol) ist ein Protokoll zur Abfrage und Änderung von Verzeichnisdiensten wie Active Directory. Um ADSISearcher zu nutzen, ist es wichtig, die LDAP-Syntax zu verstehen. Die Abfragen werden durch Filter realisiert, die mit Attributen wie `objectClass` oder `objectCategory` arbeiten. Beispiel für eine Benutzerabfrage:
([adsisearcher]”(objectCategory=person)”).FindAll()
Diese Abfrage sucht nach allen Benutzerobjekten in der AD-Domain.
Wie verbessere ich die Leistung von ADSISearcher-Abfragen?
Eine der größten Herausforderungen bei der Arbeit mit ADSISearcher ist die Optimierung der Abfragen für große AD-Umgebungen. Effiziente Abfragen basieren auf indizierten Attributen, wie z. B. `sAMAccountType`, das für Benutzerobjekte auf den Wert `805306368` gesetzt ist. Dies reduziert die Last auf den Domain-Controller und verkürzt die Suchzeiten. Eine ineffiziente Abfrage wie `(&(objectClass=user)(objectCategory=person))` kann die AD-Server belasten, da beide Attribute nicht optimiert sind.
Wie finde ich inaktive Benutzer oder Computer?
ADSISearcher ermöglicht es, inaktive Benutzer oder Computer zu finden, indem Attribute wie `lastLogon` oder `lastLogonTimestamp` abgefragt werden. Diese Attribute geben an, wann ein Benutzer oder Computer zuletzt angemeldet war. Um z. B. inaktive Computer zu finden, die seit 90 Tagen nicht angemeldet waren, kann folgende Abfrage verwendet werden:
([adsisearcher]”(&(objectCategory=computer)(lastLogonTimestamp<=$((Get-Date).AddDays(-90).ToFileTime())))”).FindAll()
Dies hilft dabei, potenzielle Sicherheitsrisiken durch ungenutzte Accounts zu minimieren.
Welche Attribute sind am nützlichsten für AD-Abfragen?
ADSISearcher ermöglicht das Laden spezifischer AD-Attribute, um die Ausgabe der Suchergebnisse auf relevante Daten zu beschränken, was die Performance verbessert. Beispiel:
$searcher = [adsisearcher]”(objectCategory=user)”
$searcher.PropertiesToLoad.AddRange(@(‘sAMAccountName’, ‘displayName’, ‘lastLogon’))
$searcher.FindAll()
In diesem Fall werden nur die `sAMAccountName`, `displayName` und das `lastLogon`-Attribut zurückgegeben. Diese Präzisierung hilft, die Ausgabe zu strukturieren und Abfragen schneller zu gestalten.
Abfrage von Service Principal Names (SPN) und speziellen Konten
ADSISearcher kann ebenfalls verwendet werden, um Service Accounts oder spezielle Benutzer zu finden, indem Attribute wie `servicePrincipalName` abgefragt werden. SPNs sind essenziell für die Authentifizierung von Diensten im Netzwerk. Solche Abfragen sind häufig in der Sicherheitsüberprüfung von Bedeutung, um Schwachstellen zu identifizieren, wie z. B. schlecht konfigurierte Service-Accounts.
Durch die Möglichkeit, AD gezielt nach sicherheitsrelevanten Informationen abzufragen, spielt ADSISearcher eine Schlüsselrolle in der Überwachung und Verteidigung von IT-Infrastrukturen.
Zurück zur Übersicht des Glossars