一、身份鑒別
a)應對登錄的用戶進行身份標識和鑒別,身份標識具有唯一性,身份鑒別信息具有復雜度要求並定期更換;
1、應核查用戶在登陸時是否采用了身份鑒別措施;
用戶登錄服務器需要使用賬戶+賬戶口令。
2、應核查用戶列表確認用戶身份標識是否具有唯一性;
(more /etc/passwd)
//查看命令結果,第三字段不存在相同數字、用戶名不存在相同名稱。
3、應核查用戶配置信息或測試驗證是否不存在空口令用戶;
(more /etc/shadow)
//查看命令結果,紅框內的亂碼表示加密以后的賬戶口令
//紅色框內的(!*)號代表該賬戶已鎖定、或者禁用。
4、應核查用戶鑒別信息是否具有復雜度要求並定期更換。
(more /etc/login.defs)
// 查看命令結果是否有設置密碼長度,復雜度。
1)PASS_MAX_DAYS=90(密碼登錄有效期時間)
2)PASS_MIN_DAYS=0(密碼最短修改時間)
3)PASS_MIN_LEN=8(密碼最小長度)
4)PASS_WARN_AGE=7(密碼過期前提前多少天提醒)
4.1、服務器密碼復雜的策略
(more/etc/pam.d/system-auth)
//password requisite 里面設置密碼相關的策略(pam _cracklib.so策略里)
retry=5(嘗試登錄次數)
authtok_type= difok=3(新密碼與舊密碼有多少位能一樣)
minlen=7(密碼長度)
ucreddir=-1 (最少包含一個大寫字母)
lcredit=-3 (最少有三個小寫字母)
dcredit=-3 (最少有三個數字)
b) 應具有登錄失敗處理功能,應配置並啟用結束會話、限制非法登錄次數和當登錄連接超時自動退出等相關措施;
1、應核查是否配置並啟用了登錄失敗處理功能;
2、應核查是否配置並啟用了限制非法登錄功能,非法登錄達到一定次數后采取特定動作,如賬號鎖定等;
本地登錄的失敗處理:
(more /etc/pam.d/system-auth)
(more /etc/pam.d/login)
使用SSH遠程登錄的失敗處理:
(more /etc/pam.d/sshd)
//文件中包含auth required pam_tally2.so onerr=fail deny=5 unlock_time=300 even_d
eny_root root_unlock_time=10
deny嘗試登錄次數
time鎖定時間(秒)
even_deny root (鎖定root賬戶)
2.1本地登錄(system-auth文件)
2.2本地登錄(login文件)
2.3遠程SSH文件(sshd文件)
3、應核查是否配置並啟用了登錄連續超時及自動退出功能。
(more /etc/profile)
//文件中包含了(TMOUT=300)
c) 當進行遠程管理時,應采取必要措施防止鑒別信息在網絡傳輸過程中被竊聽;
1、是否運行SSHD服務。
1、是否運行SSHD服務
(systemctl status sshd.service)
或者
(service --status-all |grep sshd)
//檢查命令結果顯示為:
sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)
Active: active (running) since 三 2021-07-14 15:56:20 CST; 43min ago
Main PID: 1414 (sshd)
//running 綠色表示正在運行
2、是否打開SSHD服務對應端口22端口
(netstat -an |grep 22)
//查看22端口是否正在被SSHD監聽
3、是否打開了Telnet服務
(systemctl list-unit-files |grep telnet)
//查看命令結果是否存在telen服務(應為不存在)
4、是否打開了Telnet服務的對應端口23端口
(netstat -an |grep 23)
//查看23端口是否正在被Telnet監聽(應為不存在)
d) 應采用口令、密碼技術、生物技術等兩種或兩種以上組合的鑒別技術對用戶進行身份鑒別, 且其中一種鑒別技術至少應使用密碼技術來實現。
1、應核查是否采用動態口令、數字證書、生物技術和設備指紋等兩種或兩種以上組合的鑒別技術對用戶身份進行鑒別。
2、應核查其中一種鑒別技術是否使用密碼技術來實現。
//詢問管理員,除了輸入密碼登錄還有什么方式能夠進行身份鑒別,這個方法有沒有采用密碼技術。
二、訪問控制
a) 應對登錄的用戶分配賬戶和權限;
1、應核查是否為用戶分配了賬戶和權限及相關設置情況;
(umask)
//查看服務器的umask=0027
2、應核查是否已禁用或限制匿名、默認賬戶的訪問權限;
(more /etc/shadow)
//查看命令返回結果 第二字段為(!*)表示該賬戶已鎖定
//uucp、nuucp、lp、adm、shutdown均為默認賬戶
3、查看文件的權限合理性;
(ls -l /etc/passwd)
(ls -l /etc/shadow)
(ls -l /etc/profile)
(ls -l /etc/inet.conf)
(ls -l /etc/rc3.d)
//(開頭D為目錄、L為鏈接、B設備文件)
//配置文件不大於644、可執行文件不大於755(r讀、w寫、x執行)
b) 應重命名或刪除默認賬戶,修改默認賬戶的默認口令;
1、應核查是否已經重命名默認賬戶或默認賬戶已被刪除;
(more /etc/shadow)
//查看命令結果,是否存在adm、lp、sync、shutdown、halt、mail、uucp、
operator、games、gopher、ftp等默認無用賬戶。
//默認情況下一般都沒更改
2、應核查是否已修改默認賬戶的默認口令;
//詢問管理員是否重命名默認賬戶與更改默認口令。
3、查看root賬戶能否遠程登錄;
(/etc/ssh/sshd_config)
//查看命令結果,應該為 PermitRootLogin NO(命令前面不能帶#號,否則就算是有也是無效,#代表注釋改行。)
c) 應及時刪除或停用多余的、過期的賬戶,避免共享賬戶的存在;
1、應核查是否不存在多余或過期賬戶,管理員用戶與賬戶之間是否一一對應;
//詢問管理員,是否每個賬號對應到個人
(more /etc/shadow)
//禁用或刪除不需要的系統默認賬戶,如games,news,ftp,lp,halt
,shutdown等
//特權賬戶halt、shutdown是否已被刪除
2、應測試驗證多余的、過期的賬戶是否被刪除或停用;
(more /etc/shadow)
//過期的賬戶,特權用戶halt.shutdown已刪除。
3、避免賬戶共用現象存在;
//詢問管理員,是否一人一號登錄系統
d) 應授予管理用戶所需的最小權限,實現管理用戶的權限分離;
1、應核查是否進行角色划分;
//詢問管理員是否建立了,系統管理員、安全管理員、審計管理員賬戶
2、應核查管理用戶的權限是否已進行分離;
(more /etc/passwd)
//第一個段用戶名
第二個段密碼標志
第三個字段用戶ID(0代表超級用戶)
第四個字段用戶組ID
第五個字段用戶字端說明
第六個字段用戶家目錄
第七個字段用戶的命令解釋器
查看是否有除root賬戶外的第三個字段是0的
3、應核查管理用戶權限是否為其工作任務所需的最小權限。
(more /etc/sudoers)
//Allow root to run any commands anywhere
root ALL=(ALL) ALL
系統管理員權限只分配了root用戶
e) 應由授權主體配置訪問控制策略,訪問控制策略規定主體對客體的訪問規則;
1、應核查是否由授權主體(如管理用戶)負責配置訪問控制策略;
// 詢問系統管理員, 核查是否由指定授權人對操作系統的訪問控制權限進行配置。
2、應核查授權主體是否依據安全策略配置了主體對客體的訪問規則;
// 核查賬戶權限配置, 了解是否依據安全策略配置各賬戶的訪問規則
3、應測試驗證用戶是否有可越權訪問情形。
f) 訪問控制的粒度應達到主體為用戶級或進程級,客體為文件、數據庫表級;
1、應核查訪問控制策略的控制粒度是否達到主體為用戶級別或進程級,客體為文件、數據庫表、記錄或字段級。
# ls – 1 /etc
# ls – 1 /tmp
# ls – 1 /etc/passwd
# ls – 1 /etc/shadow
# ls – 1 /etc/security/passwd
# ls – 1 /etc/security/login.cfg
# ls – 1 /etc/security/user
2、使用普通用戶去編輯/etc/passwd文件看是否成功。
(vim /etc/passwd)
//普通用戶無法編輯
g) 應對重要主體和客體設置安全標記,並控制主體對有安全標記信息資源的訪問。
1、應核查是否對主體、客體設置了安全標記;例如
(ls -Z(大寫)/etc/passwd)
//-rw-r--r--. root root system_u:object_r:passwd_file_t:s0 /etc/passwd
//服務器對重要主體和客體設置安全標記
//第一部分身份標識system_u表示系統程序方面的標識
//user_u表示一般用戶相關身份標識;第二部分角色定義文件進程和用戶用途
//object_r表示文件或目錄等資源
//system_r表示進程
//第三部分數據類型
//第四部分限制訪問的需要(0-15級)(要求3級)
psswd_file_t:s0(此處起碼需要3級)
2、應測試驗證是否依據主體、客體安全標記控制主體對客體訪問的強制訪問控制策略。
(more /etc/selinux/config)
//查看SELinux是否開啟
//SELinux配置
SELINUX=disable表示Selinux關閉
=ecforcing強制模式
=permissive寬容模式
三、安全審計
a) 應啟用安全審計功能,審計覆蓋到每個用戶,對重要的用戶行為和重要安全事件進行審計;
1、應核查是否開啟了安全審計功能;
service rsyslog status(安全審計)
//查看命令結果Active: active (running) 表示正在運行
service auditd status(安全審計守護)
//查看命令結果Active: active (running) 表示正在運行
ps -ef |grep auditd(安全審計守護進程)
//查看命令結果發現有audit進程表示進程正在開啟
auditctl -s(查看audit模塊是否開啟)
//查看命令結果(enabled 1“開啟” 0“關閉”)
//安全審計
//安全審計守護
//安全審計守護進程
//安全審計模塊
2、應核查安全審計范圍是否覆蓋到每個用戶;
查看配置
(日志審核more /etc/rsyslog.conf)
//文件有相關的審計策略
(安全事件配more/etc/audit/filter.conf)(通常情況下沒得這個文件夾)
//文件有相關的審計策略
(日志審核策more/etc/audit/audit.rules)(通常情況下顯示—D -bXXX(xxx代表內存))
//文件里面有相關的安全審計策略
3、應核查是否對重要的用戶行為和重要安全事件進行審計。
日志總覽;
(aureport -i)
//Range of time in logs:XXXXXXXXXX(日志中的時間范圍)
Selected time for report:XXXXXXXXXX(選定的報告時間)
4、查看日志文件是否有6個月:
(more /var/log/audit/audit.log.X)(X代表變量,具體看系統存在幾個日志文件)
(head -10 /var/log/audit/audit.log.X)
(tial -10 /var/log/audit/audit.log.X)
//可以使用head(查看前幾行)、tail(查看末尾幾行)兩個命令
(msg=audit(1626333001)
//查詢時間戳,找到最遠記錄
//https://tool.lu/timestamp/(時間戳查詢器)
b) 審計記錄應包括事件的日期和時間、用戶、事件類型、事件是否成功及其他與審計相關的信息;
1、應核查審計記錄信息是否包括事件的日期和時間、用戶、事件類型、事件是否成功及其他與審計相關的信息。(tail -20/var/log/audit/audit.log(查看最近20行日志);
(tail -20/var/log/audit/audit.log)
//審計記錄應包括事件的日期、時間、類型、主體標識、客體標識和結果
type(消息類型),msg(時間、事件ID),syscall(系統調用類型),
success(此次syscall是否成功),exe(進程文件的執行路徑)。
c) 應對審計記錄進行保護,定期備份,避免受到未預期的刪除、修改或覆蓋等;
1、應核查是否采取了保護措施對審計記錄進行保護;
(ls -l /var/log/audit)查看審計文件權限
(ls -l /var/log) 查看目錄權限
//文件可以有讀取權限,但不允許有寫入權限。
2、應核查是否采取技術措施對審計記錄進行定期備份,並核查其備份策略。
//詢問管理員,查看相關配置。
d) 應對審計進程進行保護,防止未經授權的中斷。
1、應測試驗證通過非審計管理員的其他賬戶來中斷審計進程,驗證審計進程是否受到保護。
(切換普通用戶:service auditd stop停止守護進程)
//使用普通用戶,結束審計進程失敗
//部署了第三方審計工具, 可以實時記錄審計日志, 管理員不可以對日志進行刪除操作
四、入侵防范
a) 應遵循最小安裝的原則,僅安裝需要的組件和應用程序;
1、應核查是否遵循最小安裝原則;
(yum list installed)
//詢問管理員當前的安裝包是否存在多余、無用的服務
2、應核查是否未安裝非必要的組件和應用程序;
(cat /etc/redhat-release)
//查看系統版本
b) 應關閉不需要的系統服務、默認共享和高危端口;
1、應核查是否關閉了非必要的系統服務和默認共享;
(systemctl list-units --type=service --all)
//詢問管理員是否存在多余服務
(關閉了shell、login、echo、talk、ntalk、sendmail服務。)
2、應核查是否不存在非必要的高危端口。
(netstat -ntlp或者netstat -anp)
//詢問管理員是否存在多余端口
c) 應通過設定終端接入方式或網絡地址范圍對通過網絡進行管理的管理終端進行限制;
1、應核查配置文件或參數是否對終端接入范圍進行限制。
(more /etc/hosts.deny與more /etc/hosts.allow)
//查看文件中是否存在ALL:ALL(禁止所有連接)
//sshd:192.168.1.10/255.255.255.0(允許這個IP連接)
2、是否采用了從防火牆設置了對接入終端的限制;
(systemctl status firewalld)
//查看防火牆是否開啟(Active: active (running)正在運行 )
(firewall-cmd --zone=public --list-rich-rules)
//查看防火牆是否有策略
rule family IP類型
source address IP地址
port port 端口號
protocol 協議
reject 限制
accept 接觸限制
e) 應能發現可能存在的已知漏洞,並在經過充分測試評估后,及時修補漏洞;
1、應通過漏洞掃描、滲透測試等方式核查是否不存在高風險漏洞;
//WEB的服務使用工具進行掃描
2、應核查是否在經過充分測試評估后及時修補漏洞。
(more/var/log/secure | grep refused)
3、訪談補丁升級機制,查看補丁安裝情況
(rpm -qa |grep patch)
//查看patch版本是多久,去官網核對。
f) 應能夠檢測到對重要節點進行入侵的行為,並在發生嚴重入侵事件時提供報警;
1、應訪談並核查是否有入侵檢測的措施;
(more/var/log/secure | grep refused)
//查看入侵線索
(Find/-name<daemon name>-print)
//入侵檢測軟件
2、應核查在發生嚴重入侵事件時是否提供報警。
//詢問管理員,是否提供了入侵報警功能,如何報警。
3、查看主機防火牆狀態systemctl status firewalld
(systemctl status firewalld)
//查看防火牆是否開啟(Active: active (running)正在運行 )
五、惡意代碼防范
a)應采用免受惡意代碼攻擊的技術措施或主動免疫可信驗證機制及時識別入侵和病毒行為,並將其有效阻斷。
1、應核查是否安裝了防惡意代碼軟件或相應功能的軟件,定期進行升級和更新防惡意代碼庫;
//詢問管理員是否安裝了防惡意代碼軟件或相應功能的軟件,定期進行升級和更新防惡意代碼庫;
2、應核查是否采用主動免疫可信驗證技術及時識別入侵和病毒行為;
//記錄殺毒工具,軟件版本、病毒庫版本。
3、應核查當識別入侵和病毒行為時是否將其有效阻斷。
//查看殺毒軟件,殺毒記錄。
六、可信驗證
a)可基於可信根對計算設備的系統引導程序、系統程序、重要配置參數和應用程序等進行可信驗證, 並在應用程序的關鍵執行環節進行動態可信驗證,在檢測到其可信性受到破壞后進行報警,並將驗證 結果形成審計記錄送至安全管理中心。
//不適用
七、 數據完整性
a) 應采用校驗技術或密碼技術保證重要數據在傳輸過程中的完整性,包括但不限於鑒別數據、重要業務數據、重要審計數據、重要配置數據、重要視頻數據和重要個人信息等;
1、應核查系統設計文檔,鑒別數據、重要業務數據、重要審計數據、重要配置數據、重要視頻數據和重要個人信息等在傳輸過程中是否采用了校驗技術和密碼技術保證完整性;
//詢問管理員,重要數據在傳輸的時候使用什么協議(Linux一般使用SSH協議)
2、應測試驗證在傳輸過程中對鑒別數據、重要業務數據、重要審計數據、重要配置數據、重要視頻數據和重要個人信息等進行篡改、是否能否檢測到數據在傳輸過程中的完整性收到破壞並能夠及時恢復。
//詢問管理員,重要數據在傳輸的時候使用什么協議(Linux一般使用SSH協議),是否有檢查機制。
b) 應采用校驗技術或密碼技術保證重要數據在存儲過程中的完整性,包括但不限於鑒別數據、重要業務數據、重要審計數據、重要配置數據、重要視頻數據和重要個人信息等。
1、業務應用系統、數據庫管理系統、中間件、系統管理軟件及系統設計文檔、數據安全保護系統、終端和服務器等設備中的操作系統及網絡設備和安全設備中等。
//用校驗技術或密碼技術保證重要數據在存儲過程中的完整性
八、數據保密性
a) 應采用密碼技術保證重要數據在傳輸過程中的保密性,包括但不限於鑒別數據、重要業務數據和重要個人信息等;
1、應核查系統設計文檔,鑒別數據、重要業務數據和重要個人信息等在傳輸過程中是否采用密碼技術保證保密性;
//詢問管理員,重要數據在傳輸的時候使用什么協議(Linux一般使用SSH協議),是否有檢查機制。
2、應通過嗅探等方式抓取傳輸過程中的數據包,鑒別數據、重要業務數據和重要個人信息等在傳輸過程中是否進行了加密處理。
//詢問管理員,重要數據在傳輸的時候使用什么協議(Linux一般使用SSH協議),是否有檢查機制。
b) 應采用密碼技術保證重要數據在存儲過程中的保密性,包括但不限於鑒別數據、重要業務數據和重要個人信息等。
1、業務應用系統、數據庫管理系統、中間件、系統管理軟件及系統設計文檔、數據安全保護系統、終端和服務器等設備中的操作系統及網絡設備和安全設備中的重要配置數據等。
//詢問管理員,重要數據在傳輸的時候使用什么協議(Linux一般使用SSH協議),是否有檢查機制。
九、數據備份恢復
a) 應提供重要數據的本地數據備份與恢復功能;
1、應核查是否安裝備份策略進行本地備份;
//詢問管理員是否設置了備份策略(時間、備份地點、備份策略(增量、全量))
2、應核查備份策略設置是否合理、配置是否正確;
//查看備份策略
3、應核查備份結果是否與備份策略一致;
//查看備份結果
4、應核查近期恢復測試記錄是否能夠進行正常的數據恢復。
//詢問管理員,近期是否進行了備份恢復測試。
b) 應提供異地實時備份功能,利用通信網絡將重要數據實時備份至備份場地;
1應核查是否提供異地實時備份功能,並通過網絡將重要配置數據、重要業務數據實時備份至備份場地。
//詢問管理員是否有異地備份,備份策略是什么(時間、備份地點、策略(全量、增量))
c) 應提供重要數據處理系統的熱冗余,保證系統的高可用性。
1、訪談主機管理員哪些是重要數據處理系統, 數據處理系統是否有備份機制,是否采用本地熱備份站點備份或異地活動互援備份
2、核查設備列表,重要數據處理系統是否采用熱備服務器
//應核查重要數據處理系統
(包括邊界路由器、邊界防火牆、核心交換機、應用服務器和數據庫服務器等)
是否采用熱冗余方式部署。
十、剩余信息保護
a) 應保證鑒別信息所在的存儲空間被釋放或重新分配前得到完全清除;
1、應核查相關配置信息或系統設計文檔,用戶的鑒別信息所在的存儲空間被釋放或重新分配前是否得到完全清除。
//默認符合
b) 應保證存有敏感數據的存儲空間被釋放或重新分配前得到完全清除。
1、應核查相關配置信息或系統設計文檔,敏感數據所在的存儲空間被釋放或重新分配給其他用戶前是否得到完全清除。
//默認符合
十一、個人信息保護
a) 應僅采集和保存業務必需的用戶個人信息;
1、應核查采集的用戶個人信息是否是業務應用必須的;
2、應核查是否制定了相關用戶個人信息保護的管理制度和流程。
//不適用
b) 應禁止未授權訪問和非法使用用戶個人信息;
1、應核查是否采用技術措施限制對用戶個人信息的訪問和使用;
2、應核查是否制定了有關用戶個人信息保護的管理制度和流程;
//不適用
審計的相關資料
1、/etc/audit/auditd.conf 配置例子
#vi /etc/audit/auditd.conf
#第 5 行設置日志文件
log_file = /var/log/audit/audit.log
#第 11 行設置日志文件輪詢的數目,它是 0~99 之間的數。如果設置為小於 2,則不會循環日志。如果沒有設置 num_logs 值,它就默認為 0,意味着從來不循環日志文件
num_logs = 5
#第 14 行設置日志文件是否使用主機名稱,一般選 NONE
name_format = NONE
#第五行設置日志文件大小,以兆字節表示的最大日志文件容量。當達到這個容量時,會執行 max_log_file _action 指定的動作
max_log_file = 6
#第 17 行設置日志文件到達最大值后的動作,這里選擇 ROTATE(輪詢)
max_log_file_action = ROTATE
2、auditctl 命令簡介
auditctl 命令是 Linux 用戶空間審計系統的最主要的部分,命令格式:
auditctl [選項] filter,action -S syscall -F condition -k label
主要參數說明見表 1
表 1. auditctl 命令選項
| 項目 | 可選參數 | 說明 |
| -----------| ------------ | ------------ |
| filter | user,exit,task,exclude | filter 詳細說明哪個內核規則匹配過濾器應用在事件中。以下是其中之一的與規則匹配的過濾器: task、exit、user 以及 exclude |
| action | always, never | 是否審核事件(always 表示是)(never 表示否) |
| syscall | all, 2, open 等 | 所有的系統調用都可以在/usr/include/asm/unistd_64.h 文件中找到。許多系統調用都能形成一個規則 |
| condition | euid=0, arch=b64 | 詳細說明其他選項,進一步修改規則來與以特定架構、組 ID、進程 ID 和其他內容為基礎的事件相匹配 |
| label | 任意文字 | 標記審核事件並檢索日志 |
-S 表示系統調用號或名字
-F 表示規則域。
-k 表示設置審計規則上的過濾關鍵
3、
audit 審計規則分成三個部分:
控制規則:這些規則用於更改審計系統本身的配置和設置。
文件系統規則:這些是文件或目錄監視。 使用這些規則,我們可以審核對特定文件或目錄的任何類型的訪問。
系統調用規則:這些規則用於監視由任何進程或特定用戶進行的系統調用。
控制規則
控制規則可以在/etc/audit/audit.rules 中設置。主要包括:
-D #刪除所有當前裝載的審核規則#
-b 8192 #在內核中設定最大數量的已存在的審核緩沖區為 8Mb#
-e 2 #鎖定審核配置#
文件系統規則
可以通過 auditctl 命令設置。監控文件系統行為(依靠文件、目錄的權限屬性來識別)
規則格式:
-w 路徑
-p 權限
-k 關鍵字
其中-p 權限的動作分為四種
r — 讀取文件或者目錄。
w — 寫入文件或者目錄。
x — 運行文件或者目錄。
a — 改變在文件或者目錄中的屬性。
例如要監控/etc/passwd 文件的修改行為,可以使用這個命令: #auditctl -w /etc/passwd -p wa
也可以自己將上述內容加入到文件/etc/audit/rules.d/audit.rules 中即可實現對該文件的監視。
原文鏈接:https://blog.csdn.net/qq_44685429/article/details/118723284