檢查項:
Ensure package manager repositories are configured
檢查項:
確定"配置了包管理器存儲庫"
描述:
系統需要配置包管理器存儲庫以確定它們接收到最新更新檔和更新。
原理:
如果系統的軟體包存儲庫配置錯誤,則可能無法識别重要的修補程式,或者惡意存儲庫可能會引入受損軟體。
配置方法:
根據站點政策配置包管理器存儲庫。
檢測方法:
運作以下指令并驗證是否正确配置了存儲庫:
# yum repolist
檢查項:
Ensure GPG keys are configured
檢查項:
確定"配置了GPG密鑰"
描述:
大多數包管理器在安裝過程中實作GPG密鑰簽名以驗證包的完整性。
原理:
確定從有效源擷取更新以防止可能導緻無意中在系統上安裝惡意軟體的欺騙非常重要。
配置方法:
根據站點政策更新您的包管理器GPG密鑰。
檢測方法:
運作以下指令并驗證是否正确配置了GPG密鑰:
# rpm -q gpg-pubkey --qf '%{name}-%{version}-%{release} --> %{summary}\n'
檢查項:
Ensure gpgcheck is globally activated
檢查項:
確定"全局激活gpg檢查"
描述:
gpgcheck選項,在/etc/yum.conf的[main]節和/etc/yum/repos.d/*中,決定在安裝之前是否提前檢查其簽名。
原理:
確定在安裝之前始終檢查RPM的包簽名以確定從受信任的來源擷取軟體非常重要。
配置方法:
1.編輯/etc/yum.conf檔案,在main節中設定gpgcheck=1
2.編輯/etc/yum.repos.d/*目錄下的所有檔案,設定gpgcheck=1
檢測方法:
1.檢查/etc/yum.conf中gpgcheck是否設定為1
# grep ^gpgcheck /etc/yum.conf
gpgcheck=1
2.運作以下指令并驗證傳回的所有gpgcheck執行個體是否都設定為“1”:
# grep ^gpgcheck /etc/yum.repos.d/*
檢查項:
Ensure AIDE is installed
檢查項:
確定"已安裝AIDE"
描述:
AIDE擷取檔案系統狀态的快照,包括修改時間,權限和檔案哈希值,然後可用于與檔案系統的目前狀态進行比較以檢測對系統的修改。
原理:
通過監視檔案系統狀态,可以檢測到受損檔案,以防止或限制意外或惡意錯誤配置或修改後的二進制檔案的暴露。
配置方法:
1.運作以下指令安裝aide
# yum install aide
2.查閱AIDE文檔,根據你的環境配置AIDE
說明文檔:http://aide.sourceforge.net/stable/manual.html
3.初始化AIDE
# aide --init
# mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
檢測方法:
運作以下指令判斷aide是否安裝:
# rpm -q aide
aide-<version>
未安裝時:package aide is not installed
檢查項:
Ensure filesystem integrity is regularly checked
檢查項:
確定定期檢查檔案系統完整性"
描述:
需要定期檢查檔案系統完整性,以檢測檔案系統的更改。
原理:
定期檔案檢查允許系統管理者定期确定是否以未經授權的方式更改了關鍵檔案。
配置方法:
1.運作以下指令
# crontab -u root -e
2.将以下行添加到crontab:
0 5 * * * /usr/sbin/aide --check
注意:該建議的檢查每天淩晨5點進行。 根據站點政策更改檢查的頻率和時間。
檢測方法:
運作以下指令以确定是否計劃運作輔助檢查的cron作業。
# crontab -u root -l | grep aide
# grep -r aide /etc/cron.* /etc/crontab
檢查項:
Ensure permissions on bootloader config are configured
檢查項:
確定配置了bootloader配置的權限"
描述:
grub配置檔案包含關于啟動設定和解鎖啟動選項的密碼的資訊。
原理:
grub配置通常位于/boot/grub/grub.conf,并連結為/boot/grub/menu.lst和/etc/grub.conf。 設定root權限以進行讀寫隻能防止非root使用者檢視引導參數或更改它們。 讀取引導參數的非root使用者可能能夠在引導時識别安全性方面的弱點并能夠利用它們。
配置方法:
運作以下指令為grub配置檔案這是權限:
# chown root:root /boot/grub/grub.conf
# chmod og-rwx /boot/grub/grub.conf
注意:此建議是圍繞grub引導加載程式設計的,如果您的環境中正在使用LILO或其他引導加載程式,則配置等效設定。
檢測方法:
運作以下指令并驗證Uid和Gid均為0 / root,Access權限不授予組或other
# stat /boot/grub/grub.conf
Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)
檢查項:
Ensure bootloader password is set
檢查項:
確定配置了bootloader密碼
描述:
設定引導加載程式密碼将要求重新開機系統的任何人必須輸入密碼才能設定指令行引導參數。
原理:
在執行引導加載程式時需要引導密碼将防止未經授權的使用者輸入引導參數或更改引導分區。 這可以防止使用者削弱安全性(例如,在啟動時關閉SELinux)。
配置方法:
1.使用grub-md5-crypt建立加密密碼:
# grub-md5-crypt
Password: <password>
Retype Password: <password>
<encrypted-password>
2.複制并粘貼到/boot/grub/grub.conf的全局部分:
password --md5 <encrypted-password>
注意:
此建議是圍繞grub引導加載程式設計的,如果您的環境中正在使用LILO或其他引導加載程式,則配置等效設定。
檢測方法:
運作以下指令并驗證輸出比對:
# grep "^password" /boot/grub/grub.conf
password --md5 <encrypted-password>
檢查項:
Ensure authentication required for single user mode
檢查項:
確定單使用者模式需要身份驗證"
描述:
當系統在引導期間檢測到問題或通過從引導裝載程式手動選擇時,使用單使用者模式進行恢複。
原理:
在單使用者模式下要求身份驗證可防止未經授權的使用者通過單使用者模式重新開機系統,以獲得沒有憑據的root權限。
配置方法:
編輯/etc/sysconfig/init并将SINGLE設定為'/ sbin/sulogin':
SINGLE=/sbin/sulogin
檢測方法:
運作以下指令并驗證SINGLE是否設定為"/sbin/sulogin"
# grep ^SINGLE /etc/sysconfig/init
SINGLE=/sbin/sulogin
注:SINGLE=/sbin/sushell,可以通過檢查檔案
檢查項:
Ensure interactive boot is not enabled
檢查項:
確定未啟用互動式引導
描述:
互動式引導允許控制台使用者以互動方式選擇在引導時啟動哪些服務
原理:
PROMPT選項使控制台使用者能夠以互動方式引導系統并選擇在引導時啟動哪些服務。關閉控制台上的PROMPT選項,以防止控制台使用者可能覆寫已建立的安全設定。
配置方法:
編輯/etc/sysconfig/init并将PROMPT設定為'no':
PROMPT=no
檢測方法:
運作以下指令并驗證PROMPT是否設定為"no"
# grep "^PROMPT=" /etc/sysconfig/init
PROMPT=no
注:PROMPT=yes,可以通過檢查檔案
檢查項:
Ensure core dumps are restricted
檢查項:
確定核心轉儲受到限制
描述:
核心轉儲是可執行程式的記憶體。
原理:
它通常用于确定程式中止的原因。 它還可用于從核心檔案中收集機密資訊。 系統提供了為核心轉儲設定軟限制的功能,但這可以被使用者覆寫。 設定核心轉儲的硬限制可防止使用者覆寫軟變量。 如果需要核心轉儲,請考慮為使用者組設定限制(請參閱limits.conf(5))。 此外,将fs.suid_dumpable變量設定為0将阻止setuid程式轉儲核心。
配置方法:
1.将以下行添加到/etc/security/limits.conf檔案或/etc/security/limits.d/*檔案中:
* hard core 0
2.在/etc/sysctl.conf檔案中設定以下參數
fs.suid_dumpable = 0
3.運作以下指令以設定活動核心參數:
# sysctl -w fs.suid_dumpable=0
檢測方法:
運作以下指令并驗證輸出比對:
# grep "hard core" /etc/security/limits.conf /etc/security/limits.d/*
* hard core 0
# sysctl fs.suid_dumpable
fs.suid_dumpable = 0
檢查項:
Ensure XD/NX support is enabled
檢查項:
確定已啟用XD/NX支援
描述:
x86系列中的最新處理器支援在每個記憶體頁面的基礎上阻止代碼執行的能力。 一般而言,在AMD處理器上,此功能稱為No Execute(NX),而在Intel處理器上則稱為Execute Disable(XD)。 此功能可以幫助防止利用緩沖區溢出漏洞,并應盡可能激活。 必須采取額外步驟以確定啟用此保護,尤其是在32位x86系統上。 其他處理器(如Itanium和POWER)從一開始就包含此類支援,并且這些平台的标準核心支援該功能。
原理:
啟用可以防止緩沖區溢出攻擊的任何功能可以增強系統的安全性。
配置方法:
在32位系統上安裝具有PAE支援的核心,64位系統不需要安裝:如有必要,請将引導加載程式配置為加載新核心并重新開機系統。 您可能需要在BIOS中啟用NX或XD支援。
注意:在實施此建議之前,請確定您的系統支援XD或NX位并具有PAE支援,因為如果您的硬體不支援這些,可能會阻止它啟動
檢測方法:
運作以下指令并驗證核心是否已識别并激活NX/XD保護。
# dmesg | grep NX
NX (Execute Disable) protection: active
檢查項:
Ensure address space layout randomization (ASLR) is enabled
檢查項:
確定啟用位址空間布局随機化(ASLR)
描述:
位址空間布局随機化(ASLR)是一種利用緩解技術,它随機排列程序的關鍵資料區域的位址空間。
原理:
随機放置虛拟記憶體區域将使得難以編寫記憶體頁面漏洞,因為記憶體放置将一直在變化。
配置方法:
1.在/etc/sysctl.conf檔案中設定以下參數:
kernel.randomize_va_space = 2
2.運作以下指令以設定活動核心參數:
# sysctl -w kernel.randomize_va_space=2
檢測方法:
運作以下指令并驗證輸出比對:
# sysctl kernel.randomize_va_space
kernel.randomize_va_space = 2
檢查項:
Ensure prelink is disabled
檢查項:
確定禁用prelink
描述:
prelinkis一個程式,它修改ELF共享庫和ELF動态連結二進制檔案,使動态連結器在啟動時執行重定位所需的時間顯着減少。
原理:
預連結功能可能會幹擾AIDE的操作,因為它會更改二進制檔案。 如果惡意使用者能夠破壞諸如libc之類的公共庫,則預連結還可能增加系統的漏洞。
配置方法:
運作以下指令将二進制檔案恢複到正常狀态并解除安裝prelink:
# prelink -ua
# yum remove prelink
檢測方法:
運作以下指令并驗證未安裝prelink:
# rpm -q prelink
package prelink is not installed
檢查項:
Ensure SELinux is not disabled in bootloader configuration
檢查項:
確定在引導加載程式配置中未禁用SELinux
描述:
将SELINUX配置為在引導時啟用,并驗證它未被grub引導參數覆寫。
原理:
必須在grub配置的啟動時啟用SELinux,以確定不會覆寫它提供的控件。
配置方法:
編輯/boot/grub/grub.conf并删除所有核心行上selinux = 0和enforcing = 0的所有執行個體。
注意:此建議是圍繞grub引導加載程式設計的,如果您的環境中正在使用LILO或其他引導加載程式,則配置等效設定。
檢測方法:
運作以下指令并驗證沒有核心行設定selinux = 0或enforcing = 0參數:
# grep "^\s*kernel" /boot/grub/grub.conf
檢查項:
Ensure the SELinux state is enforcing
檢查項:
確定SELinux狀态強制執行
描述:
設定SELinux以在系統啟動時啟用。
原理:
必須在啟動時啟用SELinux,以確定它提供的控件始終有效。
配置方法:
編輯/etc/selinux/config檔案以設定SELINUX參數:
SELINUX=enforcing
檢測方法:
運作以下指令并確定輸出比對:
# grep SELINUX=enforcing /etc/selinux/config
SELINUX=enforcing
# sestatus
SELinux status: enabled
Current mode: enforcing
Mode from config file: enforcing
檢查項:
Ensure SELinux policy is configured
檢查項:
確定已配置SELinux政策
描述:
配置SELinux以滿足或超過預設目标政策,該政策僅限制背景駐留程式和系統軟體。
原理:
安全配置要求因站點而異。 有些網站可能會要求一項比預設政策更嚴格的政策,這是完全可以接受的。 此項旨在確定至少滿足預設建議
配置方法:
編輯/etc/selinux/config檔案以設定SELINUXTYPE參數:
SELINUXTYPE=targeted
注意:如果您的組織需要更嚴格的政策,請確定将它們設定在/etc/selinux/configfile中。
檢測方法:
運作以下指令并確定輸出比對“targeted”或“mls”:
# grep SELINUXTYPE=targeted /etc/selinux/config
SELINUXTYPE=targeted
# sestatus
Policy from config file: targeted
檢查項:
Ensure SETroubleshoot is not installed
檢查項:
確定未安裝SETroubleshoot
描述:
SETroubleshoot服務通過使用者友好界面通知桌面使用者SELinux拒絕。 該服務提供有關配置錯誤,未經授權的入侵和其他潛在錯誤的重要資訊。
原理:
SETroubleshoot服務是在伺服器上運作的非必要的守護程式,尤其是在禁用X Windows的情況下。
配置方法:
運作以下指令以解除安裝setroubleshoot:
# yum remove setroubleshoot
檢測方法:
運作以下指令并驗證未安裝setroubleshoot:
# rpm -q setroubleshoot
package setroubleshoot is not installed
檢查項:
Ensure the MCS Translation Service (mcstrans) is not installed
檢查項:
確定未安裝MCS Translation Service(mcstrans)
描述:
mcstransd守護程序向請求資訊的用戶端程序提供類别标簽資訊。标簽轉換在/etc/selinux/targeted/setrans.conf中定義。
原理:
由于此服務不經常使用,是以請将其删除以減少系統上運作的潛在易受攻擊程式的數量。
配置方法:
運作以下指令解除安裝mcstrans:
# yum remove mcstrans
檢測方法:
運作以下指令并驗證未安裝mcstrans:
# rpm -q mcstrans
package mcstrans is not installed
檢查項:
Ensure no unconfined daemons exist
檢查項:
確定不存在無限制守護程式
描述:
未在SELinux政策中定義的守護程式将繼承其父程序的安全上下文。
原理:
由于守護程序是從init程序啟動和派生的,是以它們将繼承安全上下文标簽initrc_t。 這可能會導緻給予程序更多權限而非其需要的意外後果。
配置方法:
調查在審計行動中發現的任何無限制守護程序。它們可能需要為它們配置設定一個現有的安全上下文,或者為它們建構一個政策。
注意:有時某些守護程序(如備份或集中管理軟體)可能需要無限制地運作。 在做出此類例外之前,應仔細分析和記錄任何此類軟體。
配置方法:
運作以下指令并驗證沒有輸出:
# ps -eZ | egrep "initrc" | egrep -vw "tr|ps|egrep|bash|awk" | tr ':' ' ' |awk '{ print $NF }'
檢查項:
Ensure SELinux is installed
檢查項:
確定SELinux已安裝
描述:
SELinux提供強制通路控制
原理:
如果沒有安裝強制通路控制系統,則隻能使用預設的自由通路控制系統。
配置方法:
運作以下指令安裝libselinux:
# yum install libselinux
配置方法:
運作以下指令并驗證是否已安裝libselinux:
# rpm -q libselinux
libselinux-<version>