如何在Ubuntu 16.04上用Lynis執(zhí)行安全審計(jì)
譯文【51CTO.com快譯】Lynis是一個(gè)基于主機(jī)的、開(kāi)源的安全審計(jì)應(yīng)用程序,它可以評(píng)估安全性配置文件、Linux和其他類(lèi)UNIX操作系統(tǒng)的安全態(tài)勢(shì)。在本教程中,你將學(xué)會(huì)安裝Lynis,并用它在一臺(tái)Ubuntu 16.04服務(wù)器上執(zhí)行安全審計(jì)。然后,你將會(huì)探究一個(gè)審計(jì)樣本的結(jié)果,并通過(guò)配置Lynis來(lái)忽略那些與你的需求所不相關(guān)的各種測(cè)試。
Lynis不會(huì)自動(dòng)執(zhí)行任何系統(tǒng)的加固,但它能提供一些建議,以向你展示如何去自行加固系統(tǒng)。因此, 如果你有Linux系統(tǒng)安全方面的基本知識(shí)的話,它將對(duì)你很有幫助。你還應(yīng)該對(duì)你所計(jì)劃執(zhí)行審計(jì)的機(jī)器上的那些正在運(yùn)行服務(wù)有所熟悉,例如各種web服務(wù)器、數(shù)據(jù)庫(kù)和其他Lynis可能會(huì)默認(rèn)掃描到的服務(wù)。這將有助于你去識(shí)別出那些能夠被安全地忽略掉的結(jié)果。
注意:執(zhí)行安全審計(jì)是需要時(shí)間和耐心的。你可能需要在安裝Lynis和用它來(lái)審計(jì)你的服務(wù)器之前,花上一些時(shí)間來(lái)仔細(xì)地閱讀本文全部?jī)?nèi)容。
先決條件
為了吃透本文,你需要有:一臺(tái)Ubuntu 16.04服務(wù)器,并配置了一個(gè)具有sudo特權(quán)的非根用戶和防火墻,你可以參考《用Ubuntu 16.04來(lái)初始化服務(wù)器的設(shè)置》教程來(lái)實(shí)現(xiàn)。
步驟1 在你的服務(wù)器上安裝Lynis
安裝Lynis可以有多種方法。你可以從源代碼來(lái)編譯它,下載并復(fù)制其二進(jìn)制文件到系統(tǒng)上的一個(gè)適當(dāng)?shù)奈恢?或者你可以用包管理器來(lái)安裝它。使用包管理器是安裝并更新Lynis的最簡(jiǎn)便的方法,所以我們?cè)诖藢⑹褂迷摲椒ā?/p>
不過(guò),在Ubuntu 16.04上,資源庫(kù)里所提供的版本并非是最新的。為了獲得其最新的特性,我們將從其項(xiàng)目的官方資源庫(kù)來(lái)安裝Lynis。
Lynis的軟件資源庫(kù)使用的是HTTPS協(xié)議,因此我們首先需要確保支持HTTPS的包管理器已被安裝。你可以使用以下的命令來(lái)進(jìn)行檢查:
- $ dpkg -s apt-transport-https | grep -i status
如果已安裝,該命令的輸出結(jié)果應(yīng)該是:
- Output
- Status: install ok installed
如果輸出結(jié)果顯示未安裝,則可用sudo apt-get install apt-transport-https來(lái)安裝。
掃清并安裝了這個(gè)唯一的依賴性之后,我們就可以來(lái)安裝Lynis了。為了觸發(fā)此過(guò)程,我們要添加庫(kù)的鍵值:
- $ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C80E383C3DE9F082E01391A0366C67DE91CA5D5F
你將能看到如下的輸出結(jié)果,它表明鍵值已被添加成功:
- Output
- Executing: /tmp/tmp.AnVzwb6Mq8/gpg.1.sh --keyserver
- keyserver.ubuntu.com
- --recv-keys
- C80E383C3DE9F082E01391A0366C67DE91CA5D5F
- gpg: requesting key 91CA5D5F from hkp server keyserver.ubuntu.com
- gpg: key 91CA5D5F: public key "CISOfy Software (signed software packages) " imported
- gpg: Total number processed: 1
- gpg: imported: 1 (RSA: 1)
然后是將Lynis的資源庫(kù)添加到那些對(duì)軟件包管理器可用的列表之中:
- $ sudo add-apt-repository "deb [arch=amd64] https://packages.cisofy.com/community/lynis/deb/ xenial main"
為了使這些新附加的資源庫(kù)能為系統(tǒng)所用,我們需更新包的數(shù)據(jù)庫(kù):
- $ sudo apt-get update
最后再來(lái)安裝Lynis:
- $ sudo apt-get install lynis
在安裝完成后,你將可以訪問(wèn)到lynis的命令其子命令集。接下來(lái)讓我們來(lái)看看如何使用Lynis。
步驟2 執(zhí)行審計(jì)
在安裝完畢后,你就可以使用Lynis來(lái)對(duì)系統(tǒng)執(zhí)行安全審計(jì)了。讓我們從查看Lynis所能執(zhí)行的操作列表開(kāi)始吧。請(qǐng)執(zhí)行如下命令:
- $ lynis show commands
你會(huì)看到如下的輸出:
- Output
- Commands:
- lynis audit
- lynis configure
- lynis show
- lynis update
- lynis upload-only
Lynis在審計(jì)時(shí)一般用到的是概要文件(profiles),它們就像配置文件一樣通過(guò)設(shè)置來(lái)控制Lynis的審計(jì)。你可以使用如下命令來(lái)查看默認(rèn)概要文件的設(shè)置:
- $ lynis show settings
你將會(huì)看到如下的輸出:
- Output
- # Colored screen output
- colors=1
- # Compressed uploads
- compressed-uploads=0
- # Use non-zero exit code if one or more warnings were found
- error-on-warnings=0
- ...
- # Upload server (ip or hostname)
- upload-server=[not configured]
- # Data upload after scanning
- upload=no
- # Verbose output
- verbose=0
- # Add --brief to hide descriptions, --configured-only to show configured items only, or --nocolors to remove colors
在執(zhí)行審計(jì)之前去驗(yàn)證一下是否有新版本可用是一個(gè)很好的習(xí)慣,因?yàn)檫@樣你將能得到最新的建議和信息。你可以通過(guò)以下命令來(lái)檢查更新:
$ lynis update info
你將得到類(lèi)似于如下的輸出,它會(huì)顯示出Lynis的最新版本:
- Output
- == Lynis ==
- Version : 2.4.8
- Status : Up-to-date
- Release date : 2017-03-29
- Update location : https://cisofy.com/lynis/
- 2007-2017, CISOfy - https://cisofy.com/lynis/
或者,你可以輸入lynis update check,來(lái)產(chǎn)生如下的一行輸出:
- Output
- status=up-to-date
如果當(dāng)前版本確實(shí)需要更新,那么你可以使用包管理器來(lái)執(zhí)行更新操作。
你可使用lynis audit system命令,在系統(tǒng)上運(yùn)行一次審計(jì)。當(dāng)然,你可以選擇用特權(quán)或是非特權(quán)(滲透測(cè)試)模式來(lái)運(yùn)行Lynis。對(duì)于后者的模式,一些需要root特權(quán)的測(cè)試會(huì)被忽略。因此,你應(yīng)該使用sudo來(lái)將審計(jì)運(yùn)行在特權(quán)模式之下。請(qǐng)使用如下命令來(lái)執(zhí)行你的第一次審計(jì):
$ sudo lynis audit system
驗(yàn)證完成之后,Lynis將運(yùn)行它的測(cè)試并將結(jié)果顯示在你的屏幕上。Lynis的一次審計(jì)通常只需要一分鐘或更短的時(shí)間。
在Lynis執(zhí)行審計(jì)的過(guò)程中,它會(huì)用到各種類(lèi)型的多種測(cè)試。在每次審計(jì)完成后,各種測(cè)試結(jié)果、調(diào)試信息、和對(duì)系統(tǒng)的加固建議都被寫(xiě)到標(biāo)準(zhǔn)的輸出中(即屏幕)。而更為詳細(xì)的信息則被記錄在/var/log/lynis.log里;同時(shí),報(bào)告數(shù)據(jù)被保存到/var/log/lynis-report.dat中。報(bào)告數(shù)據(jù)通常只包含有關(guān)服務(wù)器和應(yīng)用程序本身的信息,所以你只需要關(guān)注的是日志文件。每次審計(jì)都會(huì)清除(覆蓋)日志文件,因此先前的審計(jì)結(jié)果是不會(huì)被下一次所保留下來(lái)的。
審計(jì)完成后,你應(yīng)該對(duì)結(jié)果、警告和建議進(jìn)行復(fù)查,然后有選擇的采納實(shí)施相關(guān)建議。
讓我們來(lái)看看運(yùn)行在本教程中的設(shè)備上的一次Lynis審計(jì)結(jié)果。它也許和你自己的審計(jì)結(jié)果有所不同,但是你應(yīng)該能從中領(lǐng)會(huì)到一些重點(diǎn)。
Lynis審計(jì)輸出中的第一個(gè)重要部分是其純信息的部分。它會(huì)按類(lèi)別分組的形式告訴你每個(gè)測(cè)試的結(jié)果。分類(lèi)的關(guān)鍵字有NONE, WEAK, DONE, FOUND, NOT_FOUND, OK, 和 WARNING。
- Output
- [+] Boot and services
- ------------------------------------
- - Service Manager [ systemd ]
- - Checking UEFI boot [ DISABLED ]
- - Checking presence GRUB [ OK ]
- - Checking presence GRUB2 [ FOUND ]
- - Checking for password protection [ WARNING ]
- ..
- [+] File systems
- ------------------------------------
- - Checking mount points
- - Checking /home mount point [ SUGGESTION ]
- - Checking /tmp mount point [ SUGGESTION ]
- - Checking /var mount point [ OK ]
- - Query swap partitions (fstab) [ NONE ]
- - Testing swap partitions [ OK ]
- - Testing /proc mount (hidepid) [ SUGGESTION ]
- - Checking for old files in /tmp [ OK ]
- - Checking /tmp sticky bit [ OK ]
- - ACL support root file system [ ENABLED ]
- - Mount options of / [ OK ]
- - Checking Locate database [ FOUND ]
- - Disable kernel support of some filesystems
- - Discovered kernel modules: udf
- ...
- [+] Hardening
- ------------------------------------
- - Installed compiler(s) [ FOUND ]
- - Installed malware scanner [ NOT FOUND ]
- - Installed malware scanner [ NOT FOUND ]
- ...
- [+] Printers and Spools
- ------------------------------------
- - Checking cups daemon [ NOT FOUND ]
- - Checking lp daemon [ NOT RUNNING ]
雖然Lynis在“開(kāi)箱即用”的狀態(tài)下會(huì)執(zhí)行200多種測(cè)試,但不是所有的都對(duì)你的服務(wù)器是必要的。那么如何來(lái)判斷哪些測(cè)試是必要的,而哪些不是呢?這就依靠于服務(wù)器上到底運(yùn)行著什么服務(wù)了。舉個(gè)例子,如果你檢查一個(gè)典型的Lynis審計(jì)的結(jié)果部分,你會(huì)發(fā)現(xiàn)在Printers and Spools類(lèi)別下有兩個(gè)測(cè)試:
- Output
- [+] Printers and Spools
- ------------------------------------
- - Checking cups daemon [ NOT FOUND ]
- - Checking lp daemon [ NOT RUNNING ]
你真的在Ubuntu 16.04服務(wù)器上運(yùn)行著打印服務(wù)器嗎?除非你正在運(yùn)行一個(gè)基于云的打印服務(wù)器,不然你是沒(méi)有必要讓Lynis每次運(yùn)行該測(cè)試的。
雖然這是一個(gè)在測(cè)試中篩選忽略的完美例子,但其他的可能就沒(méi)那么顯而易見(jiàn)了。請(qǐng)看下面這個(gè)例子。例如:
- Output
- [+] Insecure services
- ------------------------------------
- - Checking inetd status [ NOT ACTIVE ]
該輸出指明它希望在Ubuntu 16.04服務(wù)器上使用到的inetd并未被激活。但實(shí)際上Ubuntu早已將systemd取代了inetd。知道了這個(gè),你就可以在對(duì)服務(wù)器進(jìn)行審計(jì)測(cè)試時(shí)標(biāo)記出來(lái),讓Lynis不去執(zhí)行。
隨著對(duì)每個(gè)測(cè)試結(jié)果的復(fù)查,你會(huì)在測(cè)試中圈出更多的多余項(xiàng)目。有了這樣的列表,你就可以定制出在未來(lái)的審計(jì)中有所忽略的Lynis了。你會(huì)在步驟5中了解到如何完成這些操作。
在下一節(jié)里,我們將瀏覽Lynis審計(jì)輸出的其他不同部分,這樣你會(huì)對(duì)如何正確運(yùn)用Lynis來(lái)審計(jì)你的系統(tǒng)有一個(gè)更好的理解。那么就讓我們來(lái)首先看看如何處理Lynis所發(fā)出的警告吧。
步驟3 修復(fù)Lynis的審計(jì)警告
Lynis的審計(jì)輸出并不總是帶有警告。但是當(dāng)你讀到有警告部分的時(shí)候,你就會(huì)需要知道如何解決這些引發(fā)警告的根源。
警告一般羅列在結(jié)果部分的后面。每個(gè)警告都以警告性文本本身開(kāi)始,并在同一行的括號(hào)中列出生成警告的測(cè)試項(xiàng)名稱。而下一行則包含一個(gè)可能的建議性解決方案。最后一行是一個(gè)安全控制的URL,你可能從那里發(fā)現(xiàn)一些有關(guān)該警告的指導(dǎo)說(shuō)明。不過(guò),URL并不總能提供解釋,因此你可能需要做一些進(jìn)一步的研究。
以下輸出源自在本文所涉及服務(wù)器上執(zhí)行過(guò)的一次Lynis審計(jì)的警告部分。讓我們?yōu)g覽一下每個(gè)警告,來(lái)看看如何對(duì)其進(jìn)行解決或改正:
- Output
- Warnings (3):
- ----------------------------
- ! Version of Lynis is very old and should be updated [LYNIS]
- https://cisofy.com/controls/LYNIS/
- ! Reboot of system is most likely needed [KRNL-5830]
- - Solution : reboot
- https://cisofy.com/controls/KRNL-5830/
- ! Found one or more vulnerable packages. [PKGS-7392]
- https://cisofy.com/controls/PKGS-7392/
第一個(gè)警告是說(shuō)Lynis需要被更新。這也意味著根據(jù)該審計(jì)所使用的Lynis版本,其結(jié)果可能并不完整。正如步驟2所示,如果我們事先執(zhí)行了基本的版本檢查,那么這是完全可以避免的。可見(jiàn),此修復(fù)非常容易,就是更新Lynis。
第二個(gè)警告表明服務(wù)器需要被重啟。這可能是因?yàn)橄到y(tǒng)最近的更新里包含了內(nèi)核的升級(jí)。這里的解決方案也就是直接重啟系統(tǒng)。
在深究任何警告或是測(cè)試結(jié)果時(shí),你可以通過(guò)查詢Lynis的ID來(lái)得到更多的關(guān)于測(cè)試的信息。其對(duì)應(yīng)的命令形式為:
- $ sudo lynis show details test-id
因此對(duì)于第二個(gè)ID為KRNL-5830的警告,我們可以運(yùn)行這樣的命令:
- $ sudo lynis show details KRNL-5830
如下是具體測(cè)試的輸出,它能讓你對(duì)Lynis的每個(gè)測(cè)試的執(zhí)行過(guò)程有所認(rèn)識(shí)。在此輸出中,Lynis甚至為其警告項(xiàng)給出了一些具體的信息:
- Output
- 2017-03-21 01:50:03 Performing test ID KRNL-5830 (Checking if system is running on the latest installed kernel)
- 2017-03-21 01:50:04 Test: Checking presence /var/run/reboot-required.pkgs
- 2017-03-21 01:50:04 Result: file /var/run/reboot-required.pkgs exists
- 2017-03-21 01:50:04 Result: reboot is needed, related to 5 packages
- 2017-03-21 01:50:04 Package: 5
- 2017-03-21 01:50:04 Result: /boot exists, performing more tests from here
- 2017-03-21 01:50:04 Result: /boot/vmlinuz not on disk, trying to find /boot/vmlinuz*
- 2017-03-21 01:50:04 Result: using 4.4.0.64 as my kernel version (stripped)
- 2017-03-21 01:50:04 Result: found /boot/vmlinuz-4.4.0-64-generic
- 2017-03-21 01:50:04 Result: found /boot/vmlinuz-4.4.0-65-generic
- 2017-03-21 01:50:04 Result: found /boot/vmlinuz-4.4.0-66-generic
- 2017-03-21 01:50:04 Action: checking relevant kernels
- 2017-03-21 01:50:04 Output: 4.4.0.64 4.4.0.65 4.4.0.66
- 2017-03-21 01:50:04 Result: Found 4.4.0.64 (= our kernel)
- 2017-03-21 01:50:04 Result: found a kernel (4.4.0.65) later than running one (4.4.0.64)
- 2017-03-21 01:50:04 Result: Found 4.4.0.65
- 2017-03-21 01:50:04 Result: found a kernel (4.4.0.66) later than running one (4.4.0.64)
- 2017-03-21 01:50:04 Result: Found 4.4.0.66
- 2017-03-21 01:50:04 Warning: Reboot of system is most likely needed [test:KRNL-5830] [details:] [solution:text:reboot]
- 2017-03-21 01:50:04 Hardening: assigned partial number of hardening points (0 of 5). Currently having 7 points (out of 14)
- 2017-03-21 01:50:04 Checking permissions of /usr/share/lynis/include/tests_memory_processes
- 2017-03-21 01:50:04 File permissions are OK
- 2017-03-21 01:50:04 ===---------------------------------------------------------------===
第三個(gè)警告PKGS-7392是關(guān)于軟件漏洞包的,我們可以運(yùn)行如下命令:
- $ sudo lynis show details PKGS-7392
其輸出為我們提供了有關(guān)需要升級(jí)的軟件包的更多信息:
- Output
- 2017-03-21 01:39:53 Performing test ID PKGS-7392 (Check for Debian/Ubuntu security updates)
- 2017-03-21 01:39:53 Action: updating repository with apt-get
- 2017-03-21 01:40:03 Result: apt-get finished
- 2017-03-21 01:40:03 Test: Checking if /usr/lib/update-notifier/apt-check exists
- 2017-03-21 01:40:03 Result: found /usr/lib/update-notifier/apt-check
- 2017-03-21 01:40:03 Test: checking if any of the updates contain security updates
- 2017-03-21 01:40:04 Result: found 7 security updates via apt-check
- 2017-03-21 01:40:04 Hardening: assigned partial number of hardening points (0 of 25). Currently having 96 points (out of 149)
- 2017-03-21 01:40:05 Result: found vulnerable package(s) via apt-get (-security channel)
- 2017-03-21 01:40:05 Found vulnerable package: libc-bin
- 2017-03-21 01:40:05 Found vulnerable package: libc-dev-bin
- 2017-03-21 01:40:05 Found vulnerable package: libc6
- 2017-03-21 01:40:05 Found vulnerable package: libc6-dev
- 2017-03-21 01:40:05 Found vulnerable package: libfreetype6
- 2017-03-21 01:40:05 Found vulnerable package: locales
- 2017-03-21 01:40:05 Found vulnerable package: multiarch-support
- 2017-03-21 01:40:05 Warning: Found one or more vulnerable packages. [test:PKGS-7392] [details:-] [solution:-]
- 2017-03-21 01:40:05 Suggestion: Update your system with apt-get update, apt-get upgrade, apt-get dist-upgrade and/or unattended-upgrades [test:PKGS-7392] [details:-] [solution:-]
- 2017-03-21 01:40:05 ===---------------------------------------------------------------===
對(duì)此警告的解決方案就是更新數(shù)據(jù)庫(kù)和系統(tǒng)。
在修復(fù)了此項(xiàng)警告之后,你應(yīng)該再次運(yùn)行審計(jì)。后續(xù)的審計(jì)就不會(huì)再對(duì)此產(chǎn)生警告了,當(dāng)然新的警告也可能會(huì)出現(xiàn)在他處。因此你不得不重復(fù)進(jìn)行此步驟以解決所有的警告。
至此,你已經(jīng)知道了如何讀懂并修復(fù)Lynis所生成的警告,讓我們來(lái)看看如何去實(shí)施那些Lynis所提供的建議吧。
步驟4 實(shí)現(xiàn)Lynis的審計(jì)建議
在警告部分的后面,你將會(huì)看到一系列的建議,如果實(shí)施它們,則會(huì)讓你的服務(wù)器少受到惡意軟件的攻擊。在這個(gè)步驟中,Lynis在審計(jì)完成之后,對(duì)裝有Ubuntu 16.04系統(tǒng)的服務(wù)器產(chǎn)生了一些建議,你將了解到如何去實(shí)施它們。此過(guò)程與前面一節(jié)中的步驟基本一致。
一條具體建議是由其建議本身和緊隨其后的測(cè)試ID所組成。根據(jù)測(cè)試,其下一行會(huì)告訴你如何修改影響服務(wù)的配置文件。而最后一行是一個(gè)安全控制的URL,你可以通過(guò)它找到更多關(guān)于此主題的信息。
下面的例子是一個(gè)源自Lynis審計(jì)的建議部分,它顯示了與SSH服務(wù)相關(guān)的建議:
- Output
- Suggestions (36):
- ----------------------------
- * Consider hardening SSH configuration [SSH-7408]
- - Details : ClientAliveCountMax (3 --> 2)
- https://cisofy.com/controls/SSH-7408/
- * Consider hardening SSH configuration [SSH-7408]
- - Details : PermitRootLogin (YES --> NO)
- https://cisofy.com/controls/SSH-7408/
- * Consider hardening SSH configuration [SSH-7408]
- - Details : Port (22 --> )
- https://cisofy.com/controls/SSH-7408/
- * Consider hardening SSH configuration [SSH-7408]
- - Details : TCPKeepAlive (YES --> NO)
- https://cisofy.com/controls/SSH-7408/
- * Consider hardening SSH configuration [SSH-7408]
- - Details : UsePrivilegeSeparation (YES --> SANDBOX)
- https://cisofy.com/controls/SSH-7408/
- ...
根據(jù)你的運(yùn)行環(huán)境,實(shí)施所有這些建議都是比較安全可靠的。但是,為了能做出決斷,你必須知道每一個(gè)建議的具體意思。因?yàn)檫@些都隸屬于SSH服務(wù)器,因此所有的更改必須體現(xiàn)在SSH守護(hù)進(jìn)程的配置文件/etc/SSH/sshd_config中。如果你對(duì)Lynis給出的關(guān)于SSH的建議有任何疑問(wèn),請(qǐng)用man sshd_config指令來(lái)查看。當(dāng)然這些信息在網(wǎng)上可以找到。
其中的一條建議是要求更改SSH的默認(rèn)22號(hào)端口。如果你要更改它,請(qǐng)相應(yīng)地在防火墻上添加一條規(guī)則,讓對(duì)于SSH的訪問(wèn)能從新的端口上通過(guò)。
和警告部分一樣,你可以使用sudo lynis show details test-id來(lái)查詢Lynis的測(cè)試ID,以獲得更多有關(guān)建議的詳細(xì)信息。
其他的建議則是要求你在服務(wù)器上安裝額外的軟件。如下例所示:
- Output
- * Harden the system by installing at least one malware scanner, to perform periodic file system scans [HRDN-7230]
- - Solution : Install a tool like rkhunter, chkrootkit, OSSEC
- https://cisofy.com/controls/HRDN-7230/
該建議是安裝rkhunter、chkrootkit或OSSEC來(lái)滿足加固測(cè)試(HRDN-7230)的要求。OSSEC是一個(gè)基于主機(jī)的入侵檢測(cè)系統(tǒng),它可以生成并發(fā)送警告。這是一個(gè)能夠協(xié)助Lynis執(zhí)行測(cè)試的一個(gè)很好的安全應(yīng)用程序。關(guān)于此工具,你可以通過(guò)DigitalOcean的各個(gè)教程(https://www.digitalocean.com/community/tutorials?q=ossec)來(lái)進(jìn)行更多的了解。但是,僅僅安裝OSSEC并不能順利地通過(guò)此測(cè)試,你還需要安裝chkrootkit。這就是為什么有時(shí)候除了Lynis所給出的建議,你還要做更多的研究的原因。
讓我們來(lái)看另一個(gè)例子。這是一個(gè)在文件完整性測(cè)試后顯示的一個(gè)結(jié)果建議。
- Output
- * Install a file integrity tool to monitor changes to critical and sensitive files [FINT-4350]
- https://cisofy.com/controls/FINT-4350/
該安全控制的URL所給出的建議并沒(méi)有提到我們前面的那個(gè)OSSEC程序,但是如果安裝它,則會(huì)保證我們能通過(guò)后續(xù)的審計(jì)測(cè)試。這就是為什么OSSEC是一個(gè)很好的文件完整性監(jiān)控工具的原因。
你也可以忽略一些并不適合你的建議。這里同樣也有一個(gè)例子:
- Output
- * To decrease the impact of a full /home file system, place /home on a separated partition [FILE-6310]
- https://cisofy.com/controls/FILE-6310/
- * To decrease the impact of a full /tmp file system, place /tmp on a separated partition [FILE-6310]
- https://cisofy.com/controls/FILE-6310/
傳統(tǒng)上,核心Linux文件系統(tǒng),如/home、/tmp、/var和/usr常被掛載到一個(gè)單獨(dú)的分區(qū)里,以減少在整個(gè)服務(wù)器耗盡其磁盤(pán)空間時(shí)的影響。但是,這種耗盡的情況其實(shí)并不被經(jīng)常看到,尤其是在那些云服務(wù)器上。這些文件系統(tǒng)如今只是作為一個(gè)目錄被掛載到同一根分區(qū)里。但是如果你對(duì)這樣的系統(tǒng)執(zhí)行Lynis審計(jì)的話,你會(huì)得到一些類(lèi)似于前面所提及的建議輸出。除非你的確想實(shí)施該建議,否則你很可能想通過(guò)配置Lynis來(lái)忽略它們,使它們將來(lái)不再執(zhí)行此類(lèi)審計(jì)。
使用Lynis來(lái)執(zhí)行安全審計(jì)不僅僅涉及到修復(fù)警告和實(shí)施建議,它還包括識(shí)別出多余的測(cè)試。在接下來(lái)的步驟中,你將學(xué)習(xí)到如何定制缺省的概要文件來(lái)忽略此類(lèi)測(cè)試。
步驟5 定制Lynis安全審計(jì)
在本節(jié)中,你將了解到如何定制Lynis,使之只運(yùn)行那些對(duì)你的服務(wù)器必要的測(cè)試。用于控制審計(jì)如何運(yùn)行的概要文件,在/etc/lynis目錄中常被擴(kuò)展名為.prf的各種文件所定義。其中默認(rèn)的概要文件被恰當(dāng)?shù)孛麨閐efault.prf。你沒(méi)有必要直接編輯該默認(rèn)的概要文件。相反,你可以添加任何你想要的信息到相同目錄的custom.prf之中,作為概要文件的定義。
你可以使用文本編輯器來(lái)創(chuàng)建一個(gè)新的名為/etc/lynis/custom.prf的文件:
- $ sudo nano /etc/lynis/custom.prf
讓我們通過(guò)該文件來(lái)告訴Lynis需要忽略的一些測(cè)試吧。下面就是我們想忽略的測(cè)試項(xiàng)目:
· FILE-6310:用來(lái)檢查分區(qū)的間隔。
·HTTP-6622:用來(lái)測(cè)試web服務(wù)器上Nginx的安裝。
·HTTP-6702:用來(lái)檢查web服務(wù)器上Apache的安裝。該測(cè)試和上述Nginx測(cè)試一樣都是默認(rèn)執(zhí)行的。因此,如果你只安裝了Nginx和而非Apache的話,你就需要跳過(guò)Apache的測(cè)試。
·PRNT-2307和PRNT-2308:用來(lái)檢查打印服務(wù)器。
·TOOL-5002:用來(lái)檢查諸如Puppet和Salt這樣的自動(dòng)化工具。如果你在服務(wù)器上沒(méi)有此類(lèi)工具的話,那么你完全可以跳過(guò)對(duì)此的測(cè)試。
·SSH-7408:tcpkeepalive:幾個(gè)Lynis的測(cè)試可以被組合到一個(gè)測(cè)試ID之下。如果你想忽略屬于某個(gè)ID的測(cè)試,下面便是如何設(shè)定的方法。
要想忽略某個(gè)測(cè)試,你可以通過(guò)skip-test指令來(lái)傳遞你想要忽略的測(cè)試ID,每行一個(gè)。將下面的代碼添加到你的文件之中:
- /etc/lynis/custom.prf
- # Lines starting with "#" are comments
- # Skip a test (one per line)
- # This will ignore separation of partitions test
- skip-test=FILE-6310
- # Is Nginx installed?
- skip-test=HTTP-6622
- # Is Apache installed?
- skip-test=HTTP-6702
- # Skip checking print-related services
- skip-test=PRNT-2307
- skip-test=PRNT-2308
- # If a test id includes more than one test use this form to ignore a particular test
- skip-test=SSH-7408:tcpkeepalive
保存并關(guān)閉該文件。
當(dāng)你下一次執(zhí)行審計(jì)時(shí),Lynis將忽略那些匹配上了你在定制概要文件中配置好的測(cè)試ID。而其審計(jì)輸出也會(huì)省略掉相應(yīng)的測(cè)試結(jié)果部分和建議部分。
/etc/lynis/custom.prf文件允許你修改概要文件中的任何設(shè)置。要做到這一點(diǎn),你可以將/etc/lynis/default.prf復(fù)制為/etc/lynis/custom.prf,并修改之。你只需要修改這些設(shè)置就行了,因此你可以集中更多的精力在尋找測(cè)試中可以忽略的地方。
接下來(lái),讓我們來(lái)看看什么是Lynis里所謂的加固指數(shù)。
步驟6 解析加固指數(shù)
在每個(gè)Lynis審計(jì)輸出的底部,也就是建議部分的下面,你會(huì)發(fā)現(xiàn)一個(gè)看起來(lái)像下面輸出文字的部分:
- Output
- Lynis security scan details:
- Hardening index : 64 [############ ]
- Tests performed : 206
- Plugins enabled : 0
這個(gè)輸出會(huì)告訴你它進(jìn)行了多少種測(cè)試,并且配有一個(gè)加固指數(shù),Lynis提供該數(shù)值讓你對(duì)服務(wù)器的安全態(tài)勢(shì)有所了解。該數(shù)值為L(zhǎng)ynis所獨(dú)有。該加固指數(shù)將會(huì)隨著你針對(duì)警告修復(fù)和針對(duì)建議的實(shí)施而作出相應(yīng)的調(diào)整。通過(guò)Lynis對(duì)新的Ubuntu 16.04服務(wù)器所做的初次審計(jì),得出了上述該輸出,它表明本系統(tǒng)具有64的加固指數(shù)。
在修復(fù)了警告并實(shí)施了大部分的建議之后, 審計(jì)給出了如下新的輸出。你可以看到加固指數(shù)略微升高了:
- Output
- Lynis security scan details:
- Hardening index : 86 [################# ]
- Tests performed : 205
- Plugins enabled : 0
加固指數(shù)并非是對(duì)服務(wù)器安全程度的一個(gè)準(zhǔn)確評(píng)估,而只是一個(gè)基于Lynis所執(zhí)行的測(cè)試后服務(wù)器在安全配置(或加固)方面的衡量。正如你所看到的,該指數(shù)為越高越好。Lynis安全審計(jì)的目的不僅僅是為了獲得高的加固指數(shù),更是為了修復(fù)各種它所產(chǎn)生的警告和建議。
結(jié)論
在本教程中,你已安裝了Lynis,用它對(duì)Ubuntu 16.04服務(wù)器執(zhí)行了安全審計(jì),探究了如何修復(fù)它生成的警告和建議,以及如何定制Lynis所執(zhí)行的各種測(cè)試。
這雖然需要花費(fèi)一些額外的時(shí)間和精力,但是為了讓你的機(jī)器更加安全,和使得Lynis的審計(jì)過(guò)程更加順利,這是完全值得投入的。
關(guān)于Lynis的更多信息,請(qǐng)參考《開(kāi)始使用Lynis》這個(gè)官方文檔。Lynis是一個(gè)開(kāi)源的項(xiàng)目,因此如果你樂(lè)于奉獻(xiàn)的話,請(qǐng)?jiān)L問(wèn)該項(xiàng)目的GitHub頁(yè)面。
原文標(biāo)題:How to Perform Security Audits With Lynis on Ubuntu 16.04,作者:Imesh Gunaratne
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】