Auditar servicios de Windows
Una auditoría no es una lista de lo que hay en el equipo. Es la diferencia entre lo que hay en el equipo y lo que debía haber, y ningún Windows de serie registra la segunda mitad.
Tres preguntas, y qué las responde
¿Qué ha cambiado desde que se construyó este equipo?
Una instantánea tomada al desplegar y una comparación con el equipo esta noche. La configuración se informa aparte de lo que simplemente se inició o se detuvo, de modo que el único tipo de inicio que alguien cambió no queda enterrado bajo cuarenta servicios que casualmente están en marcha.
bws snapshot diff baseline.json --live
¿Por qué difiere preproducción de producción?
Tome una instantánea en cada uno y compare los dos archivos, en cualquier parte, sin que ninguno de los equipos esté presente. Los archivos llevan el nombre del equipo y la cuenta que los tomó.
bws snapshot diff staging.json production.json
¿Qué hay aquí que no debería haber?
Consultas que encuentran las formas que merece la pena mirar: un servicio cuyo ejecutable ha desaparecido, uno sin firmar, uno en marcha aunque está deshabilitado, uno que pide derechos de depuración.
file:missing, signed:no, mismatch:running
La forma nocturna
# el día en que el equipo entra en servicio
bws snapshot create C:\baselines\web01.json --note "after the build"
# cada noche, desde una tarea programada
bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
# 0 - sin deriva de configuración
# 5 - la configuración se desvió, y drift.json dice en qué
# 3 - se ejecutó y no pudo leerlo todo, así que la respuesta es parcial
El código de salida 5 es lo que convierte esto en una auditoría y no en un informe que nadie lee: la tarea guarda silencio hasta que el equipo se desvía, y la noche en que lo hace, alguien recibe un aviso.
Tome la línea base desde una sesión con privilegios elevados. Sin derechos de administrador el administrador lista menos entradas y rechaza más de las que lista. La instantánea registra si la cuenta que la tomó era administrador, de modo que la comparación puede decirlo en lugar de informar como eliminadas entradas que nadie eliminó, pero una línea base a la que le falta la mitad del equipo sigue siendo una línea base a la que le falta la mitad del equipo.
Lo que vale una instantánea como prueba
- Es JSON con un campo por línea, así que cabe en un repositorio y
git diffla lee. Un auditor que no tenga esta herramienta puede leer el archivo igualmente, y un sistema de control de versiones ya responde al cuándo. - Contiene lo que el complemento nunca mostró: la ruta de lanzamiento y los argumentos, el hash y el firmante del archivo, las dependencias en ambos sentidos, los desencadenadores, los privilegios requeridos, el tipo de SID y el descriptor de seguridad.
- Dice lo que no pudo leer. Un campo sobre el que esta sesión no tenía derechos se registra como no leído, nunca como vacío, de modo que una comparación posterior puede decir not compared en lugar de llamarlo en silencio sin cambios.
- Es una descripción de todo el equipo. Archívela en consecuencia: se escribe con los permisos que su directorio ya tiene, y la herramienta no restringe nada.