Windows-services controleren
Een audit is geen lijst van wat er op de machine staat. Het is het verschil tussen wat er op de machine staat en wat er hoorde te staan - en niets op een gewone Windows legt de tweede helft vast.
Drie vragen, en wat ze beantwoordt
Wat is er veranderd sinds deze machine werd gebouwd?
Een momentopname bij de uitrol, en vanavond een vergelijking met de machine. Configuratie wordt los gemeld van wat alleen is gestart of gestopt, zodat het ene opstarttype dat iemand heeft gewijzigd niet wordt begraven onder veertig services die toevallig draaien.
bws snapshot diff baseline.json --live
Waarom verschilt acceptatie van productie?
Maak op elk een momentopname en vergelijk de twee bestanden - overal, zonder dat een van beide machines aanwezig is. De bestanden dragen de naam van de machine en het account dat ze maakte.
bws snapshot diff staging.json production.json
Wat staat hier dat er niet hoort te staan?
Queries die de vormen vinden die het bekijken waard zijn: een service waarvan het uitvoerbare bestand weg is, een die niet is ondertekend, een die draait terwijl hij is uitgeschakeld, een die om foutopsporingsrechten vraagt.
file:missing, signed:no, mismatch:running
De nachtelijke vorm
# de dag dat de machine in gebruik gaat
bws snapshot create C:\baselines\web01.json --note "after the build"
# elke nacht, vanuit een geplande taak
bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
# 0 - geen configuratiedrift
# 5 - de configuratie is afgedreven, en drift.json zegt wat
# 3 - het draaide en kon niet alles lezen, dus het antwoord is gedeeltelijk
Afsluitcode 5 is wat dit tot een audit maakt in plaats van een rapport dat niemand leest: de taak zwijgt tot de machine afdrijft, en de nacht dat dat gebeurt wordt iemand gewaarschuwd.
Maak de basislijn vanuit een sessie met verhoogde rechten. Zonder beheerdersrechten toont de beheerder minder items en weigert hij er meer van wat hij toont. De momentopname legt vast of het account dat hem maakte een beheerder was, zodat de vergelijking dat kan zeggen in plaats van items als verwijderd te melden die niemand heeft verwijderd - maar een basislijn waarvan de helft van de machine ontbreekt, blijft een basislijn waarvan de helft van de machine ontbreekt.
Wat een momentopname waard is als bewijs
- Het is JSON met één veld per regel, dus het gaat in een repository en
git diffleest het. Een auditor die dit hulpmiddel niet heeft kan het bestand nog steeds lezen, en een versiebeheersysteem beantwoordt al het wanneer. - Het bevat wat de snap-in nooit toonde: het opstartpad en de argumenten, de hash en de ondertekenaar van het bestand, de afhankelijkheden in beide richtingen, de triggers, de vereiste bevoegdheden, het SID-type en de beveiligingsdescriptor.
- Het zegt wat het niet kon lezen. Een veld waarop deze sessie geen rechten had wordt vastgelegd als niet gelezen - nooit als leeg - zodat een latere vergelijking not compared kan zeggen in plaats van het stilletjes onveranderd te noemen.
- Het is een beschrijving van de hele machine. Archiveer het dienovereenkomstig: het wordt geschreven met de rechten die de map al heeft, en het hulpmiddel beperkt niets.