Phần mà services.msc chưa bao giờ làm

Bản chụp và sai lệch

Mọi công cụ khác cho bạn biết một máy trông thế nào bây giờ. Câu hỏi mà một quản trị viên thực sự có là điều gì khác so với lúc nó còn hoạt động - và không có gì trên một Windows nguyên bản trả lời được.

Một bản chụp chứa gì

Cả máy tại một thời điểm: mọi dịch vụ và trình điều khiển, với kiểu khởi động, tài khoản, đường dẫn khởi chạy và đối số, mã băm và người ký của tệp mà nó chạy, các phụ thuộc và những gì phụ thuộc vào nó, trình kích hoạt, đặc quyền yêu cầu, kiểu SID và bộ mô tả bảo mật - cộng với tên máy, tài khoản đã chụp nó, và tài khoản đó có phải quản trị viên hay không.

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

Nó là JSON với một trường mỗi dòng. Đó là cố ý: một bản chụp có thể đưa vào kho mã và git diff đọc được nó, nên phép so sánh riêng của công cụ không phải là cách duy nhất để xem một bản.

Hãy lưu trữ nó đúng với bản chất của nó. Một bản chụp mô tả cả máy, đến từng đường dẫn khởi chạy và bộ mô tả bảo mật. Nó được ghi với quyền mà thư mục của nó vốn có, và công cụ không thu hẹp gì - nên một thư mục mà người khác đọc được là thư mục mà họ đọc được tất cả những điều đó.

Rồi hỏi điều gì khác

$ 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.
  • Cấu hình và trạng thái chạy được báo riêng. Hai bản chụp cách nhau một ngày khác nhau ở những gì tình cờ đang chạy, và hầu như không có gì trong đó là sai lệch. Trộn lẫn lại, dòng duy nhất quan trọng - một kiểu khởi động mà ai đó đã đổi - bị chôn dưới bốn mươi dòng không quan trọng.
  • Những gì không thể so sánh được liệt kê, không bị giấu. Một trường mà một trong hai bản chụp chưa bao giờ đọc, vì phiên đó không có quyền với nó, hiện ra là not compared dưới mục của nó, và phần tóm tắt đếm những mục đó. Nên một phép so sánh nói không có gì thay đổi nghĩa là không có gì thay đổi trong những gì cả hai phía đều thấy được.
  • So một bản chụp nâng quyền với một bản không nâng quyền sẽ nói dối, báo các mục là bị xóa trong khi không ai xóa. Mỗi tệp ghi lại tài khoản đã chụp nó có phải quản trị viên không, và phép so sánh nói điều đó.
  • Hai tệp, không chỉ một tệp và máy này. Chụp một bản trên môi trường thử nghiệm và một bản trên môi trường sản xuất rồi so sánh chúng ở bất cứ đâu - câu trả lời cho vì sao môi trường thử nghiệm khác không cần máy nào có mặt.

Cửa sổ làm điều tương tự dưới Audit.... Take snapshot... ghi cùng một tệp, kèm ghi chú nếu bạn gõ, và Compare with this machine... hoặc Compare two snapshots... hiển thị điều gì đã thay đổi thay cho danh sách, mỗi trường một hàng, với mọi điều khiến phép so sánh kém chính xác được nêu phía trên bảng. Show thu hẹp nó vào các khác biệt hoặc một trường, và Export... ghi nó ra tệp CSV.

Mã thoát mới là điểm mấu chốt

--exit-code kết thúc bằng 5 khi cấu hình khác nhau - một mục được thêm hoặc bị xóa, hoặc một mục được thiết lập khác. Một dịch vụ chỉ tự dừng hoặc tự khởi động thì được báo cáo và không tính, và các bản sao theo người dùng mà Windows tạo cho mỗi phiên đã đăng nhập cũng không tính: chúng bị loại ra và được đếm. Không phải một thất bại - sai lệch là điều công cụ này tồn tại để tìm, và tìm thấy nó không phải là một thất bại - nên nó có con số riêng thay vì mượn con số có nghĩa là có gì đó hỏng.

# ngày máy bắt đầu đưa vào hoạt động
bws snapshot create C:\baselines\web01.json --note "after the build"

# mỗi đêm, từ một tác vụ theo lịch
bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
#   0 - không có sai lệch cấu hình
#   5 - cấu hình đã lệch, và drift.json nói là gì
#   3 - đã chạy và không đọc được hết, nên câu trả lời chỉ là một phần

Đó là toàn bộ cơ chế: một mốc chuẩn được lấy khi máy được biết là tốt, và một câu hỏi được đặt ra mỗi đêm. Đêm đầu tiên nó trả lời 5, ai đó biết ngay đêm đầu tiên, chứ không phải vào buổi sáng khi có gì đó hỏng.

Dùng việc này để kiểm toán