Zum Hauptinhalt springen

Skript-Monitor-Beispiele

Worked examples showing complete scripts and monitor configurations for common use cases.

Einführung

Skript-Monitore sind nur so nützlich wie die Skripte dahinter. Diese Beispiele zeigen vollständige End-to-End-Konfigurationen – das Skript, die Monitor-Einstellungen und die Begründung jeder Entscheidung –, sodass Sie diese direkt einsetzen oder als Ausgangspunkt für eigene Konfigurationen verwenden können.


Beispiel 1: Erkennung nicht autorisierter lokaler Administratoren

Dieser Monitor gibt eine Warnung aus, wenn ein Windows-Gerät über ein lokales Administratorkonto verfügt, das nicht auf Ihrer genehmigten Liste steht – eine gängige Compliance- und Sicherheitsprüfung.

Das Skript vergleicht aktivierte lokale Administratorkonten mit einer autorisierten Liste, die in einem benutzerdefinierten Feld gespeichert ist ({{cf_authorized_admins}}). Wenn jemand gefunden wird, der nicht berechtigt ist, gibt es ALERT und beendet sich mit Code 1.

PowerShell-Skript

$AuthorizedAdmins = "{{cf_authorized_admins}}"

# Get all enabled local admin accounts
$admins = Get-LocalGroupMember -Group "Administrators" |
Where-Object { $_.ObjectClass -eq 'User' -and (Get-LocalUser $_.SID).Enabled -eq $true } |
Select-Object -ExpandProperty Name

# Strip domain prefix, normalize to lowercase
$admins = $admins | ForEach-Object { ($_ -split '\\')[-1] }
$detectedArray = ($admins -join ",") -split ',' | ForEach-Object { $_.Trim().ToLower() }
$authorizedArray = $AuthorizedAdmins -split ',' | ForEach-Object { $_.Trim().ToLower() }

# Find admins not in the authorized list
$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

Betriebssystem

Windows

Skript

Windows - Nicht autorisierte Administratoren

Skriptausgabe

Enthält

Wert

ALERT

Ausführungshäufigkeit

1 Stunde

Auslöseanzahl

1

Wenn ein nicht autorisierter Administrator vorhanden ist, enthält die Ausgabe ALERT und der Monitor löst aus. Wenn die Kontoliste sauber ist, enthält die Ausgabe ALERT und der Monitor bleibt still.

Windows Unauthorized Admins

💡 TIPP: Setzen Sie cf_authorized_admins als benutzerdefiniertes Feld auf Gruppen- oder Organisationsebene, sodass eine einzige gepflegte Liste alle Ihre Geräte abdeckt. Sie können sie pro Gerät überschreiben, wenn bestimmte Maschinen unterschiedliche Administratoranforderungen haben.

Die Admin-Überwachungsrichtlinie importiert alles, was zur Ausführung dieser Prüfung unter Windows, macOS und Linux benötigt wird: drei vorkonfigurierte Monitore (einen pro Betriebssystem), alle drei Skripte sowie das Authorized Admins benutzerdefiniertes Feld sowie Workstation- und Server-Tags.


Beispiel 2: Überwachung der Gerätebetriebszeit

Dieser Monitor gibt eine Warnung aus, wenn ein Gerät seit mehr als 30 Tagen ohne Neustart läuft – ein Hinweis darauf, dass Patch-Zyklen verpasst wurden oder ein Gerät vernachlässigt wird.

Das Skript ist eine einzelne osquery-Abfrage:

osQuery-Skript

SELECT days FROM uptime;

osquery gibt die Anzahl der Tage seit dem letzten Start als einfache Ganzzahl zurück. Der Monitor vergleicht diesen Wert direkt mit Größer als.

Monitor-Konfiguration:

Feld

Wert

Typ

Skript ausführen

Betriebssystem

Windows (oder macOS / Linux – osquery ist plattformübergreifend)

Skript

OsQuery-Monitor - Betriebszeit

Skriptausgabe

Größer als

Wert

30

Ausführungshäufigkeit

24 Stunden

Auslöseanzahl

1

Wenn die Betriebszeit 30 Tage überschreitet, löst der Monitor aus. Nachdem ein Neustart die Betriebszeit wieder unter 30 Tage gebracht hat, wird die Warnung automatisch aufgelöst.

Wenn Sie diesen Monitor mit einer Benutzer zum Neustart auffordern Behebungsautomatisierung bedeutet, dass der Benutzer direkt zur Eingabe eines Neustarts aufgefordert wird – kein Eingriff eines Technikers für den Standardfall erforderlich.

Windows Uptime Exceeds 30 Days

💡 TIPP: osquery läuft unter Windows, macOS und Linux. Sie können drei separate Monitore erstellen – einen pro Betriebssystem –, die alle auf dasselbe Skript verweisen, für eine plattformübergreifende Betriebszeitüberwachung.

Die Betriebszeit-Überwachungsrichtlinie importiert drei vorkonfigurierte Monitore (Windows, macOS und Linux) sowie das Osquery-Betriebszeitskript – bereit zur Zuweisung an eine Gruppe.


Beispiel 3: Überwachung der DNS-Server-Konfiguration

Dieser Monitor gibt eine Warnung aus, 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 erlaubten Liste, die in einem benutzerdefinierten Feld gespeichert ist ({{cf_dns}}). Wenn eine Schnittstelle DNS-Server außerhalb der genehmigten Liste hat, gibt es ALERT und beendet sich mit Code 1.

PowerShell-Skript

# Comma-separated list of expected DNS servers
$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

Betriebssystem

Windows

Skript

Windows-Monitor - DNS-Server

Skriptausgabe

Enthält

Wert

ALERT

Ausführungshäufigkeit

1 Stunde

Auslöseanzahl

1

Wenn ein DNS-Server außerhalb der erlaubten Liste erkannt wird, enthält die Ausgabe ALERT zusammen mit dem Schnittstellennamen und den tatsächlich konfigurierten DNS-Servern – sichtbar in der Warnungsmeldung für eine schnelle Diagnose. Wenn alle Schnittstellen mit der erlaubten Liste übereinstimmen, wird keine Warnung ausgelöst.

Windows DNS

💡 TIPP: Setzen Sie cf_dns als benutzerdefiniertes Feld auf Gruppenebene, sodass verschiedene Standorte oder Client-Umgebungen ihre eigenen genehmigten DNS-Server-Listen haben können, ohne separate Monitor-Richtlinien zu erstellen.

Die DNS-Überwachungsrichtlinie importiert drei vorkonfigurierte Monitore (Windows, macOS und Linux) sowie das DNS-Überwachungsskript. Außerdem wird das cf_dns benutzerdefiniertes Feld, damit Sie erlaubte DNS-Server auf Gruppen- oder Geräteebene ohne zusätzliche Konfiguration definieren können.


Weitere Beispiele

Die Level-Bibliothek unter level.io/library verfügt über eine wachsende Sammlung importfertiger Skripte und Monitor-Richtlinien. Durchsuchen Sie die Kategorien, um Monitore für Sicherheit, Festplattenstatus, Anwendungszustand und mehr zu finden – oder reichen Sie Ihre eigenen ein.


Häufig gestellte Fragen

  • 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 zu Ihrer Bibliothek hinzugefügt und ist sofort verfügbar.

  • Kann ich ein importiertes Skript bearbeiten? Ja. Beim Importieren wird eine Kopie in Ihrem Konto erstellt – von Ihnen vorgenommene Änderungen wirken sich nicht auf die ursprüngliche Bibliotheksressource oder andere Benutzer aus.

  • Der Importlink leitet mich zu einer Anmeldeseite weiter. Ist das zu erwarten? Ja – Sie müssen bei Level angemeldet sein, um zu importieren. Nach der Anmeldung werden Sie zur Importbestätigung weitergeleitet.

Hat dies deine Frage beantwortet?