系統稽核感知 資訊安全 開源碼 Linux 安全漏洞

檢查安全漏洞彙整易讀報表 商業Shell程式亦有開源版

活用Lynis系統稽核工具 掃描查漏持續補強資安

2021-09-23
Lynis是一個開放原始碼的系統稽核工具程式,可用來稽核系統是否潛藏安全問題,並提出相關的改善建議本文將示範如何檢查安全漏洞,並利用轉換程式將原始的Lynis輸出結果轉成易於判讀的報告,讓管理者更容易掌握系統的狀態。

 

系統稽核工具程式Lynis以Shell語言撰寫而成,是由CISOfy公司所維護,主要用來稽核系統是否有潛在的安全問題並提出相關建議,支援Linux、FreeBSD、macOS等系統。管理者可利用此工具來自動檢查系統相關的安全漏洞。目前,CISOfy提供商用收費及免費開源的版本,本文將以Lynis的免費開源版本來做示範。由於Lynis目前並不支援Windows系統,因此這裡將以CentOS 8為例,說明如何以Lynis來檢查系統上的安全漏洞,並利用相關的轉換程式將原始的Lynis輸出結果轉成易讀的報告,讓管理者更容易掌握系統的安全狀態。

動手安裝Lynis

安裝Lynis過程很簡單,只要至CISOfy官方網站(https://cisofy.com/)下載最新版(本文使用版本為3.0.4)的Lynis程式並放置於系統上即可,開始安裝時執行如下指令(其中#為註解符號):

mkdir /usr/local/lynis  #新建目錄,將 Lynis相關程式置於此目錄 wget https://downloads.cisofy.com/ lynis/lynis-3.0.4.tar.gz #下載原始碼檔案

解壓縮後,將所有檔案置於「/usr/local/lynis」目錄即完成安裝。

Lynis提供一個主要執行程式(名稱為lynis)來執行稽核檢查,以及執行時所參考的組態檔(名稱為default.prf)。

首先,說明組態檔常用的組態設定,如下所述:

skip-test

在Lynis上,所有的檢查都是以檢查項目編號(例如PKGS-7392)來表示檢查的項目。而在系統檢查實務上,有許多的檢查可能是無關緊要的(例如檢查系統是否有命令提示功能),或因待測主機某些特殊因素而造成的誤判,此時即可使用此選項來跳過某些檢查。例如,可設定「skip-test=PKGS-7392」來忽略PKGS-7392檢查項目。若有多個項目,即可以此類推,設定多個欲排除的檢查項目。

skip-plugins=no

Lynis提供了外掛檢查程式檢查(Plugin)機制,提供給第三方(Third Party)自行撰寫檢查程式來擴展檢查能力。此選項表示是否要關閉Plugin機制,若設定為「skip-plugins=yes」表示忽略Plugin機制(表示不使用)。反之,如果設定成「skip-plugins=no」則是使用Plugin機制。

ssl-certificate-paths

在某些測試SSL的檢查中,可能需要SSL數位憑證(Certificate),可在此組態中設定相關憑證檔的位置

test-scan-mode

可在此組態中設定想要掃描類型,Lynis提供了light、normal、full等掃描模式,相關說明如下:

‧light:表示使用簡單快速的掃描來檢查系統,此種模式掃描速度最快。

‧normal:表示以一般的模式進行掃描。

‧full:表示以全面性的掃描來完整檢查糸統,這也是預設掃描的模式。

plugin

設定要啟用的plugin模組,可在此設定欲使用的模組。如設定「plugin=authentication」,表示啟用authentication模組並使用其檢查功能。

disable-plugin

設定不啟用的plugin模組,可在此設定不使用的模組,如設定「disable-plugin=authentication」,代表不啟用authentication模組。

要特別注意的是,此組態會覆蓋掉plugin的設定,例如先設定「plugin=authentication」,而後再設定「disable-plugin=authentication」,即disable-plugin設定會覆蓋掉plugin的設定,表示不啟用authentication模組。

開始使用Lynis

在簡單了解Lynis的組態檔設定後,接著說明Lynis的使用,其使用語法如下:

lynis  [command]  [option]

其中主要的Command功能,說明如下:

audit

audit是主要的功能,用來執行系統安全稽核檢查,其提供的常用選項(Option)包括以下幾種:

system

這是主要做系統檢查的動作,使用者利用此命令來執行系統檢查的工作,例如「lynis audit system」指令表示針對本機系統執行檢查。

system remote 

表示可對遠端主機進行系統檢查的動作。使用此命令時,被測主機必須設定適當的SSH連線環境,讓Lynis主機能以SSH連線來進行測試。如下指令即表示對遠方主機系統執行檢查:

lynis audit system remote [遠端主機IP]

dockfile

針對Docker(一種類似虛擬機器的機制)的檔案執行系統檢查的動作。如下指令即表示將針對Docker檔案執行檢查:

lynis audit docker  [docker檔案]

show

show可用來顯示各項命令的設定值,常見的用法如下:

lynis show plugindir

Lynis允許以Plugin的方式來擴充稽核功能,此命令即為顯示所使用的第三方稽核程式應該置放的目錄。Lynis會在此目錄中取得第三方程式並用來執行稽核,在本文中所取得的第三方稽核程式也應放置於此目錄。

lynis show categories

顯示Lynis目前的檢查種類的資訊,各種檢查項目會依其檢查性質,分別歸屬到不同種類的類型。目前預設的有Performance、Privacy、Security等類型。

lynis show commands

顯示Lynis所支援的命令功能,預設有:

audit:執行系統安全檢查,這也是Lynis的主要功能。

configure:除了在組態檔中設定相關的組態值外,也可利用此命令重新設定執行系統安全檢查時所使用的組態值。

show:顯示Lynis上的各項資訊,如「顯示檢查項目」或外掛(Plugin)目錄等資訊。

update:顯示Lynis的更新狀態(如版本或更新日期等資訊),可利用此命令來確認是否已取得最新的版本。

lynis show dbdir

顯示Lynis所使用資料庫所在的目錄,此目錄包含Lynis在進行測試時所需要的相關設定資訊。

lynis show tests

顯示Lynis所有的檢查項目,包含顯示其測試項目名稱及其測試說明和測試目錄名稱等資訊。

lynis show details

有時可能需要更深入地了解某個測試項目的詳細內容,此時即可利用「lynis show details」來取得某個測試項目的詳細資訊,例如「lynis show details ACCT-2760」表示顯示ACCT-2760測試項目詳細的資訊。

lynis show logfile

顯示Lynis在執行時的紀錄檔,預設為「/var/log/lynis.log」。此紀錄檔會記錄Lynis的執行過程資訊,例如測試了那些測試項目及時間等資訊。

lynis show options

顯示執行時所使用的組態資訊(會覆蓋掉組態檔上的設定),常用的組態說明如下:

--auditor:設定檢查工作的相關說明文字,通常會設為執行稽核者的名稱,例如「lynis audit system - --auditor "稽核者名稱"」。

--debug:設定以偵錯的模式來運作,在此模式下會記錄最詳盡的資料。

--quick:設定以快速掃描模式來執行。

--plugin-dir:設定plugin程式所在的目錄位置。

--no-plugins:表示不使用plugin機制進行檢查。

--log-file:設定Lynis在執行時,其Log檔案的位置。

--no-log:表示Lynis執行時,不記錄相關的Log資訊。

lynis show os

顯示系統上的作業系統等資訊。

lynis show profiles

顯示Lynis的組態檔位置。

lynis show report

顯示Lynis在執行之後,所產生之報告檔的位置。

lynis show settings

顯示所有組態的設定資訊。

lynis show tests

顯示所有測試項目的相關資訊。

lynis show workdir

顯示Lynis所使用的工作目錄位置。

update

update是Lynis所提供的更新命令,提供下列選項:

check

檢查版本是否為最新版本。在安裝完Lynis後,建議先執行「lynis update check」來確認目前的版本及是否已更新至最新的版本,如果出現「status=up-to-date」,就表示已更新至最新版。

info

就如同check選項一樣,不過info選項提供更完整的資訊。

在執行「lynis update info」指令後,相關輸出資訊如圖1所示。

圖1  執行「lynis update info」指令後顯示輸出資訊。

實作至此,已將Lynis安裝至系統上並可進行檢查。但使用免費版本的Lynis,所能檢查的項目是有限的。幸運的是,在開源碼社群中,已有許多高手撰寫了許多的檢查程式,可利用Lynis的Plugin機制來增強檢查能力。

增強Lynis檢查功能

接著,就說明如何利用Plugin機制來增強Lynis的檢查功能。在此以開源碼社群中檢查密碼強度及隱藏檔案的稽核檢查程式為例,說明如何安裝plugin程式。

首先,必須確定plugin目錄位置,可先使用「lynis show plugindir」指令來確認plugin的目錄名稱(在本文為「/usr/local/lynis/plugins」),接著再以「lynis show profiles」指令確認組態檔的位置(在本文為「/usr/local/lynis/default.prf」)。然後,執行下列的指令來取得相關稽核檢查程式:

git clone https://github.com/nancheal/ lynis-plugins.git

相關的稽核檢查程式,簡單說明如下:

plugin_tests_passwd_phase2

檢查密碼檔「/etc/passwd」中是否存在敏感密碼哈希(Hash)值或簡單的Hash密碼資訊。

plugin_check_hidden_file_phase2

檢查系統上是否有隱藏的檔案。

plugin_check_docker_group_phase2

檢查系統上是否有docker的群組帳號。

plugin_check_suid_file_phase2

檢查系統上是否有檔案屬性為suid的檔案。具有suid屬性的檔案,會讓執行者在執行此類檔案時具有此檔案擁有者的權限,例如更改密碼的passwd程式即是一個典型具有suid屬性的程式,當一般使用者在執行此程式時就會具有系統管理者(root)的權限,此類檔案通常都具有潛在的危險性。

在了解相關plugin程式的功能後,接著即可將相關程式複製至「plugin」目錄。而後再更改組態檔(/usr/local/lynis/default.prf)來設定啟用相關程式,在default.prf加上下列設定來啟動檢查程式:

plugin=check_passwd_shadow plugin=check_hidden_file plugin=check_suid_file plugin=chech_docker_group

在設定完成之後,即可以「lynis audit system」指令對本身的系統進行稽核檢查。在執行完成後,可先利用「cat /var/log/lynis.log | grep check_passwd_shadow」來檢查grep check_passwd_shadow是否有啟動。如果發現有類似「Plugin 'check_passwd_shadow' enabled」的字樣,即表示該plugin已經正常啟動,可以此類推來檢查其他的plugin是否也正常啟動。

除此之外,可利用「cat /var/log/lynis.log |grep  'Warning'」來檢查此次稽核是否有檢查出弱點。

如圖2所示,以PKGS-7386項目來檢查,發現有弱點。如果想要更了解該測試項目的資訊,可利用「lynis show details PKGS-7386」來取得該測試項目的詳細資訊。

圖2  確認是否有檢查出弱點。

除了確認的弱點外,Lynis也會提供一些建議事項(Suggestion)。可利用「cat /var/log/lynis.log grep 'Suggestion'」來取得Lynis所建議的資訊。

而在檢查結束後,正式的檢查結果資訊會置於「/var/log/lynis-report.dat」,可藉由此檔案的內容來取得檢查結果。

至此,即完成以Lynis來對系統進行檢查的目的。但美中不足的地方在於,相關的檢查結果均是以純文字的形式儲存在lynis-report.dat檔案內,使用上較為不便。因此,接下來將安裝lynis-report-converter套件,將lynis-report.dat轉換成易讀的格式,讓管理者更容易掌握檢查結果。

安裝lynis-report-converter

lynis-report-converter是一個以Perl寫成的轉換程式,主要目的在於將Lynis的稽核檢查結果轉為易讀的格式,目前可轉換成HTML、PDF、Microsoft Excel(XLSX)、JSON、XML等格式。

在安裝之前,必須安裝相關的相依套件,因此執行以下指令:

dnf install https://packages.end point.com/rhel/8/main/x86_64/ htmldoc-1.9.11-1.ep8.x86_64.rpm dnf -y install  perl-Excel-Writer-XLSX dnf -y install perl-Module-Load- Conditional dnf -y install perl-JSON dnf -y install perl-XML-LibXSLT dnf install perl-Archive-Zip dnf -y install libarchive-zip-perl   cpan install HTML::HTMLDoc cpan install Excel::Writer::XLSX

在安裝完相關套件後,即可進行安裝,執行如下指令:

git clone https://github.com/d4t4king/ lynis-report-converter.git cd lynis-report-converter/ perl Makefile.PL make make install

在安裝完成後,便可利用下列的指令將結果轉換成易讀的格式,圖3所示為輸出的範例:

圖3  將結果轉換成易讀的格式。

#轉換成html格式 lynis-report-converter.pl -i /var/log/ lynis-report.dat  -o  /tmp/lynis.html

除此之外,如果要轉換成PDF格式的報表,可執行下列指令:

lynis-report-converter.pl -i  /var/log/ lynis-report.dat -p -o  /tmp/lynis.pdf

若想轉換成Excel格式的報表,則執行如下指令:

lynis-report-converter.pl –i /var/log/ lynis-report.dat  -E -o  /tmp/lynis.xlsx

<本文作者:吳惠麟,多年資安經驗,喜好利用開源碼建構相關解決方案,著有「資訊安全原理與實驗」等書。>

 


追蹤我們Featrue us

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

我知道了!