隨時掌握處理程序、對外連線狀態、系統記憶體、使用者資訊、歷史指令等系統資源,是系統管理者最重要的工作內容。本文將介紹一套開源碼系統管理工具osquery,讓管理者可以透過關連式資料庫的SQL語法來隨時查看所需的系統資源相關資訊。
TTY:表示該程序是在那個終端機上面運作,如果與終端機無關,則會顯示問號。
STAT:表示該程序目前的執行狀態,可分為下列的狀態:R(表示該程序目前正在運作中)、S(表示該程序目前正在睡眠當中,使用者可利用某些訊號喚醒該程序)、T(表示該程序目前正在偵測或是已經停止)、Z(表示為殭屍程序。意指該程序應該已經終止,但是其父程序卻無法正常地終止。此類程序在系統內並沒有任何的作用,但同樣地會占用系統相關的資源)。
START:表示該程序被觸發啟動的時間。
TIME:表示該程序實際使用CPU資源運作的時間。
COMMAND:執行該程序的實際指令。
在osquery上,便是使用processes資料庫表格來儲存系統內相關程序的資訊,可使用「select * from processes」指令來取得系統內的程序資訊,執行結果如圖3所示,而相關欄位說明如表1所示。
|
▲圖3 取得系統內的程序資訊。 |
表1 相關欄位內容說明
檢視系統對外連線的狀態
在系統內,可利用netstat指令來查看系統內對外連線的狀態。netstat指令常用的組態選項,如下所述:
-l:僅顯示連線狀態為Listening,就表示以常駐(Daemon)的形式提供服務,例如網站伺服器的網路服務資訊。
-a:顯示目前系統內所有通訊埠的連線狀態資訊。
-t:僅顯示通訊協定為TCP時的連線狀態。
-u:僅顯示通訊協定為UDP時的連線狀態。
-c:顯示連線狀態為CONNECTED(已連線)的資訊。
可以利用「netstat -l」指令來取得系統內正在執行的網路服務,如圖4所示。在osquery上,即是利用名稱為「listening_ports」的資料庫表格來儲存系統內運作中的網路服務資訊,可使用「select * from listening_ports」指令來取得網路服務的資訊(圖5),相關欄位說明如表2所示。
|
▲圖4 查詢系統內正在執行的網路服務。 |
|
▲圖5 取得網路服務的資訊。 |
表2 相關欄位說明