Introduction
Les moniteurs de script ne sont utiles qu'en fonction des scripts qui les alimentent. Ces exemples présentent des configurations complètes de bout en bout — le script, les paramètres du moniteur et la justification de chaque décision — afin que vous puissiez les déployer tels quels ou les utiliser comme point de départ pour les vôtres.
Exemple 1 : Détection des administrateurs locaux non autorisés
Ce moniteur déclenche une alerte lorsqu'un appareil Windows possède un compte administrateur local qui ne figure pas dans votre liste approuvée — une vérification courante en matière de conformité et de sécurité.
Le script compare les comptes d'administrateur local actifs à une liste autorisée stockée dans un champ personnalisé ({{cf_authorized_admins}}). S'il trouve des personnes non autorisées, il génère en sortie ALERT et se termine avec le code 1.
Script PowerShell
$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
}Configuration du moniteur :
Champ | Valeur |
Type | Exécuter le script |
Système d'exploitation | Windows |
Script | Windows - Administrateurs non autorisés |
Sortie du script | Contient |
Valeur |
|
Fréquence d'exécution | 1 heure |
Nombre de déclenchements | 1 |
Lorsqu'un administrateur non autorisé est présent, la sortie contient ALERT et le moniteur se déclenche. Lorsque la liste des comptes est conforme, la sortie ne contient pas ALERT et le moniteur reste silencieux.
💡 CONSEIL : Définissez cf_authorized_admins en tant que champ personnalisé au niveau du groupe ou de l'organisation afin qu'une seule liste maintenue couvre tous vos appareils. Vous pouvez la remplacer par appareil si certaines machines ont des exigences différentes en matière d'administrateur.
La stratégie de surveillance des administrateurs importe tout le nécessaire pour exécuter cette vérification sous Windows, macOS et Linux : trois moniteurs préconfigurés (un par système d'exploitation), les trois scripts et le Authorized Admins le champ personnalisé, ainsi que les balises Poste de travail et Serveur.
Exemple 2 : Surveillance de la durée de fonctionnement des appareils
Ce moniteur déclenche une alerte lorsqu'un appareil fonctionne depuis plus de 30 jours sans redémarrage — un signal indiquant que des cycles de correctifs ont peut-être été manqués ou qu'un appareil est négligé.
Le script est une requête osquery unique :
Script osQuery
SELECT days FROM uptime;
osquery renvoie le nombre de jours depuis le dernier démarrage sous forme d'un entier simple. Le moniteur compare cette valeur directement en utilisant Supérieur à.
Configuration du moniteur :
Champ | Valeur |
Type | Exécuter le script |
Système d'exploitation | Windows (ou macOS / Linux — osquery est multiplateforme) |
Script | Moniteur osQuery - Durée de fonctionnement |
Sortie du script | Supérieur à |
Valeur |
|
Fréquence d'exécution | 24 heures |
Nombre de déclenchements | 1 |
Lorsque la durée de fonctionnement dépasse 30 jours, le moniteur se déclenche. Après un redémarrage qui ramène la durée de fonctionnement en dessous de 30 jours, l'alerte se résout automatiquement.
En associant ce moniteur à une action de remédiation Inviter l'utilisateur à redémarrer l'automatisation de la résolution signifie que l'utilisateur est directement invité à redémarrer — aucune intervention du technicien n'est nécessaire dans le cas courant.
💡 CONSEIL : osquery fonctionne sous Windows, macOS et Linux. Vous pouvez créer trois moniteurs distincts — un par système d'exploitation — pointant tous vers le même script pour une couverture multiplateforme de la durée de fonctionnement.
La stratégie de surveillance de la durée de fonctionnement importe trois moniteurs préconfigurés (Windows, macOS et Linux) ainsi que le script osquery de durée de fonctionnement — prêts à être assignés à un groupe.
Exemple 3 : Surveillance de la configuration du serveur DNS
Ce moniteur déclenche une alerte lorsqu'un appareil Windows utilise des serveurs DNS qui ne figurent pas dans votre liste approuvée — utile pour détecter les erreurs de configuration, la dérive DHCP ou des modifications non autorisées.
Le script compare les serveurs DNS actifs de l'appareil à une liste autorisée stockée dans un champ personnalisé ({{cf_dns}}). Si une interface utilise des serveurs DNS en dehors de la liste approuvée, il génère en sortie ALERT et se termine avec le code 1.
Script PowerShell
# 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
Configuration du moniteur :
Champ | Valeur |
Type | Exécuter le script |
Système d'exploitation | Windows |
Script | Moniteur Windows - Serveurs DNS |
Sortie du script | Contient |
Valeur |
|
Fréquence d'exécution | 1 heure |
Nombre de déclenchements | 1 |
Lorsqu'un serveur DNS en dehors de la liste autorisée est détecté, la sortie contient ALERT ainsi que le nom de l'interface et les serveurs DNS réellement configurés — visibles dans la charge utile de l'alerte pour un diagnostic rapide. Lorsque toutes les interfaces correspondent à la liste autorisée, aucune alerte ne se déclenche.
💡 CONSEIL : Définissez cf_dns en tant que champ personnalisé au niveau du groupe afin que différents sites ou environnements clients puissent avoir leurs propres listes de serveurs DNS approuvés sans créer de stratégies de moniteur distinctes.
La stratégie de surveillance DNS importe trois moniteurs préconfigurés (Windows, macOS et Linux) ainsi que le script de surveillance DNS. Elle configure également le cf_dns le champ personnalisé afin de pouvoir définir les serveurs DNS autorisés au niveau du groupe ou de l'appareil sans aucune configuration supplémentaire.
Plus d'exemples
La Bibliothèque Level à l'adresse level.io/library dispose d'une collection grandissante de scripts et de stratégies de moniteur prêts à importer. Parcourez les catégories pour trouver des moniteurs dédiés à la sécurité, à la santé des disques, à l'état des applications et plus encore — ou soumettez les vôtres.
FAQ
Dois-je créer le script avant de pouvoir l'utiliser dans un moniteur ? Oui — le script doit être enregistré dans votre bibliothèque de scripts avant de pouvoir être sélectionné dans un moniteur. Si vous importez un script depuis la bibliothèque Level, il est automatiquement ajouté à votre bibliothèque et disponible immédiatement.
Puis-je modifier un script importé ? Oui. L'importation crée une copie dans votre compte — les modifications que vous apportez n'affectent pas la ressource d'origine de la bibliothèque ni les autres utilisateurs.
Le lien d'importation me redirige vers une page de connexion. Est-ce normal ? Oui — vous devez être connecté à Level pour effectuer l'importation. Après la connexion, vous serez redirigé vers la confirmation d'importation.



