Zum Hauptinhalt springen

Beispiele für Skript-Monitor

Durchgearbeitete Beispiele mit vollständigen Skripten und Überwachungskonfigurationen für häufige Anwendungsfälle.

Heute aktualisiert

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

ALERT

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.

Windows nicht autorisierte Administratoren

💡 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

30

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.

Windows Die Laufzeit übersteigt 30 Tage

💡 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

ALERT

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.

Windows DNS

💡 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.

Hat dies deine Frage beantwortet?