Ir al contenido principal

Ejemplos de monitor de script

Ejemplos elaborados que muestran scripts completos y configuraciones de monitorización para casos de uso comunes.

Actualizado hoy

Los monitores de script son tan útiles como los scripts que los impulsan. Estos ejemplos muestran configuraciones completas de extremo a extremo — el script, la configuración del monitor y por qué se tomó cada decisión — para que puedas implementarlos tal cual o usarlos como punto de partida para los tuyos.


Ejemplo 1: Detección de administradores locales no autorizados

Este monitor alerta cuando un dispositivo Windows tiene una cuenta de administrador local que no está en tu lista aprobada — una verificación común de cumplimiento y seguridad.

El script compara las cuentas de administrador local habilitadas con una lista autorizada almacenada en un campo personalizado (##{{cf_authorized_admins}}). Si encuentra a alguien que no debería estar allí, genera ALERT y se cierra con código 1.

Script PowerShell

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

# Obtener todas las cuentas de administrador local habilitadas
$admins = Get-LocalGroupMember -Group "Administrators" |
Where-Object { $_.ObjectClass -eq 'User' -and (Get-LocalUser $_.SID).Enabled -eq $true } |
Select-Object -ExpandProperty Name

# Quitar prefijo de dominio, normalizar a minúsculas
$admins = $admins | ForEach-Object { ($_ -split '\\\\')[-1] }
$detectedArray = ($admins -join ",") -split ',' | ForEach-Object { $_.Trim().ToLower() }
$authorizedArray = $AuthorizedAdmins -split ',' | ForEach-Object { $_.Trim().ToLower() }

# Encontrar administradores no en la lista autorizada
$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
}

Configuración del monitor:

Campo

Valor

Tipo

Ejecutar script

OS

Windows

Script

Windows - Administradores no autorizados

Salida del script

Contiene

Valor

ALERT

Frecuencia de ejecución

1 hora

Contador de desencadenadores

1

Cuando hay un administrador no autorizado presente, la salida contiene ALERT y el monitor se activa. Cuando la lista de cuentas está limpia, la salida no contiene ALERT y el monitor permanece en silencio.

Administradores no autorizados de Windows

💡 CONSEJO: Establece cf_authorized_admins como un campo personalizado en el nivel de grupo u organización para que una única lista mantenida cubra todos tus dispositivos. Puedes anularlo por dispositivo si máquinas específicas tienen diferentes requisitos de administrador.

La política de supervisión de administradores importa todo lo necesario para ejecutar esta verificación en Windows, macOS y Linux: tres monitores preconfigurados (uno por OS), los tres scripts, el campo personalizado Administradores autorizados y las etiquetas Estación de trabajo y Servidor.


Ejemplo 2: Supervisión del tiempo de funcionamiento del dispositivo

Este monitor alerta cuando un dispositivo ha estado ejecutándose durante más de 30 días sin un reinicio — una señal de que los ciclos de parches pueden haberse perdido o que se está pasando por alto un dispositivo.

El script es una simple consulta de osquery:

Script osQuery

SELECT days FROM uptime;

osquery devuelve el número de días desde el último inicio como un entero puro. El monitor compara ese valor directamente usando Mayor que.

Configuración del monitor:

Campo

Valor

Tipo

Ejecutar script

OS

Windows (o macOS / Linux — osquery es multiplataforma)

Script

Monitor OsQuery - Tiempo de funcionamiento

Salida del script

Mayor que

Valor

30

Frecuencia de ejecución

24 horas

Contador de desencadenadores

1

Cuando el tiempo de funcionamiento excede 30 días, el monitor se activa. Después de un reinicio que devuelve el tiempo de funcionamiento por debajo de 30 días, la alerta se resuelve automáticamente.

Emparejar este monitor con una automatización de remediación Solicitar al usuario que reinicie significa que el usuario recibe notificación de reiniciar directamente — no se requiere intervención del técnico para el caso común.

El tiempo de funcionamiento de Windows excede 30 días

💡 CONSEJO: osquery se ejecuta en Windows, macOS y Linux. Puedes crear tres monitores separados — uno por OS — todos apuntando al mismo script para cobertura multiplataforma del tiempo de funcionamiento.

La política de supervisión del tiempo de funcionamiento importa tres monitores preconfigurados (Windows, macOS y Linux) y el script de tiempo de funcionamiento de Osquery — listos para asignar a un grupo.


Ejemplo 3: Supervisión de la configuración del servidor DNS

Este monitor alerta cuando un dispositivo Windows usa servidores DNS que no están en tu lista aprobada — útil para detectar una configuración incorrecta, una desviación de DHCP o cambios no autorizados.

El script compara los servidores DNS activos del dispositivo con una lista autorizada almacenada en un campo personalizado (##{{cf_dns}}). Si alguna interfaz tiene servidores DNS fuera de la lista aprobada, genera ALERT y se cierra con código 1.

Script PowerShell

# Lista separada por comas de los servidores DNS esperados
$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

Configuración del monitor:

Campo

Valor

Tipo

Ejecutar script

OS

Windows

Script

Monitor Windows - Servidores DNS

Salida del script

Contiene

Valor

ALERT

Frecuencia de ejecución

1 hora

Contador de desencadenadores

1

Cuando se detecta un servidor DNS fuera de la lista autorizada, la salida contiene ALERT junto con el nombre de la interfaz y los servidores DNS realmente configurados — visible en la carga útil de alerta para diagnóstico rápido. Cuando todas las interfaces coinciden con la lista autorizada, no se activa ninguna alerta.

Windows DNS

💡 CONSEJO: Establece cf_dns como un campo personalizado en el nivel de grupo para que diferentes sitios o entornos de cliente puedan tener sus propias listas de servidores DNS aprobados sin crear políticas de monitor separadas.

La política de supervisión de DNS importa tres monitores preconfigurados (Windows, macOS y Linux) y el script de supervisión de DNS. También configura el campo personalizado cf_dns para que puedas definir servidores DNS autorizados en el nivel de grupo o dispositivo sin configuración adicional.


Más ejemplos

La biblioteca de Level en level.io/library tiene una colección cada vez mayor de scripts y políticas de monitor listos para importar. Navega por categoría para encontrar monitores de seguridad, salud de discos, estado de aplicación y más — o envía los tuyos.


FAQ

  • ¿Necesito crear el script antes de poder usarlo en un monitor? Sí — el script debe guardarse en tu biblioteca de scripts antes de poder seleccionarlo en un monitor. Si importas un script de la biblioteca de Level, se agrega automáticamente a tu biblioteca y está disponible inmediatamente.

  • ¿Puedo modificar un script importado? Sí. Importar crea una copia en tu cuenta — los cambios que hagas no afectan el recurso de la biblioteca original ni a otros usuarios.

  • El enlace de importación me lleva a una página de inicio de sesión. ¿Es eso esperado? Sí — necesitas iniciar sesión en Level para importar. Después de iniciar sesión, serás redirigido a la confirmación de importación.

¿Ha quedado contestada tu pregunta?