Посібник

Аудит служб Windows

Аудит - це не список того, що є на машині. Це різниця між тим, що є на машині, і тим, що мало бути, - і нічого в стандартній Windows не записує другої половини.

Три запитання і те, що на них відповідає

Що змінилося від часу, коли цю машину збудували?

Знімок, знятий під час розгортання, і порівняння з машиною сьогодні вночі. Конфігурація повідомляється окремо від того, що просто запустилося чи зупинилося, тож єдиний тип запуску, який хтось змінив, не тоне під сорока службами, що випадково працюють.

bws snapshot diff baseline.json --live

Чому тестове середовище відрізняється від робочого?

Зробіть знімок на кожному й порівняйте два файли - будь-де, без присутності жодної з машин. Файли несуть ім'я машини та обліковий запис, що їх зробив.

bws snapshot diff staging.json production.json

Що тут є такого, чого не мало б бути?

Запити, що знаходять форми, на які варто подивитися: служба, чий виконуваний файл зник, та, що не підписана, та, що працює, хоча вимкнена, та, що просить права налагодження.

file:missing, signed:no, mismatch:running

Нічна форма

# день, коли машина вводиться в експлуатацію
bws snapshot create C:\baselines\web01.json --note "after the build"

# щоночі, із запланованої задачі
bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
#   0 - немає дрейфу конфігурації
#   5 - конфігурація пішла в дрейф, і drift.json каже, що саме
#   3 - виконалося й не змогло прочитати все, тож відповідь часткова

Код завершення 5 - це те, що робить це аудитом, а не звітом, який ніхто не читає: задача мовчить, доки машина не піде в дрейф, а тієї ночі, коли піде, когось покличуть.

Знімайте еталонний стан із сеансу з підвищеними правами. Без прав адміністратора диспетчер перелічує менше записів і частіше відмовляє щодо того, що перелічує. Знімок записує, чи був обліковий запис, що його зробив, адміністратором, тож порівняння може про це сказати, а не повідомляти про видалення записів, яких ніхто не видаляв, - але еталонний стан без половини машини все одно еталонний стан без половини машини.

Чого знімок вартий як доказ

  • Це JSON з одним полем на рядок, тож він потрапляє в репозиторій, і git diff його читає. Аудитор, у якого немає цього інструмента, усе одно може прочитати файл, а система керування версіями вже відповідає на питання коли.
  • Він містить те, чого оснастка ніколи не показувала: шлях запуску й аргументи, хеш і підписант файлу, залежності в обидва боки, тригери, потрібні привілеї, тип SID і дескриптор безпеки.
  • Він каже, чого не зміг прочитати. Поле, на яке цей сеанс не мав прав, записується як непрочитане - ніколи як порожнє, - тож пізніше порівняння може сказати not compared, а не мовчки назвати його незміненим.
  • Це опис усієї машини. Зберігайте його відповідно: він записується з тими правами, які вже має його каталог, а інструмент нічого не звужує.
Як працюють знімки й порівняння