誰變更了什麼:主機的稽核軌跡
在共用主機上,事故發生後最難回答的問題不是什麼壞了;而是在壞掉之前,誰變更了什麼。Atlas 為關鍵操作寫入稽核軌跡:執行者、操作、時間與結果,並在主機上存放於兩處。
為什麼誰做了什麼通常無從回答
原生工具讓證據四散。PVE 工作記錄知道某些操作,shell 歷史記錄知道另一些,設定檔的編輯則往往什麼都沒留下。要重建一個晚上發生的事,就得把三者的時間戳記拼湊起來。
共用 root 權限讓情況更糟。當好幾個人都能以 root 身分操作時,操作就不再有作者;而歷史記錄檔,也能被做出變更的同一份權限所修改。
而大多數稽核都發生在最糟的時刻:事故之後、壓力之下,而知道答案的人,可能正是造成事故的人。
手動重建一起事故
沒有軌跡時,常見的調查過程如下:
閱讀事故時段前後的 PVE 工作記錄,並記下其中的內容。
對主機上的 shell 歷史記錄執行 grep,祈禱沒有人用過共用帳號。
逐一查看同一時段的 journalctl,並嘗試比對時間戳記。
將目前的設定檔與最近一次備份比對,找出無聲無息的修改。
在團隊聊天中詢問那天有誰動過主機。
寫下一份建立在大概之上的事故記錄,然後繼續前進。
Atlas 會記錄什麼
關鍵操作在發生的當下就留下軌跡,而不是事後留下一團謎。
關鍵操作都有記錄
會變更或危及系統的操作,例如破壞性的儲存與網路作業、終止處理程序、涉及權限的操作,都會在執行時寫入軌跡。
執行者、操作、時間、結果
每筆記錄一次回答事故調查的四個問題:由誰觸發、確切執行了什麼、何時執行,以及是否成功。
兩份副本,可防止竄改
記錄會寫入系統記錄,非 root 使用者無法改寫;同時也寫入另一個獨立檔案。要抹除痕跡,就必須同時攻破兩者。
尊重 Proxmox 角色
Atlas 不會自創一套權限體系。誰能做什麼,取決於 Proxmox 的使用者與角色;軌跡因此對應到真實的身分。
記錄中沒有機密
密碼與權杖絕不會被寫入。軌跡記錄的是操作已經發生,而不是執行操作所用的認證資訊。
檢查結果主動送達
Watch 守護會在關鍵檢查結果出現的當下以電子郵件通知;軌跡不只在事故之後才被閱讀,在事故之前就會被看到。
常見問題
- 確切會記錄哪些內容?
- 關鍵且涉及權限的操作:破壞性的儲存與網路變更、處理程序訊號、服務層級的操作等。一般的讀取不會成為軌跡中的雜訊。
- 管理者能抹除自己的痕跡嗎?
- 軌跡存放於兩處:系統記錄,若不進行 root 層級的竄改便無法改寫;以及另一個獨立檔案。要悄悄修改歷史,不再是輕而易舉的事。
- 會儲存密碼或請求內容嗎?
- 不會。機密資訊絕不會寫入軌跡;記錄只包含執行者、操作、時間與結果。
- 記錄存放在哪裡?
- 就在主機上:系統記錄加上另一個獨立檔案。不會傳送任何資料到外部服務。
- 是否使用 Proxmox 帳號?
- 是的。Atlas 沿用 Proxmox 的使用者、群組與角色,而不是自創一套;稽核記錄因此對應到已在 Proxmox 中管理的相同身分。
- 記錄會拖慢主機嗎?
- 不會。只記錄關鍵操作,而不是每一次點擊;每個有風險的操作只會產生幾行記錄。
相關條目
- 已撤銷存取權限,對方卻還在裡面:工作階段不等於權限 權限已經移除,甚至帳號也已停用,那個人卻還能操作。並沒有東西壞掉:撤銷存取權限和結束工作階段是兩個不同的動作。
- 告別 root:沒有人強迫、卻回報最高的決定 以 root 身分工作,不會在某天突然爆炸。它會悄悄破壞兩件事:記錄指向的是誰,以及錯誤的點擊會在哪裡停下。解決方法不是停用 root,而是把日常工作從它身上移開。
- 稽核記錄:回答是誰做的,而不是發生了什麼 監控說明發生了什麼,稽核記錄說明是誰做的。它的價值會在最不希望到來的那些日子顯現,而如果那天手上沒有它,它就等於從未存在。