單次健檢提供的是當下的快照,持續監控偵測的是狀態的變化。首次執行時建立該主機的正常狀態基準線,之後每日僅回報與基準線相異之處。
單次健檢僅能仰賴啟發式研判:某個 SUID 執行檔是否可疑,往往取決於您的環境脈絡,工具本身無從得知。
有了基準線,問題就變成一個明確得多的形式:「此一項目昨日不存在,今日出現。」 入侵必須留下持久化痕跡才能在重新開機後存續,而任何持久化都會落在基準線涵蓋的位置之一。這是同一套引擎所能達到的最強偵測,也是我們自有伺服器每日實際運行的設定。
請在確認該主機目前未遭入侵的前提下執行一次。基準線寫入 /var/lib/odysec/baseline.json(權限 600)。
sudo python3 odysec-check.py --monitor --token 您的訂閱代碼
每日執行一次即可。加入 root 的 crontab:
0 4 * * * /usr/bin/python3 /opt/odysec-check.py --monitor --token 您的訂閱代碼 -q
cron 會將輸出寄至本機信箱,因此即使您不查看我們的狀態頁,主機本身在發生變動時仍會通知您。
回報會列出每一項變動。請逐項確認皆為您自身的作業所致(升級、部署、設定變更)後,再更新基準線:
sudo python3 odysec-check.py --monitor --token 您的訂閱代碼 --accept-drift
無變動時我們刻意不發送通知。每日一則「一切正常」會養成略過的習慣,真正需要注意的那一則將一併被忽略。
但這帶來一個必須處理的後果:既然沒有消息即代表正常,那麼「監控失效」與「一切正常」在您眼中便完全相同。因此我們在伺服器端主動偵測沉默——主機超過預期回報週期仍未回報時,我們會通知您,並在狀態頁標示為失聯。在查明原因之前,不能把「沒有告警」當成「沒有問題」。