實戰|等保2.0 Linux主機測評過程
以下結果以CentOS 7 為例,按照等保2.0標準,2021報告模板,三級系統要求進行測評。
一、身份鑒別
a)應對登錄的用戶進行身份標識和鑒別,身份標識具有唯一性,身份鑒別信息具有復雜度要求并定期更換。
輸入 more /etc/shadow,得知系統所有用戶,此語句字段格式有九段。
第一字段:用戶名(也被稱為登錄名),在/etc/shadow中,用戶名和/etc/passwd 是相同的,這樣就把passwd 和shadow中用的用戶記錄聯系在一起;這個字段是非空的;
第二字段:密碼(已被加密,所以看到是一堆亂碼,CentOS7以上都是采取的SHA256加密算法進行加密),如果是有些用戶在這段是x,*,!!,表示這個用戶不能登錄到系統或者是沒用密碼不能登錄;這個字段是非空的;
第三字段:上次修改口令的時間;這個時間是從UNIX的誕生日1970年01月01日算起到最近一次修改口令的時間間隔(天數),你可以通過passwd 來修改用戶的密碼,然后查看/etc/shadow中此字段的變化;
第四字段:兩次修改口令間隔最少的天數;如果設置為0,則禁用此功能;也就是說用戶必須經過多少天才能修改其口令;默認值是通過/etc/login.defs文件定義中獲取,PASS_MIN_DAYS 中有定義;
第五字段:兩次修改口令間隔最多的天數;這個能增強管理員管理用戶口令的時效性,應該說在增強了系統的安全性;如果是系統默認值,是在添加用戶時由/etc/login.defs文件定義中獲取,在PASS_MAX_DAYS 中定義;
第六字段:提前多少天警告用戶口令將過期;當用戶登錄系統后,系統登錄程序提醒用戶口令將要作廢;如果是系統默認值,是在添加用戶時由/etc/login.defs文件定義中獲取,在PASS_WARN_AGE 中定義;
第七字段:在口令過期之后多少天禁用此用戶;此字段表示用戶口令作廢多少天后,系統會禁用此用戶,也就是說系統會不能再讓此用戶登錄,也不會提示用戶過期,是完全禁用;
第八字段:用戶過期日期;此字段指定了用戶作廢的天數(從1970年的1月1日開始的天數),如果這個字段的值為空,帳號永久可用;
第九字段:保留字段,目前為空,以備將來Linux發展之用;

上圖這個例子是CentOS默認的,只有一個root用戶需要密碼登錄,其他都是系統默認用戶,基本使用不了。
輸入命令查看密碼長度和定期更換設置:more /etc/login.defs

得知最長密碼使用時間為99999天;最短使用時間為0,代表為設置,就是想換就換;最短密碼長度為5天;登錄密碼過期提前7天提示修改。
查看密碼復雜度配置:more /etc/pam.d/system-auth 默認未配置。

b)應具有登錄失敗處理功能,應配置并啟用結束會話、限制非法登錄次數和當登錄連接超時自動退出等相關措施。
輸入more /etc/pam.d/system-auth ,查看是否存在如下語句

onerr=fail 表示定義了當出現錯誤時的缺省返回值; even_deny_root 表示也限制root用戶; deny 表示設置普通用戶和root用戶連續錯誤登陸的最大次數,超過最大次數,則鎖定該用戶; unlock_time 表示設定普通用戶鎖定后,多少時間后解鎖,單位是秒; root_unlock_time 表示設定root用戶鎖定后,多少時間后解鎖,單位是秒;
默認未開啟。
輸入以下命令檢查超時自動退出功能:more /etc/profile
查看是否存在timeout 語句。

c)當進行遠程管理時,應采取必要措施防止鑒別信息在網絡傳輸過程中被竊聽;
若操作系統只在本地管理或通過KVM等硬件方式管理則該項符合。在遠程管理時如通過堡壘機采用SSH、HTTPS協議進行遠程管理則滿足本測評項要求。檢查系統自身的網絡登錄方式,是否使用了安全的SSH協議,禁用了明文傳輸的Telnet協議:
1)查看SSH服務是否開啟;登錄時也能看出,一般默認開啟。
ps -e | grep sshd

2)查看telnet是否開啟,默認未開啟:
systemctl status telnet.socket

d) 應采用口令、密碼技術、生物技術等兩種或兩種以上組合的鑒別技術對用戶進行身份鑒別,且其中一種鑒別技術至少應使用密碼技術來實現。
Linux操作系統目前僅有“用戶名+口令”一種鑒別方式,一般是不符合的,目前常見的有通過數字證書Ukey來實現雙因子認證。或借助于堡壘機來進行多重認證,降低安全風險。
二、訪問控制
a) 應對登錄的用戶分配賬戶和權限;
檢查重要文件和目錄權限設置是否合理,Linux系統對文件的操作權限包括四種:讀(r,4);寫(w,2);執行(x,1);空(-,0),文件的權限分為屬主(擁有者)、屬組、其它用戶和用戶組的權限。配置文件權限值不能大于644,對于可執行文件不能大于755。
ls -l 重要文件名如/etc/passwd

b) 應重命名或刪除默認賬戶,修改默認賬戶的默認口令;
輸入 more /etc/shadow 得知用戶表,見身份鑒別的a項,查看是否有默認賬戶且還在使用,centos默認可用賬戶只有root,其他賬戶雖不會被使用,但是應禁用和刪除。一般默認存在很多無用賬戶。
root作為Linux系統的重要默認用戶,一般要求禁止遠程登錄,檢查命令如下:
more /etc/ssh/sshd_config

默認為允許,不符合。
c) 應及時刪除或停用多余的、過期的賬戶,避免共享賬戶的存在;
根據上一項的檢查結果,并與配合人員訪談各在用賬戶的使用情況。默認賬戶games、news、 ftp、 1p等應被被禁用,特權賬號halt、shutdown應被刪除。默認符合。
d) 應授予管理用戶所需的最小權限,實現管理用戶的權限分離;
在實際生產中,Linux系統很難完全滿足該項要求,因為超級管理員用戶root一旦被禁用會影響系統和應用的正常使用。但仍應嚴格限制具有root級權限的賬戶,其他用戶僅應通過使用sudo被賦予root級權限。通過以下命令核查root級權限都授予哪些賬戶。管理員權限僅分配給root用戶。
命令:
more /etc/sudo.conf
此項默認符合。
e) 應由授權主體配置訪問控制策略,訪問控制策略規定主體對客體的訪問規則;
對于Linux主機,是由系統管理員通過root賬戶為其它賬戶分配權限,所以該項主要檢查權限分配是否合理,訪問控制策略配置是否符合安全要求。 此項默認符合。
f) 訪問控制的粒度應達到主體為用戶級或進程級,客體為文件、數據庫表級;
Linux系統已經對一些默認賬戶和系統文件分配了不同的權限,也就是說主體已經達到了用戶級,客體已經達到了文件級,該項主要檢查新建用戶和文件是否存在權限過大、權限濫用的情況。
Linux操作系統默認關閉SELinux服務,開啟后會影響系統和業務應用的正常使用。也可通過對操作系統內核進行二次開發或使用加固軟件來實現強制訪問控制。
more /etc/selinux/config

三、安全審計
a) 應啟用安全審計功能,審計覆蓋到每個用戶,對重要的用戶行為和重要安全事件進行審計;
查看審計服務狀態看到審計服務默認已開啟:
service auditd status 或者 service rsyslog status
auditd進程主要記錄安全信息及對系統安全事件進行追溯,rsyslog進程用于記錄系統中的各種信息(例如硬件報警信息和軟件日志。Linux 在安全審計配置文件 /etc/audit/audit.rules中配置安全時間審計規則)

b) 審計記錄應包括事件的日期和時間、用戶、事件類型、事件是否成功及其他與審計相關的信息;
輸入以下命令查看日志信息是否足夠詳細:
tail -20 /var/log/audit/audit.log
默認符合。

c) 應對審計記錄進行保護,定期備份,避免受到未預期的刪除、修改或覆蓋等;
檢查審計記錄保存的目錄,驗證是否能被普通用戶輕易刪除,訪談管理員對審計記錄的保護措施和備份策略,是否使用syslog或snmp方式將操作系統日志發送到日志服務器,檢查審計記錄是否備份不少于六個月。
d) 應對審計進程進行保護,防止未經授權的中斷。
測試使用非審計管理員中斷審計進程,是否能成功,詢問和檢查是否安裝第三方審計進程保護軟件。
四、入侵防范
a) 應遵循最小安裝的原則,僅安裝需要的組件和應用程序;
查看系統當前版本,是否及時安裝安全補丁:
uname -a

查看操作系統中已安裝的程序包,檢查是否有目前不需要的組件和應用程序:
yum list installed
b) 應關閉不需要的系統服務、默認共享和高危端口;
輸入以下命令檢查系統當前運行的服務:
systemctl list-unit-files | grep enable

具體那些服務是多余服務我沒有定論現在,大家幫忙補充。
輸入以下命令檢查系統當前開啟的端口:
netstat -ntlp
Linux系統自身不存在默認共享,創建共享文件夾需安裝samba,輸入以下命令檢查是否已經安裝samba:
rpm -qi samba

如果安裝了samba可能存在默認共享,如果未安裝就無默認共享。
c) 應通過設定終端接入方式或網絡地址范圍對通過網絡進行管理的管理終端進行限制;
Linux系統中/etc/hosts.allow控制可以訪問本機的IP地址,/ete/hosts.deny控制禁止訪問本機的IP。實際測評中基本都像下圖未在此處進行配置,多在防火墻或堡壘機上進行限制。
more /etc/hosts.allow
more /etc/hosts.deny

默認未設置。
d) 應提供數據有效性檢驗功能,保證通過人機接口輸入或通過通信接口輸入的內容符合系統設定要求;
此項主要針對應用系統和部分數據庫和一些管理軟件,主機不涉及人機接口輸入或通信接口輸入控制,該項不適用。
e) 應能發現可能存在的已知漏洞,并在經過充分測試評估后,及時修補漏洞;
該項需結合漏掃,是否定期進行漏掃,具有漏掃報告、初測是否發現高風險漏洞,復測后高風險漏洞是否被修補。輸入以下命令查看補丁更新情況,是否及時安裝最新補丁:
rpm -qa grep patch

f) 應能夠檢測到對重要節點進行入侵的行為,并在發生嚴重入侵事件時提供報警。
檢查操作系統是否安裝入侵檢測軟件,如Dragon
Squire by Enterasys Networks/主機IPS/IDS 等。網絡中部署的入侵防范設備也可以,可以執行 find
/-name -print 核查是否安裝了主機入侵檢測軟件。
五、惡意代碼防范
應采用免受惡意代碼攻擊的技術措施或主動免疫可信驗證機制及時識別入侵和病毒行為,并將其有效阻斷。
市面上針對Linux操作系統的殺毒軟件較少,實際測評過程中基本未遇到安裝殺毒軟件的Linux主機,不過由于Linux系統自身安全性較高,該項不符合也不判定為高風險問題。默認給不符合,然后做補償降低風險。
六、可信驗證
可基于可信根對計算設備的系統引導程序、 系統程序、重要配置參數和應用程序等進行可信驗證,并在應用程序的關鍵執行環節進行動態可信驗證,在檢測到其可信性受到破壞后進行報警,并將驗證結果形成審計記錄送至安全管理中心。
該項目前尚未遇到符合的情況,但是最新的windows主機已經開始使用tpm可信根了,未來應該會越來越多,對該項的要求是可,不符合只算低風險項。
七、數據備份恢復
訪談管理員Linux系統的審計日志如何備份的,是否有熱備或集群。
統一在審計數據里面體現吧。
八、剩余信息保護
a) 應保證鑒別信息所在的存儲空間被釋放或重新分配前得到完全清除;
CentOS系統該項默認符合。
b) 應保證存有敏感數據的存儲空間被釋放或重新分配前得到完全清除。
CentOS系統該項默認符合。