2019年9月18日 星期三

開源系統安全稽核工具:Lynis



現代的作業系統安裝越來越容易,十幾分鐘內就可以安裝好一台功能強大的服務系統。但是在日益簡化的安裝程序背後,這些自動完成的大量作業產出結果是不是都能符合資訊安全等級呢?

不知道那些是該檢視的項目,只能茫然。
對於看不完的記錄與設定檔,只能盲目。
面對一堆沒有盡頭處理事務,只能忙碌。




對此,若要自己完全掌握相關的設定檢視與權限判斷,並不是一件簡單的事,要避免大海撈針所帶來的時間耗損,我們勢必需要有良好的工具予以協助。






方案介紹

在開源世界裡,有一款工具可以自動化的為我們處理這些系統安全稽核,它不僅短小精幹,而且容易使用。

Lynis 是由 CISOfy 所維護的工具程式,除了開源版本外,它也提供 Lynis Enterprise 具有更進階管理能力的付費版本,本文將以前者為主。

Lynis 提供的主要功能如下:
  • 法遵測試
  • 自動稽核
  • 漏洞檢測
  • 滲透測試
  • 改善建議


透過 Lynis 的功能,可以用它來做許多法規遵循的自動化測試,官網上提到了可以用於 PCI-DSS、HIPPA、ISO27001 等,比人力一個個進行檢測所省下的時間是相當驚人的。

Lynis 目前可以支援許多作業系統環境下的檢測,可惜就缺 Windows。
  • AIX
  • FreeBSD
  • HP-UX
  • Linux
  • macOS
  • NetBSD
  • NixOS
  • OpenBSD
  • Solaris










安裝方式

Lynis 提供多種安裝方式,我個人比較喜歡採用手動 git 安裝,可以容易的安裝與更新至最新版本,若不想安裝,亦可下載 KALI Linux 系統,它已經內建好 Lynis 可以直接使用。

安裝與執行 Lynis
git clone https://github.com/CISOfy/lynis
cd lynis
chmod +x ./lynis
./lynis

執行畫面


在實際使用之前,記得要確認目前的版本是不是最新版本,使用最新版本方可確認最佳的稽核效果。

./lynis update info

執行輸出結果會顯示版本、狀態、目前可用的最新版本、釋出日期等資訊,若確定為 Outdated,可以使用 git pull 指令拉取最新版本回來使用。

版本資訊








主要功能

Lynis 的使用上極其簡單,最基本的用法只需要一行指令就能完成稽核動作,執行時請給予 root 權限以確保取得最佳的檢測效果。

sudo ./lynis audit system

這行指令執行以後會開始跑非常多項目的檢測,其中我們可以快速看到這一段檢測結果,第一行會個進度條,跑的越滿表示安全性越高,第二行表示總共做了 126 項測試,第三行表示啟用了幾項外掛程式。


稽核結果


在這麼多產出的結果當中,我要如何知道那些是我應該看的重點呢?其實我們可以利用簡單的指令快速看兩個重點,節省大量時間。

cat /var/log/lynis.log | grep Warning
cat /var/log/lynis.log | grep Suggestion

利用 grep 指令,篩選出 WarningSuggestion 的相關結果,前者指的是被稽核認為警告的項目,後者則提供建議,可以做為如何修正問題的參考。透過 grep 來快速查看結果,就能把時間花在重要的事項上面。

在稽核結果中會有許多項目編號,例如 PKGS-7392、FILE-7524 之類,若想要查看觀於這個項目的細節,可以利用指令單獨挑出來看。

./lynis show details PKGS-7392
./lynis show details FILE-7524
./lynis show details KRNL-5830

例如我們以這次稽核中有看到 KRNL-5830 項目,要特別查看這個項目的細節,輸入指令以後可以得出以下結果,可以看到 Lynis 做了那些已安裝過那些 Kernel 版本的檢測,並給出重新開機的建議,讓新的 Kernel 生效。

查看特定項目





遠端稽核


若我們要稽核另一台主機,除了在另一台主機也安裝 Lynis 來執行外,其實也可以運用 Lynis 所內建的遠端稽核功能來做,減少麻煩。

確認要進行遠端稽核的目標主機,必須開放有 SSH 協定可以連接後,可以執行指令:

./lynis audit system remote <ip>
在後方的 <ip> 換成目標主機 IP,Lynis 即會出現以下提示:


遠端稽核


其實它就是利用 SSH 協定將程式丟進去、執行、取回結果,只要照著畫面上它已經協助組好的指令一步一步貼上執行,就可以完成遠偳稽核的作業,也可以寫成指令稿,排程自動化執行。

不過這個遠端稽核有一點需要注意,在我的環境中 Step5 與 Step6 的稽核結果是放在 /var/log 裡而非 /tmp,如有遇到的朋友請多加留意。



查看技巧


看到目前為止,使用上都沒有太大問題,可是您真會每次都在文字介面下指令跟查看報告這麼辛苦嗎?我想不會,因為我也是。(笑)

所以我會搭配其它工具讓我方便查閱報告,我推薦使用 Visual Studio Code 以及它的擴充功能 Text Power Tools。

當兩者都安裝完成以後,以 Visual Studio Code 開啟 Lynis 的稽核結果檔案,此時按下命令熱鍵 [Command + Shift + P] (macOS) / [Ctrl + Shift + P] (Windows/Linux),叫出的命令區請選擇或輸入 Text Power Tools,下一個畫面再輸入想要篩選的結果如 Suggestion,即可篩選出我們想要看的結果。


進行篩選




篩選結果


搭配這些工具,在視窗環境下查看稽核結果會更加省時省力。





報表強化


儘管前面我們搭配了 Visual Studio Code 與 Text Power Tools 來提升報告檢視的方便性,但對於要提供給別人查閱上仍然不是這麼易於閱讀,更不可能要求每個人都安裝這些工具並學會如何使用。

還好,開源的世界就是不缺強力支援的夥伴,另有高手開發的專門幫 Lynis 做報告轉換成容易閱讀的格式。


Lynis Report Converter


Lynis Report Converter 可以轉換出五種格式:

  • HTML
  • PDF
  • XLSX
  • JSON
  • XML


安裝方式:
wget https://raw.githubusercontent.com/d4t4king/lynis-report-converter/master/lynis-report-converter.pl
chmod +x lynis-report-converter.pl

若要轉出 HTML 與 XLSX 格式,還需要安裝幾個函式庫:
apt install htmldoc
cpan install HTML::HTMLDoc

apt install libxml-writer-perl
apt install libarchive-zip-perl
cpan install Excel::Writer::XLSX

要轉出格式,請輸入以下指令即可,不需帶入報告來源檔案路徑,它會自己抓取。
./lynis-report-converter.pl -o out.html
./lynis-report-converter.pl -p -o out.pdf
./lynis-report-converter.pl -E -o out.xlsx

第一行是轉出 HTML,第二行 PDF,第三行是 XLSX。其中 XLSX 是呼叫 LibreOffice 進行轉換,看看這些轉換後的成果,是不是好多了呢?


轉出 HTML 報告格式



轉出 PDF 報告格式







結論

系統的安全設定千百種,稍不小心就會掛一漏萬,造成不易收拾的後果。透過好用的開源工具,協助我們自動化檢測與產出建議,就可以讓系統更加安全。







參考資料