關連式資料庫 系統管理 作業系統 開源碼 跨平台

靈活運用osquery 系統資源狀態隨時查詢

2018-12-03
隨時掌握處理程序、對外連線狀態、系統記憶體、使用者資訊、歷史指令等系統資源,是系統管理者最重要的工作內容。本文將介紹一套開源碼系統管理工具osquery,讓管理者可以透過關連式資料庫的SQL語法來隨時查看所需的系統資源相關資訊。

查看系統記憶體相關資訊

在系統內,記憶體的重要性是無庸置疑的,因此通常都會注意記憶體的使用狀況,在系統內可利用free指令來查看系統內的記憶體相關資訊,free指令常用的組態選項如下:

-b:輸出資訊以位元組(Bytes)為單位。

-k:輸出資訊以Kilobytes為單位。

-m:輸出資訊以Megabytes為單位。

-g:輸出資訊以Gigabytes為單位。

--tera:輸出資訊以Terabytes為單位。

-h:輸出易於閱讀的資訊。

可利用「free -h」指令來取得記憶體目前的使用狀況,執行結果如圖6所示。在osquery中,可利用memory_info資料庫表格來顯示系統內記憶體的使用資訊,可執行「select * from memory_info;」指令取得相關資訊,如圖7所示,相關欄位說明如表3所示。


▲圖6 取得記憶體目前的使用狀況。


▲圖7 顯示系統內記憶體的使用資訊。

表3 欄位名稱說明

運用Netfilter/Iptables機制

Netfilter/Iptables是Linux系統最有名的防火牆軟體,其中Netfilter為核心模組機制。利用各式的核心模組以掛?(Hook)的方式,將模組掛?於核心處理封包的流程中,並利用檢查點(Hook Point)機制,針對通過的封包實施檢查及過濾。Netfilter提供以下五個檢查點,其系統架構如圖8所示。


▲圖8 系統架構示意圖。

1. PREROUTING:當外來封包進入至本機時,便會經過PREROUTING檢查點,這也是封包進入後所遇到的第一個檢查點。接下來,檢查封包是否已到達目的主機,如果確定已到達主機,則會進入INPUT檢查點,否則將進入FORWARD檢查點,轉發至其他主機。

2. INPUT:當外來封包發現已到達目標主機時,就會進入本機並經過INPUT檢查點,否則便進入FORWARD檢查點,轉發至其他主機,並繼續往下個目標主機前進。

3. OUTPUT:當外來封包經由本機發出,便會經過OUTPUT檢查點。

4. FORWARD:如果外來封包發現並非到達目標主機,就會經過FORWARD檢查點。

5. POSTROUTING:當外來封包要離開系統主機時,便會經過POSTROUTING檢查點,這也是外來封包進入後所遇到的最後一個檢查點。

而iptables則是用來操控Netfilter機制設定防火牆規則的使用者應用程式。其設定規則是以表格(Table)及規則鏈(Chain)的概念來設定,Netfilter總共提供以下三個表格及五個規則鏈。

Filter:主要提供封包過濾,可過濾TCP、UDP、MAC、ICMP等類型封包,包含INPUT、forward、output等規則鏈。

NAT:提供SNAT和DNAT等功能,可用來IP偽裝,讓網域內的多台電腦可共用一個公共IP上網。本表格包含prerouting、postrouting、out等規則鏈。

mangle:此表格主要用來修改封包內容,其中包含PREROUTING、POSTROUTING、FORWARD、INPUT、OUTPUT等規則鏈。

接著,簡單講解iptables的語法結構,各項參數說明如下:

iptables [-t table] command
[match][-j target/jump]

[-t table]:用來指定要設定那個表格的規則,如未指定,即預設為filter。

Command:命令,通常後會接規則鏈名稱。常用的命令包括:-A(在指定的規則鏈之後新增一個規則)、-D(在指定的規則鏈之後刪除一個規則)、-F(清除規則)、-L(顯示規則)。

[match]:比對條件。常用的比對條件包括:-d(指定套用規則的目的主機或IP位址)、-I(指定當封包進入FORWARD OUTPUT或POSTROUTING所通過的網路介面名稱,如eth0)。


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!