Poradnik

Audyt usług Windows

Audyt to nie lista tego, co jest na maszynie. To różnica między tym, co na niej jest, a tym, co miało być - a standardowy Windows nie zapisuje tej drugiej połowy nigdzie.

Trzy pytania i to, co na nie odpowiada

Co zmieniło się od zbudowania tej maszyny?

Snapshot zrobiony przy wdrożeniu i różnica wobec maszyny dzisiaj w nocy. Konfiguracja jest zgłaszana osobno od tego, co się po prostu uruchomiło albo zatrzymało, więc jeden zmieniony przez kogoś typ uruchomienia nie ginie pod czterdziestoma usługami, które akurat działają.

bws snapshot diff baseline.json --live

Czym środowisko testowe różni się od produkcji?

Zrób snapshot na każdej i porównaj oba pliki - gdziekolwiek, bez żadnej z tych maszyn pod ręką. Pliki niosą nazwę maszyny i konto, które je zrobiło.

bws snapshot diff staging.json production.json

Co tu jest, czego być nie powinno?

Zapytania znajdujące kształty warte obejrzenia: usługa, której plik zniknął, niepodpisana, działająca mimo wyłączenia, prosząca o prawa debugowania.

file:missing, signed:no, mismatch:running

Nocny kształt

# w dniu, w którym maszyna wchodzi do pracy
bws snapshot create C:\baselines\web01.json --note "after the build"

# co noc, z zadania harmonogramu
bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
#   0 - nic się nie różni
#   5 - coś się różni, a drift.json mówi co
#   3 - wykonało się i nie wszystko dało się odczytać, więc odpowiedź jest częściowa

Kod wyjścia 5 jest tym, co robi z tego audyt, a nie raport, którego nikt nie czyta: zadanie milczy, dopóki maszyna się nie rozjedzie, a tej nocy, w której się rozjedzie, ktoś zostaje wezwany.

Punkt odniesienia rób z sesji elewowanej. Bez praw administratora menedżer wymienia mniej wpisów i odmawia częściej. Snapshot zapisuje, czy konto, które go zrobiło, było administratorem, więc porównanie może to powiedzieć, zamiast zgłaszać jako usunięte wpisy, których nikt nie usunął - ale punkt odniesienia bez połowy maszyny nadal jest punktem odniesienia bez połowy maszyny.

Ile snapshot jest wart jako dowód

  • To JSON z jednym polem na linię, więc wchodzi do repozytorium i czyta go git diff. Audytor, który nie ma tego narzędzia, i tak przeczyta plik, a system kontroli wersji odpowiada już na pytanie kiedy.
  • Niesie to, czego przystawka nie pokazywała nigdy: ścieżkę uruchomienia i argumenty, skrót i podpis pliku, zależności w obie strony, wyzwalacze, wymagane przywileje, typ SID i deskryptor bezpieczeństwa.
  • Mówi, czego nie zdołał odczytać. Pole, do którego ta sesja nie miała praw, jest zapisane jako nieodczytane - nigdy jako puste - więc późniejsze porównanie może powiedzieć nieporównane, zamiast po cichu uznać je za niezmienione.
  • To opis całej maszyny. Traktuj plik odpowiednio: zapisuje się z uprawnieniami, które ma już jego katalog, a narzędzie niczego nie zawęża.

Czego to nie daje

Warto wiedzieć, zanim zbudujesz na tym proces.

  • Nie mówi kto. Dziennik zdarzeń nie jest jeszcze czytany. Punkt odniesienia i różnica odpowiadają na co się zmieniło i z grubsza kiedy to zauważono, a nie które konto to zrobiło.
  • Nie ma wzorca czystego Windowsa. Które z nich nie pochodzą z czystej instalacji nie jest liczone, więc punktem odniesienia musi być snapshot, który sam zrobiłeś.
  • Nie ma przywracania. Różnica mówi, co się rozjechało, a przywrócenie robi się ręcznie albo skryptem z komend, które ta różnica pokazuje.
  • Jedna maszyna naraz. Zarządzania zdalnego nie ma - odpowiedzią dla floty jest snapshot na maszynę, zbierany tak, jak zbierasz pliki dzisiaj.
Jak działają snapshoty i różnice