Bagian yang tidak pernah dilakukan services.msc

Snapshot dan penyimpangan

Setiap alat lain memberi tahu Anda seperti apa mesin itu sekarang. Pertanyaan yang sebenarnya dimiliki administrator adalah apa yang berbeda dari saat semuanya berfungsi - dan tidak ada apa pun pada Windows standar yang menjawabnya.

Apa isi sebuah snapshot

Seluruh mesin pada satu saat: setiap layanan dan driver, dengan tipe startup, akun, jalur peluncuran dan argumen, hash dan penandatangan berkas yang dijalankannya, dependensinya dan apa yang bergantung padanya, pemicunya, hak istimewa yang dibutuhkan, tipe SID, dan deskriptor keamanannya - ditambah nama mesin, akun yang mengambilnya, dan apakah akun itu administrator.

bws snapshot create before.json --note "before the patch"

Berupa JSON dengan satu bidang per baris. Itu disengaja: snapshot bisa masuk ke repositori dan git diff membacanya, sehingga perbandingan bawaan alat ini bukan satu-satunya cara untuk melihatnya.

Simpan sesuai dengan apa adanya. Snapshot menggambarkan seluruh mesin, sampai setiap jalur peluncuran dan deskriptor keamanan. Ia ditulis dengan izin apa pun yang sudah dimiliki direktorinya, dan alat ini tidak mempersempit apa pun - sehingga direktori yang bisa dibaca orang lain adalah direktori tempat mereka bisa membaca semua itu.

Lalu tanyakan apa yang berbeda

$ bws snapshot diff before.json --live --exit-code
Changed (2):
  Spooler  Print Spooler
    startType: Manual -> Automatic
    status: Stopped -> Running  (running state, not configuration)
  wlidsvc  Microsoft Account Sign-in Assistant
    status: Stopped -> Running  (running state, not configuration)

Added 0, removed 0, changed 2. Fields differing: 1 in configuration, 2 in running state.
  • Konfigurasi dan status berjalan dilaporkan terpisah. Dua snapshot yang diambil berselang sehari berbeda pada apa yang kebetulan berjalan, dan hampir tidak ada yang merupakan penyimpangan. Jika dicampur, satu baris yang penting - tipe startup yang diubah seseorang - terkubur di bawah empat puluh yang tidak penting.
  • Apa yang tidak bisa dibandingkan dicantumkan, tidak disembunyikan. Bidang yang tidak pernah dibaca oleh salah satu dari dua snapshot, karena sesi itu tidak punya hak atasnya, muncul sebagai not compared di bawah entrinya, dan ringkasan menghitung entri tersebut. Jadi perbandingan yang berbunyi tidak ada yang berubah berarti tidak ada yang berubah pada apa yang bisa dilihat kedua sisi.
  • Snapshot dengan hak tinggi dibandingkan dengan yang tanpa hak akan berbohong, melaporkan entri sebagai dihapus padahal tidak ada yang menghapusnya. Setiap berkas mencatat apakah akun yang mengambilnya adalah administrator, dan perbandingan menyatakannya.
  • Dua berkas, bukan hanya berkas dan mesin ini. Ambil satu di staging dan satu di produksi, lalu bandingkan di mana saja - jawaban atas mengapa staging berbeda tidak membutuhkan salah satu mesin hadir.

Jendela melakukan hal yang sama di bawah Audit.... Take snapshot... menulis berkas yang sama, dengan catatan jika Anda mengetiknya, dan Compare with this machine... atau Compare two snapshots... menampilkan apa yang berubah sebagai ganti daftar, satu baris per bidang, dengan segala sesuatu yang membuat perbandingan kurang tepat dinyatakan di atas tabel. Show mempersempitnya ke perbedaan atau ke satu bidang, dan Export... menulisnya ke berkas CSV.

Kode keluar adalah intinya

--exit-code berakhir dengan 5 ketika konfigurasi berbeda - sebuah entri ditambah atau dihapus, atau satu yang diatur berbeda. Layanan yang hanya berhenti atau mulai sendiri dilaporkan dan tidak dihitung, begitu juga salinan per pengguna yang dibuat Windows untuk setiap sesi yang masuk: itu dikecualikan dan dihitung. Bukan kegagalan - penyimpangan adalah apa yang ingin ditemukan alat ini, dan menemukannya bukanlah kegagalan - itulah sebabnya ia punya nomor sendiri alih-alih meminjam nomor yang berarti ada yang salah.

# hari mesin mulai beroperasi
bws snapshot create C:\baselines\web01.json --note "after the build"

# setiap malam, dari tugas terjadwal
bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
#   0 - tidak ada penyimpangan konfigurasi
#   5 - konfigurasi menyimpang, dan drift.json menyatakan apa
#   3 - berjalan tetapi tidak bisa membaca semuanya, jadi jawabannya sebagian

Itulah seluruh mekanismenya: acuan dasar yang diambil saat mesin diketahui baik, dan pertanyaan yang diajukan setiap malam. Pada malam pertama ia menjawab 5, seseorang tahu pada malam pertama itu, bukan pada pagi saat sesuatu rusak.

Memakai ini untuk audit