Skript-Monitore sind nur so nützlich wie die Skripte, die sie antreiben. Diese Beispiele zeigen vollständige End-to-End-Konfigurationen — das Skript, die Monitor-Einstellungen und die Gründe für jede Entscheidung — damit Sie sie unverändert bereitstellen oder als Ausgangspunkt für Ihre eigenen verwenden können.
Beispiel 1: Erkennung nicht autorisierter lokaler Administratoren
Dieser Monitor warnt, wenn ein Windows-Gerät ein lokales Administratorkonto hat, das nicht auf Ihrer genehmigten Liste steht — eine häufige Compliance- und Sicherheitsprüfung.
Das Skript vergleicht aktivierte lokale Admin-Konten mit einer autorisierten Liste, die in einem benutzerdefinierten Feld gespeichert ist (##{{cf_authorized_admins}}). Wenn es jemanden findet, der dort nicht sein sollte, gibt es ALERT aus und beendet sich mit Code 1.
PowerShell-Skript
$AuthorizedAdmins = "##{{cf_authorized_admins}}"
# Alle aktivierten lokalen Admin-Konten abrufen
$admins = Get-LocalGroupMember -Group "Administrators" |
Where-Object { $_.ObjectClass -eq 'User' -and (Get-LocalUser $_.SID).Enabled -eq $true } |
Select-Object -ExpandProperty Name
# Domänenpräfix entfernen, in Kleinbuchstaben normalisieren
$admins = $admins | ForEach-Object { ($_ -split '\\\\')[-1] }
$detectedArray = ($admins -join ",") -split ',' | ForEach-Object { $_.Trim().ToLower() }
$authorizedArray = $AuthorizedAdmins -split ',' | ForEach-Object { $_.Trim().ToLower() }
# Administratoren finden, die nicht auf der autorisierten Liste stehen
$unauthorizedAdmins = $detectedArray | Where-Object { $authorizedArray -notcontains $_ }
if ($unauthorizedAdmins.Count -gt 0) {
Write-Output "Unauthorized Admins ALERT: $($unauthorizedAdmins -join ',')\"
exit 1
} else {
Write-Output "No unauthorized admins detected."
exit 0
}Monitor-Konfiguration:
Feld | Wert |
Typ | Skript ausführen |
OS | Windows |
Skript | Windows - Nicht autorisierte Administratoren |
Skriptausgabe | Enthält |
Wert |
|
Laufhäufigkeit | 1 Stunde |
Trigger-Anzahl | 1 |
Wenn ein nicht autorisierter Administrator vorhanden ist, enthält die Ausgabe ALERT und der Monitor wird ausgelöst. Wenn die Kontoliste sauber ist, enthält die Ausgabe nicht ALERT und der Monitor bleibt still.
💡 TIPP: Legen Sie cf_authorized_admins als benutzerdefiniertes Feld auf Gruppen- oder Organisationsebene fest, sodass eine einzelne verwaltete Liste alle Ihre Geräte abdeckt. Sie können sie pro Gerät überschreiben, wenn spezifische Maschinen unterschiedliche Admin-Anforderungen haben.
Die Admin-Monitoring-Richtlinie importiert alles, was zum Ausführen dieser Überprüfung auf Windows, macOS und Linux erforderlich ist: drei vorkonfigurierte Monitore (einer pro OS), alle drei Skripte, das benutzerdefinierte Feld Autorisierte Administratoren und die Tags Workstation und Server.
Beispiel 2: Überwachung der Gerätelaufzeit
Dieser Monitor warnt, wenn ein Gerät länger als 30 Tage läuft, ohne neu gestartet zu werden — ein Signal, dass Patch-Zyklen möglicherweise verpasst wurden oder dass ein Gerät vernachlässigt wird.
Das Skript ist eine einfache osquery-Abfrage:
osQuery-Skript
SELECT days FROM uptime;
osquery gibt die Anzahl der Tage seit dem letzten Start als reine Ganzzahl zurück. Der Monitor vergleicht diesen Wert direkt mit Größer als.
Monitor-Konfiguration:
Feld | Wert |
Typ | Skript ausführen |
OS | Windows (oder macOS / Linux — osquery ist plattformübergreifend) |
Skript | OsQuery Monitor - Laufzeit |
Skriptausgabe | Größer als |
Wert |
|
Laufhäufigkeit | 24 Stunden |
Trigger-Anzahl | 1 |
Wenn die Laufzeit 30 Tage überschreitet, wird der Monitor ausgelöst. Nach einem Neustart, der die Laufzeit unter 30 Tage bringt, wird die Warnung automatisch gelöst.
Die Kopplung dieses Monitors mit einer Abhilfezweckautomat Benutzer zum Neustarten auffordern bedeutet, dass der Benutzer direkt zum Neustart benachrichtigt wird — keine Technikereingabe erforderlich für den häufigen Fall.
💡 TIPP: osquery läuft auf Windows, macOS und Linux. Sie können drei separate Monitore erstellen — einen pro OS — die alle auf das gleiche Skript verweisen, um plattformübergreifende Laufzeitabdeckung zu erhalten.
Die Laufzeit-Monitoring-Richtlinie importiert drei vorkonfigurierte Monitore (Windows, macOS und Linux) und das Osquery-Laufzeitskript — bereit zur Zuweisung zu einer Gruppe.
Beispiel 3: Überwachung der DNS-Serverkonfiguration
Dieser Monitor warnt, wenn ein Windows-Gerät DNS-Server verwendet, die nicht auf Ihrer genehmigten Liste stehen — nützlich zur Erkennung von Fehlkonfigurationen, DHCP-Drift oder nicht autorisierten Änderungen.
Das Skript vergleicht die aktiven DNS-Server des Geräts mit einer autorisierten Liste, die in einem benutzerdefinierten Feld gespeichert ist (##{{cf_dns}}). Wenn eine Schnittstelle DNS-Server außerhalb der genehmigten Liste hat, gibt es ALERT aus und beendet sich mit Code 1.
PowerShell-Skript
# Kommagetrennte Liste der erwarteten DNS-Server
$allowedDnsServers = "##{{cf_dns}}"
$allowedDnsServersArray = $allowedDnsServers -split "\\s*,\\s*"
function Check-DnsServers {
$networkInterfaces = Get-WmiObject -Class Win32_NetworkAdapterConfiguration | Where-Object { $_.IPEnabled }
foreach ($interface in $networkInterfaces) {
$dnsServers = $interface.DNSServerSearchOrder
Write-Host "Interface: $($interface.Description)"
Write-Host "Allowed DNS servers: $($allowedDnsServersArray -join ', ')"
Write-Host "Current DNS servers: $($dnsServers -join ', ')"
if ($dnsServers -ne $null -and $dnsServers.Count -gt 0) {
$matchingServers = @($dnsServers | Where-Object { $allowedDnsServersArray -contains $_ })
if ($matchingServers.Count -eq $dnsServers.Count) {
Write-Host "SUCCESS: DNS servers match the allowed list."
exit 0
} else {
Write-Host "ALERT: Not all DNS servers are in the allowed list."
exit 1
}
} else {
Write-Host "ALERT: No DNS servers configured"
exit 0
}
}
}
Check-DnsServers
Monitor-Konfiguration:
Feld | Wert |
Typ | Skript ausführen |
OS | Windows |
Skript | Windows Monitor - DNS-Server |
Skriptausgabe | Enthält |
Wert |
|
Laufhäufigkeit | 1 Stunde |
Trigger-Anzahl | 1 |
Wenn ein DNS-Server außerhalb der autorisierten Liste erkannt wird, enthält die Ausgabe ALERT zusammen mit dem Schnittstellennamen und den tatsächlich konfigurierten DNS-Servern — sichtbar in der Warnlast für schnelle Diagnose. Wenn alle Schnittstellen mit der autorisierten Liste übereinstimmen, wird keine Warnung ausgelöst.
💡 TIPP: Legen Sie cf_dns als benutzerdefiniertes Feld auf Gruppenebene fest, sodass verschiedene Standorte oder Kundenumgebungen ihre eigenen genehmigten DNS-Serverlisten haben können, ohne separate Monitor-Richtlinien zu erstellen.
Die DNS-Monitoring-Richtlinie importiert drei vorkonfigurierte Monitore (Windows, macOS und Linux) und das DNS-Überwachungsskript. Es richtet auch das benutzerdefinierte Feld cf_dns ein, sodass Sie autorisierte DNS-Server auf Gruppen- oder Geräteebene definieren können, ohne zusätzliche Konfiguration.
Weitere Beispiele
Die Level-Bibliothek unter level.io/library hat eine wachsende Sammlung von einsatzbereiten Skripten und Monitor-Richtlinien. Durchsuchen Sie nach Kategorie, um Monitore für Sicherheit, Festplattenintegrität, Anwendungszustand und mehr zu finden — oder reichen Sie Ihre eigenen ein.
FAQ
Muss ich das Skript erstellen, bevor ich es in einem Monitor verwenden kann? Ja — das Skript muss in Ihrer Skriptbibliothek gespeichert sein, bevor Sie es in einem Monitor auswählen können. Wenn Sie ein Skript aus der Level-Bibliothek importieren, wird es automatisch Ihrer Bibliothek hinzugefügt und ist sofort verfügbar.
Kann ich ein importiertes Skript ändern? Ja. Der Import erstellt eine Kopie in Ihrem Konto — Änderungen, die Sie vornehmen, beeinflussen nicht die ursprüngliche Bibliotheksressource oder andere Benutzer.
Der Import-Link nimmt mich zu einer Anmeldeseite. Ist das zu erwarten? Ja — Sie müssen sich bei Level anmelden, um zu importieren. Nach der Anmeldung werden Sie zur Importbestätigung weitergeleitet.



