6


稽核系統安全性

本章說明如何使用 Solaris Security Toolkit 稽核(驗證)系統的安全性。請使用本章的資訊和程序來維護在強化之後所建立的安全性設定檔。對於已部署的系統,在強化之前您可使用本章的資訊來評估系統的安全性。



備註 - 本章及本書中的稽核 一詞是用來定義透過比較預先定義的安全性設定檔,Solaris Security Toolkit 軟體驗證安全性部署的自動化程序。此專有名詞在此出版品內的使用不保證系統在使用稽核選項後即會安全無虞。



本章包含以下主題:


維護安全性

維護安全性是一個持續的程序,必須經常檢閱及重複查看。維護一個安全的系統需要心生警惕,原因是任何系統預設的安全配置經過一段時間之後開放度會大增(要取得維護安全的資訊,請參閱維護系統安全性。)

根據使用者經驗及要求,我們為 Solaris Security Toolkit 軟體開發了自動化方法,藉由判定與特定安全性設定檔案相符的程度來稽核系統的安全狀態。



備註 - 此方法僅適用於獨立模式下使用 jass-execute -a 指令,而且不可在 JumpStart 安裝期間使用。



定期的稽核系統的安全狀態,手動或自動(例如:透過 cron 工作或 rc 程序檔)皆可。例如,強化一個新安裝的系統之後,5 天之後執行 Solaris Security Toolkit 軟體稽核指令 (jass-execute -a driver-name) 判定系統的安全性已經改變,脫離安全性設定檔所定義的狀態。

多久作一次稽核在於系統的重要性及您的安全策略。有些使用者每個小時、每天或一個月一次作稽核。有些使用者每個小時執行 mini-scan(限定數量的檢核),以及每一天執行全部掃描(所有可能的檢核)。

要維護已部署系統的安全狀態,稽核是重要的元件。若系統狀態沒有定期的稽核,然後隨著時間配置會偏移,原因可能是隨機變化 (entropy) 或者不明狀況或惡意的更改預定的系統安全狀態。若沒有定期的檢閱,這些變更會變成無法偵測而且無法進行修正。結果就是系統會不安全及更脆弱。

除了定期稽核之外,升級、修補及其他大型系統配置更改後都要做稽核。


強化之前檢視安全性

有些狀況下,您會發現在強化之前 檢閱已部署系統的安全狀態是有用的。例如,若您接掌由他人所管理的已部署系統,檢閱系統的狀態,如此您知道它們的狀態以及,若有需要,可以帶領系統進入依從您系統所使用的相同安全性設定檔。


自訂安全性稽核

稽核選項提供高彈性及可延伸的機制來評估系統的狀態。使用強化程序檔,您可自訂稽核程序檔的動作。例如,您可自訂環境變數、自訂架構及輔助程式函數、加入新的檢查、及加入新的功能至稽核架構。

大部分使用者發現標準及產品特定程序檔適合做為自訂環境稽核的範本。對於此情境,透過驅動程式、結束程序、檔環境變數、及檔案範本自訂稽核程序檔行動。這些自訂的更改只需少許工作而且不需更改程式碼來達成。不論您為強化系統作了什麼改變,當您執行稽核 Solaris Security Toolkit 軟體會自動知道。

偶而,使用者發現須新增 Solaris Security Toolkit 軟體未提供的檢查或功能是有必要的。對於此情境,加入檢查或新的功能至稽核程序檔。(對應的結束程序檔要做相關的修改。)有些狀況下可能需要更改程式碼。當進行新增或修改程式碼時要特別小心,以避免帶入錯誤及失敗。

有些使用者需要建立全新的專屬系統或者站台特定的,驅動程式及程序檔。當您編碼新的驅動程式及程序檔時,使用範本及樣品做為準則。當您使用稽核選項時,站台特定驅動程式、結束程序檔、變數、及函數並不會 自動的被 Solaris Security Toolkit 軟體知道。例如,若您新增一個名為 abcc-nj-secure.driver站台特定的驅動程式,它包括一個站台特定結束程序檔,abcc-nj-install-foo.fin,然後您需要建立一個站台特定的稽核程序檔, abcc-nj-install-foo.aud。同樣地,若您以稽核程序檔做開始,您應該建立對應的結束程序檔。

要自訂或建立一個新的驅動程式、程序檔、變數、及函數,請參閱「Solaris Security Toolkit 4.1 Reference Manual」

例如,您可能需要新增一個 Solaris Security Toolkit 未安裝的修補程式。您可將標準或產品特定的範本作延伸,或者建立您自己的範本。若您建立自己的範本,建立一個結束程序檔來新增修補程式,然後建立一個對應的修補程式安裝的稽核程序檔來作檢查。


準備稽核安全性

要使用本章的指示及準則,您需要一個安全性設定檔。要取得有關建立及使安全性設定檔生效,請參閱第 2 章

Solaris Security Toolkit 發行內包含不同的安全性設定檔範本做為驅動程式。如同本書前面章節所描述,預設安全性設定檔及被這些驅動程式所作的更改可能並不適合您的系統。通常,由這些驅動程式所實現的安全性設定檔為系統的「高值參數」標記。因此我們認為停用的服務是不需要的,而且它們的預設選用安全功能為停用。

很多 Solaris Security Toolkit 軟體使用者發現,它們的環境可以接受標準及特定產品安全性設定檔的範本。若您的狀況可以套用,判定那一個安全性設定檔是最接近您要的安全狀態,然後使用它們評估及強化您的系統。

為您的環境檢視或自訂安全性設定檔範本,或者建立一個新的範本。「Solaris Security Toolkit 4.1 Reference Manual」 提供自訂安全性設定檔的技巧及準則。這個方法提供為您的機構量身訂做適合的安全性狀態,而且作安全性評估時會減少回傳的假錯誤數量。例如,若您知道 Telnet 需要被啟用,您可自訂安全性設定檔,如此當進行安全評估時,軟體不會認為 Telnet 是弱點。例如,系統使用 Telnet 和 Kerberos 作驗證及加密,即不會認為 Telnet 是弱點。


使用選項及控制稽核輸出

本節說明執行稽核運轉之可用選項及用來控制輸出的選項。本節包含以下主題:

指令行選項

範例對照安全性設定檔來稽核系統的方法:


# jass-execute -a driver [ -V [0-4]] [ -q | -o output-file ] [ -m email-address ]

 

當執行 Solaris Security Toolkit 軟體稽核指令,您可使用表 6-1 中所列出的選項。


表 6-1 使用稽核指令的指令行選項

選項

說明

-a

判定系統是否符合其安全性設定檔。

-h

顯示 jass-execute 說明訊息,提供可用選項的簡介。

-m

傳送輸出至電子郵件位址。

-o

導引輸出至檔案。

-q

阻止主控台顯示輸出。也稱作無訊息選項。

-V

指定稽核運行的詳細程度。


 

要取得有關 jass-execute -a 指令可用選項的詳細資訊,請參閱以下章節:

顯示說明選項

jass-execute-h 選項顯示說明訊息,提供適用選項的簡介。

-h 選項之輸出與下列輸出相似:


程式碼範例 6-1 -h 選項輸出範例

# ./jass-execute -h
 
To apply this Toolkit to a system, using the syntax:
  jass-execute [-r root_directory -p os_version ]
  [ -q | -o output_file ] [ -m e-mail_address ]
  [ -V [3|4] ] [ -d ] driver
 
To undo a previous application of the Toolkit from a system:
  jass-execute -u [ -b | -f | -k ] [ -q | -o output_file ]
     [ -m e-mail_address ] [ -V [3|4] ]
 
To audit a system against a pre-defined profile:
  jass-execute -a driver [ -V [0-4] ] [ -q | -o output_file ]
     [ -m e-mail_address ]
 
To display the history of Toolkit applications on a system:
  jass-execute -H
 
To display the last application of the Toolkit on a system:
  jass-execute -l
 
To display this help message:
  jass-execute -h
  jass-execute -?
 
To display version information for this program:
  jass-execute -v

 

電子郵件通知選項

-m email-address 選項提供當執行完畢,Solaris Security Toolkit 軟體自動將輸出寄出的機制。電子信箱報告為使用其他選項所產生之系統日誌檔之外的報告。

Solaris Security Toolkit 透過電子郵件選項執行呼叫 sunfire_15k_sc-config.driver 應與下列輸出相似:


# ./jass-execute -m root -a sunfire_15k_sc-config.driver 
[...]

 

輸出檔案選項

-o output-file 選項重導 jass-execute 螢幕輸出至檔案 output-file

此選項對保留在 JASS_REPOSITORY 目錄的日誌檔沒有任何效用。此選項對於執行在一台慢終端機上時非常有幫助,因為執行 Solaris Security Toolkit 會產生大量的輸出。

此選項可同時與 -d-u-a 選項同時使用。

-o 選項之輸出與下列輸出相似:


程式碼範例 6-2 -o 選項輸出範例

# ./jass-execute -o jass-output.txt -a secure.driver 
[NOTE] Executing driver, secure.driver
[NOTE] Recording output to jass-output.txt
#

 

無訊息選項

-q 選項停止將強化執行之 Solaris Security Toolkit 輸出到標準輸入/輸出 (stdio) 資料流。

此選項對保留在 JASS_REPOSITORY 目錄的日誌檔沒有任何效用。與 -o 選項相似,此選項對於執行 cron 工作或在緩慢網路上執行 Solaris Security Toolkit 軟體非常有幫助。

此選項可同時與 -d-u-a 選項同時使用。

-q 選項之輸出與下列輸出相似:


程式碼範例 6-3 -q 選項輸出範例

# ./jass-execute -q -a secure.driver
[NOTE] Executing driver, secure.driver

 

詳細度選項

-V 選項指定稽核運行時的詳細度等級。此選項只適用稽核。詳細度等級提供高彈性的方法來顯示稽核的結果。例如,若您有 100 台電腦作稽核,您可能希望限制輸出為:以每台電腦一行來判定那台電腦通過或沒有通過。然後對於那些沒有通過的電腦,您可能會想要執行稽核,它可產生擴展性的輸出以便著重於問題所在區域。

五個詳細度等級(0 至 4)由 -V 選項來控制。每個增加的等級提供您可用來更瞭解何者已通過檢查以及何者沒有通過的更多資訊。表 6-2 說明詳細度等級。


表 6-2 稽核詳細度等級

等級

輸出

0

一行表示通過或失敗。

1

對於每個程序檔而言,一行表示通過或失敗。所有程序檔行下有一個總合分數行。

2

對於每個程序檔,提供所有檢查的結果。

3

多行提供全部輸出,包含標題及標頭訊息。

4

多行(等級 3 的所有資料)加上由 logDebug 日誌函數產生的所有項目。此等級作除錯之用。


 

備註 - jass-execute -V 指令的預設詳細度等級是 3。



要取得詳細度的完整說明,請參閱「Solaris Security Toolkit 4.1 Reference Manual」

標題及訊息輸出

您可配置 Solaris Security Toolkit 稽核選項至報告或者省略標題及訊息。JASS_LOG_BANNER 變數不可用在詳細度 0 至 2。這些輸出選項適用詳細度 3 及 4。例如,您可能想要去除輸出的通過訊息(JASS_LOG_SUCCESS 變數),如此您可報導和集焦於失敗訊息(JASS_LOG_FAILURE 變數)。

表 6-3 列舉您可透過記錄變數控制的標題及訊息。(要取得有關記錄變數的詳細資訊,請參閱「Solaris Security Toolkit 4.1 Reference Manual」。)若記錄變數設定為 0,該種類的訊息不產生輸出。相反地,若記錄變數設定為 1,訊息就會顯示。每一個變數的預設行動為顯示輸出。表 6-3 說明記錄變數。


表 6-3 顯示稽核輸出的標題與訊息

記錄變數

日誌檔前綴

說明

JASS_LOG_BANNER

所有標題輸出

此參數控制標題訊息的顯示。這些訊息通常由等號(「=」)或者破折號(「-」)字元所組成的分隔符號圍繞。

JASS_LOG_ERROR

[ERR]

此參數控制錯誤訊息的顯示。若設定為 0,將不產生錯誤訊息。

JASS_LOG_FAILURE

[FAIL]

此參數控制所有失敗訊息的顯示。若設定為 0,將不產生失敗訊息。

JASS_LOG_NOTICE

[NOTE]

此參數控制所有提示的顯示。若設定為 0,不產生提示訊息。

JASS_LOG_SUCCESS

[PASS]

此參數控制成功或通過狀態訊息的顯示。若設定為 0,不產生成功訊息。

JASS_LOG_WARNING

[WARN]

此參數控制警告訊息的顯示。若設定為 0,不產生警告訊息。


 

當您只需檢視特定訊息時,使用這些選項非常有用。藉由設定這些選項,您可最小化輸出,但仍可著重於您認為重要的範圍。例如,藉由設定除了 JASS_LOG_FAILURE(保留預設值 1)之外的所有的記錄變數為 0,稽核只報告由 logFailure 函數所產生的失敗訊息。


程式碼範例 6-4 僅報告稽核失敗之輸出範例

# JASS_LOG_FAILURE=1
# export JASS_LOG_FAILURE
[setting of other parameters to 0 omitted]
# ./jass-execute -a secure.driver -V 2
update-at-deny        [FAIL] User test is not listed in
   /etc/cron.d/at.deny.
update-at-deny        [FAIL] Audit Check Total : 1 Error(s)
update-inetd-conf     [FAIL] Service ftp is enabled in
   /etc/inet/inetd.conf.
update-inetd-conf     [FAIL] Service telnet is enabled in
   /etc/inet/inetd.conf.
update-inetd-conf     [FAIL] Service rstatd is enabled in
   /etc/inet/inetd.conf.
update-inetd-conf     [FAIL] Audit Check Total : 3 Error(s)

 

主機名稱、程序檔名稱、以及時間戳記輸出

您可配置 Solaris Security Toolkit 稽核選項,包括主機名稱、程序檔名稱以及詳細度 0 至 2 的資訊。例如,若您要稽核多台電腦,您也許想要根據主機,程序檔名稱或者時間戳記來排序。表 6-4 列舉出變數。


表 6-4 顯示主機名稱、程序檔名稱、及時間戳記稽核輸出

變數名稱

變數描述

JASS_DISPLAY_HOSTNAME

設定此參數為 1 導致 Solaris Security Toolkit 軟體置系統主機名稱至每個記錄項目之前。此資訊根據 JASS_HOSTNAME 參數而來。依據預設,此參數是空的,因此 Toolkit 不會顯示此資訊。

JASS_DISPLAY_SCRIPTNAME

依據預設,此參數設定為 1,如此 Solaris Security Toolkit 軟體將目前開始執行的稽核程序檔的名稱置於每個記錄之前。設定任何值給此參數會導致 Toolkit 不顯示資訊。

JASS_DISPLAY_TIMESTAMP

設定此參數為 1 導致 Solaris Security Toolkit 軟體將執行稽核的時間戳記置於每個記錄項目之前。此資訊根據 JASS_TIMESTAMP 參數而定。依據預設,此參數是空的,因此軟體不顯示此資訊。


 

藉由配置 Solaris Security Toolkit 軟體將主機、程序檔、時間戳記資訊作前置,您可結合不論是單一系統或一組系統的執行結果,然後根據關鍵資料來作排序。您可使用這些資訊來尋找跨越數個系統或是部署程序症狀性的問題。例如,系統管理員可以知道若建立系統時使用特定的程序,檢查則一定會失敗。

例如,設定 JASS_DISPLAY_TIMESTAMP 參數為 1 以及設定 JASS_DISPLAY_SCRIPTNAME 值為 0 的輸出與下列輸出相似。


程式碼範例 6-5 稽核記錄項目輸出範例

# JASS_DISPLAY_SCRIPTNAME=0
# JASS_DISPLAY_TIMESTAMP=1
# export JASS_DISPLAY_SCRIPTNAME JASS_DISPLAY_TIMESTAMP
# ./jass-execute -a secure.driver -V 2
20030101233525 [FAIL] User test is not listed in
   /etc/cron.d/at.deny.
20030101233525 [FAIL] Audit Check Total : 1 Error(s)
20030101233525 [FAIL] Service ftp is enabled in
   /etc/inet/inetd.conf.
20030101233525 [FAIL] Service telnet is enabled in
   /etc/inet/inetd.conf.
20030101233525 [FAIL] Service rstatd is enabled in
   /etc/inet/inetd.conf.
20030101233525 [FAIL] Audit Check Total : 3 Error(s)

 


執行安全性稽核

定期執行系統安全性評估,可以提供一個系統的安全性是否貼近安全性設定檔的基準。最普遍的場景是強化新安裝之後,進行安全評估做為維護安全的作業。我們設計了安全評估選項,因此您可以單純的執行與您作系統強化相同的強化驅動程式。但是現在您可使用 -a 選項來檢查目前的狀態與強化期生效的安全性設定檔作比較。這項設計去除了複雜性而且提供彈性。例如,當您更新您的安全性設定檔,接下來使用更新的安全性設定檔作安全評估。

另一個可能的情境是,您必須負責已部署系統的安全。在強化之前,您想要進行安全性評估。這樣的情境下,您要定義自己的安全性設定檔,自訂 Solaris Security Toolkit 安全性設定檔範本,或者不加更動的使用安全檔案範本。


procedure icon  執行安全性稽核

執行稽核之前,您需要定義或選擇一個安全性設定檔。要取得更多資訊,請參閱準備稽核安全性



caution icon

注意 - 若您在已部署但尚未強化的系統上執行安全評估,首先備份系統、重新開機,來確定它的配置是已知的、運作中的和一致的。任何預先開機期間偵測到的錯誤或警告,在進行安全評估之前應該被修正或作記錄。



1. 選擇您想要使用的安全性設定檔(強化驅動程式):

例如,secure.driver

例如,secure.driverabccorp-secure.driver

若要完整及新的可用驅動程式清單,自下列網站下載最新版本的 Solaris Security Toolkit 軟體:

http://www.sun.com/security/jass

請參閱「Solaris Security Toolkit 4.1 Reference Manual」 取得標準及產品專用驅動程式的資訊。對於最近的驅動程式清單,請參閱 Drivers 目錄。

2. 判定您要的指令行選項以及您想要如何控制輸出。

請參閱使用選項及控制稽核輸出

3. 輸入 jass-execute -a 指令、安全性設定檔的名稱以及您想要的選項。

下列是使用 sunfire_15k_sc-secure.driver 執行稽核的範例。


程式碼範例 6-6 執行稽核的輸出範例

# ./jass-execute -a sunfire_15k_sc-secure.driver
[NOTE] Executing driver, sunfire_15k_sc-secure.driver
 
[...]
 
================================================================
sunfire_15k_sc-secure.driver: Audit script: enable-rfc1948.aud
================================================================
 
#---------------------------------------------------------------
# RFC 1948 Sequence Number Generation
# 
# Rationale for Audit:
# 
# The purpose of this script is to audit that the system is
# configured and is in fact using RFC 1948 for its TCP sequence
# number generation algorithm (unique-per-connection ID). This is
# configured by setting the 'TCP_STRONG_ISS' parameter to '2' in
# the /etc/default/inetinit file.
#
# Determination of Compliance:
#
[...]
#---------------------------------------------------------------
 
[PASS] TCP_STRONG_ISS is set to '2' in /etc/default/inetinit.
[PASS] System is running with tcp_strong_iss=2.
 
# The following is the vulnerability total for this audit script.
 
[PASS] Audit Check Total : 0 Error(s)
 
================================================================
 
# The following is the vulnerability total for this driver profile.
 
[PASS] Driver Total : 0 Error(s)
 
================================================================
sunfire_15k_sc-secure.driver: Driver finished.
================================================================
 
[PASS] Grand Total : 0 Error(s)

 

稽核運行已經啟始,Solaris Security Toolkit 軟體自 JASS_HOME_DIR/Audit 目錄中存取檔案。雖然所有的檔案存在於 JASS_HOME_DIR/AuditJASS_HOME_DIR/Finish 目錄,共享相同的基本檔案名稱,它們的字尾不同。driver.run 程序檔自動的翻譯結束程序檔定義的 JASS_SCRIPTS 變數至稽核程序檔,藉由改變它們的字尾自.fin 改為 .aud

稽核運行啟動及起始 Solaris Security Toolkit 軟體的狀態。每個運行期間驅動程式的存取會評估所有的檔案範本及稽核程序檔的狀態。每個檢查的結果是成功或失敗的狀態,由零或非零來表現。大多數狀況下,失敗由 1 來表示。每個執行的程序檔產生一個安全分數的小計,根據程序檔包含的每一個檢查的弱點的總計。更進一步,每個驅動程式的弱點小計值在完成驅動程式評估之後顯示。總合值在執行結束後顯示。

安全性評估選項提供一個容易瞭解的,起始安全評估時點的系統狀態。Solaris Security Toolkit 軟體藉由檢視配置檔案來檢查系統的儲存狀態,以及藉由檢視表格資訊、裝置驅動程式資訊及其他來檢查系統的執行狀態。Solaris Security Toolkit 軟體檢查每個檔案及服務是否存在以及檢查與服務相連的軟體是否已安裝、配置、啟用及執行。這個方法產生目前系統狀態的正確快照。