Passer au contenu principal

Exemples de moniteur de script

Exemples travaillés montrant des scripts complets et des configurations de surveillance pour les cas d'utilisation courants.

Mis à jour aujourd’hui

Les moniteurs de script sont aussi utiles que les scripts qui les alimentent. Ces exemples montrent des configurations complètes de bout en bout — le script, les paramètres du moniteur et les raisons 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 alerte lorsqu'un appareil Windows a un compte d'administrateur local qui n'est pas sur votre liste approuvée — une vérification courante de conformité et de sécurité.

Le script compare les comptes d'administrateur local activés à une liste autorisée stockée dans un champ personnalisé (##{{cf_authorized_admins}}). S'il trouve quelqu'un qui ne devrait pas y être, il affiche ALERT et se termine avec le code 1.

Script PowerShell

$AuthorizedAdmins = "##{{cf_authorized_admins}}"

# Obtenir tous les comptes d'administrateur local activés
$admins = Get-LocalGroupMember -Group "Administrators" |
Where-Object { $_.ObjectClass -eq 'User' -and (Get-LocalUser $_.SID).Enabled -eq $true } |
Select-Object -ExpandProperty Name

# Supprimer le préfixe de domaine, normaliser en minuscules
$admins = $admins | ForEach-Object { ($_ -split '\\\\')[-1] }
$detectedArray = ($admins -join ",") -split ',' | ForEach-Object { $_.Trim().ToLower() }
$authorizedArray = $AuthorizedAdmins -split ',' | ForEach-Object { $_.Trim().ToLower() }

# Trouver les administrateurs non dans la liste autorisée
$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

OS

Windows

Script

Windows - Administrateurs non autorisés

Sortie du script

Contient

Valeur

ALERT

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 propre, la sortie ne contient pas ALERT et le moniteur reste silencieux.

Administrateurs non autorisés Windows

💡 CONSEIL : Définissez cf_authorized_admins comme champ personnalisé au niveau du groupe ou de l'organisation afin qu'une liste maintenue unique couvre tous vos appareils. Vous pouvez la remplacer par appareil si des machines spécifiques ont des exigences d'administrateur différentes.

La politique de surveillance des administrateurs importe tout ce qui est nécessaire pour exécuter cette vérification sur Windows, macOS et Linux : trois moniteurs préconfigurés (un par OS), les trois scripts, le champ personnalisé Administrateurs autorisés et les balises Poste de travail et Serveur.


Exemple 2 : Surveillance de la disponibilité de l'appareil

Ce moniteur alerte lorsqu'un appareil fonctionne depuis plus de 30 jours sans redémarrage — un signal que les cycles de correctifs peuvent avoir été manqués ou qu'un appareil est en train d'être négligé.

Le script est une simple requête osquery :

Script osQuery

SELECT days FROM uptime;

osquery retourne le nombre de jours depuis le dernier démarrage sous la forme d'un entier brut. Le moniteur compare cette valeur directement en utilisant Supérieur à.

Configuration du moniteur :

Champ

Valeur

Type

Exécuter le script

OS

Windows (ou macOS / Linux — osquery est multiplateforme)

Script

Moniteur OsQuery - Disponibilité

Sortie du script

Supérieur à

Valeur

30

Fréquence d'exécution

24 heures

Nombre de déclenchements

1

Lorsque la disponibilité dépasse 30 jours, le moniteur se déclenche. Après un redémarrage qui ramène la disponibilité en dessous de 30 jours, l'alerte se résout automatiquement.

Associer ce moniteur à une automation de remédiation Demander à l'utilisateur de redémarrer signifie que l'utilisateur est notifié de redémarrer directement — aucune intervention du technicien nécessaire dans le cas courant.

Windows La disponibilité dépasse 30 jours

💡 CONSEIL : osquery s'exécute sur Windows, macOS et Linux. Vous pouvez créer trois moniteurs distincts — un par OS — tous pointant vers le même script pour une couverture multiplateforme de la disponibilité.

La politique de surveillance de la disponibilité importe trois moniteurs préconfigurés (Windows, macOS et Linux) et le script de disponibilité Osquery — prêts à être attribués à un groupe.


Exemple 3 : Surveillance de la configuration du serveur DNS

Ce moniteur alerte lorsqu'un appareil Windows utilise des serveurs DNS qui ne sont pas sur votre liste approuvée — utile pour détecter une mauvaise configuration, une 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 a des serveurs DNS en dehors de la liste approuvée, il affiche ALERT et se termine avec le code 1.

Script PowerShell

# Liste séparée par des virgules des serveurs DNS attendus
$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

OS

Windows

Script

Moniteur Windows - Serveurs DNS

Sortie du script

Contient

Valeur

ALERT

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 avec le nom de l'interface et les serveurs DNS réellement configurés — visibles dans la charge utile d'alerte pour un diagnostic rapide. Lorsque toutes les interfaces correspondent à la liste autorisée, aucune alerte ne se déclenche.

Windows DNS

💡 CONSEIL : Définissez cf_dns comme 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 politiques de moniteur distinctes.

La politique de surveillance DNS importe trois moniteurs préconfigurés (Windows, macOS et Linux) et le script de surveillance DNS. Elle configure également le champ personnalisé cf_dns afin que vous puissiez définir les serveurs DNS autorisés au niveau du groupe ou de l'appareil sans configuration supplémentaire.


Autres exemples

La Bibliothèque Level sur level.io/library dispose d'une collection croissante de scripts et de politiques de moniteur prêts à importer. Parcourez par catégorie pour trouver des moniteurs pour la sécurité, la santé des disques, l'état des applications, et plus — 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 le sélectionner dans un moniteur. Si vous importez un script de 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 de la bibliothèque d'origine ni d'autres utilisateurs.

  • Le lien d'importation m'amène à une page de connexion. Est-ce normal ? Oui — vous devez être connecté à Level pour importer. Après la connexion, vous serez redirigé vers la confirmation d'importation.

Avez-vous trouvé la réponse à votre question ?