Leitfaden

Windows-Dienste auditieren

Ein Audit ist keine Liste dessen, was auf dem Rechner ist. Es ist der Unterschied zwischen dem, was auf dem Rechner ist, und dem, was sein sollte - und kein gewöhnliches Windows hält die zweite Hälfte fest.

Drei Fragen und was sie beantwortet

Was hat sich geändert, seit dieser Rechner gebaut wurde?

Ein Snapshot bei der Bereitstellung und ein Vergleich mit dem Rechner heute Nacht. Die Konfiguration wird getrennt von dem gemeldet, was nur gestartet oder angehalten wurde, sodass der eine Starttyp, den jemand geändert hat, nicht unter vierzig Diensten untergeht, die zufällig laufen.

bws snapshot diff baseline.json --live

Warum unterscheidet sich Staging vom Produktivsystem?

Machen Sie auf jedem einen Snapshot und vergleichen Sie die beiden Dateien - irgendwo, ohne dass einer der Rechner vor Ort ist. Die Dateien tragen den Rechnernamen und das Konto, das sie erstellt hat.

bws snapshot diff staging.json production.json

Was ist hier, das nicht hier sein sollte?

Abfragen, die die Formen finden, die einen Blick wert sind: ein Dienst, dessen Programmdatei fehlt, einer, der nicht signiert ist, einer, der läuft, obwohl er deaktiviert ist, einer, der Debugrechte verlangt.

file:missing, signed:no, mismatch:running

Die nächtliche Form

# der Tag, an dem der Rechner in Betrieb geht
bws snapshot create C:\baselines\web01.json --note "after the build"

# jede Nacht, aus einer geplanten Aufgabe
bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
#   0 - keine Konfigurationsdrift
#   5 - die Konfiguration ist abgedriftet, und drift.json sagt, was
#   3 - es lief und konnte nicht alles lesen, die Antwort ist also unvollständig

Exit-Code 5 macht daraus ein Audit statt eines Berichts, den niemand liest: Die Aufgabe schweigt, bis der Rechner abdriftet, und in der Nacht, in der er es tut, wird jemand alarmiert.

Erstellen Sie die Baseline in einer Sitzung mit erhöhten Rechten. Ohne Administratorrechte listet der Manager weniger Einträge und lehnt mehr von dem ab, was er listet. Der Snapshot hält fest, ob das Konto, das ihn erstellt hat, ein Administrator war, sodass der Vergleich das sagen kann, statt Einträge als entfernt zu melden, die niemand entfernt hat - aber eine Baseline, der die Hälfte des Rechners fehlt, ist trotzdem eine Baseline, der die Hälfte des Rechners fehlt.

Was ein Snapshot als Beleg wert ist

  • Er ist JSON mit einem Feld pro Zeile, sodass er in ein Repository passt und git diff ihn liest. Ein Prüfer, der dieses Werkzeug nicht hat, kann die Datei trotzdem lesen, und eine Versionsverwaltung beantwortet das Wann bereits.
  • Er enthält, was das Snap-in nie zeigte: Startpfad und Argumente, Hash und Signierer der Datei, die Abhängigkeiten in beide Richtungen, die Trigger, die erforderlichen Privilegien, den SID-Typ und den Sicherheitsdeskriptor.
  • Er sagt, was er nicht lesen konnte. Ein Feld, für das diese Sitzung keine Rechte hatte, wird als nicht gelesen festgehalten - nie als leer -, sodass ein späterer Vergleich not compared sagen kann, statt es stillschweigend unverändert zu nennen.
  • Er ist eine Beschreibung des ganzen Rechners. Legen Sie ihn entsprechend ab: Er wird mit den Berechtigungen geschrieben, die sein Verzeichnis ohnehin hat, und das Werkzeug schränkt nichts ein.
Wie Snapshots und Vergleiche funktionieren