編號?? ?加固項?? ?"風險
等級"?? ?加固原理/Rationale?? ?審計方法/Audit?? ?期望結果/Expect Results?? ?加固方法/Remediation
1 OpenSSH加固配置?? ??? ??? ??? ??? ??? ?
1.1 OpenSSH加固配置?? ??? ??? ??? ??? ??? ?
1.1.1?? ?SSH使用的版本?? ?H?? ?"Open SSH V2版本在安全性能、方便性上有所提高,默認使用V2版本。
如果用戶根據實際需要采用V1版本,可登錄主機將數值修改為“1”。
"?? ?查看/etc/ssh/sshd_config文件?? ?Protocol被設置為“2”?? ?將Protocol設置為2
1.1.2?? ?SSH密碼算法?? ?H?? ?"基于SSH加密傳輸的安全性需求,請使用以下加密算法:AES128,AES256,AES192,允許同時配置多個算法,以逗號隔開。
"?? ?查看/etc/ssh/sshd_config文件?? ?Ciphers被設置為“aes128-ctr,aes192-ctr,aes256-ctr”(x86系統下)或“aes128-ctr,aes192-ctr,aes256-ctr,chacha20-poly1305@openssh.com,aes128-gcm@openssh.com,aes256-gcm@openssh.com”(arm系統下)?? ?將Ciphers配置項設置為“aes128-ctr,aes192-ctr,aes256-ctr”(x86系統下)或“aes128-ctr,aes192-ctr,aes256-ctr,chacha20-poly1305@openssh.com,aes128-gcm@openssh.com,aes256-gcm@openssh.com”(arm系統下)
1.1.3?? ?SSH認證方式?? ?H?? ?允許公鑰認證。?? ?查看/etc/ssh/sshd_config文件?? ?PubkeyAuthentication被設置為“yes”?? ?將PubkeyAuthentication設置為“yes”
1.1.4?? ?SSH認證方式?? ?H?? ?允許使用RSA算法進行安全驗證。?? ?查看/etc/ssh/sshd_config文件?? ?RSAAuthentication被設置為“yes”(僅X86系統)?? ?將RSAAuthentication設置為“yes”(僅X86系統)
1.1.5?? ?SSH認證方式?? ?H?? ?認證時不需要使用“rhosts”和“shosts”文件。?? ?查看/etc/ssh/sshd_config文件?? ?IgnoreRhosts被設置為“yes”?? ?將IgnoreRhosts設置為“yes”
1.1.6?? ?SSH認證方式?? ?H?? ?不允許用rhosts或“/etc/hosts.equiv”加上RSA進行安全驗證。?? ?查看/etc/ssh/sshd_config文件?? ?RhostsRSAAuthentication被設置為“no”(僅X86系統)?? ?將RhostsRSAAuthentication設置為“no”(僅X86系統)
1.1.7?? ?SSH認證方式?? ?H?? ?需要通過密碼認證(需要手動在鍵盤輸入密碼認證)?? ?查看/etc/ssh/sshd_config文件?? ?PasswordAuthentication被設置為“yes”?? ?將PasswordAuthentication設置為“yes”
1.1.8?? ?SSH訪問所有權?? ?H?? ?設置SSH在接收登錄請求之前不檢查用戶目錄和rhosts文件的權限和所有權?? ?查看/etc/ssh/sshd_config文件?? ?StrictModes被設置為“yes”?? ?將StrictModes設置為“yes”
1.1.9?? ?SSH登錄前顯示提示信息?? ?H?? ?設置SSH登錄前顯示提示信息。默認的提示信息為“Authorized users only. All activity may be monitored and reported.”。?? ?查看/etc/ssh/sshd_config文件?? ?Banner被設置為“/etc/issue.net”?? ?將Banner設置為“/etc/issue.net”
1.1.10?? ?SSH日志?? ?H?? ?"在記錄來自sshd的消息的時候,是否給出“facility code”。
? KERN:內核信息。
? DAEMON:與xinetd相關的信息。
? USER:用戶程序產生的日志信息。
? AUTH:認證信息。
? MAIL:郵件程序產生的日志信息。
"?? ?查看/etc/ssh/sshd_config文件?? ?SyslogFacility被設置為“AUTH”?? ?將SyslogFacility設置為“AUTH”
1.1.11?? ?SSH日志?? ?H?? ?記錄日志提供的詳細程度,該值從低到高順序是:QUIET、FATAL、ERROR、INFO、VERBOSE、DEBUG。?? ?查看/etc/ssh/sshd_config文件?? ?LogLevel被設置為“VERBOSE”?? ?將LogLevel設置為“VERBOSE”
1.1.12?? ?禁止空密碼用戶登錄?? ?H?? ?空密碼用戶是指口令為空的用戶,基于安全考慮禁止空密碼用戶登錄系統。?? ?查看/etc/ssh/sshd_config文件?? ?PermitEmptyPasswords被設置為“no”?? ?將PermitEmptyPasswords設置為“no”
1.1.13?? ?PAM登錄認證?? ?H?? ?使用PAM模塊認證。?? ?查看/etc/ssh/sshd_config文件?? ?UsePAM被設置為“yes”?? ?將UsePAM設置為“yes”
1.1.14?? ?禁止root用戶直接SSH登錄系統?? ?H?? ?允許root用戶直接登錄系統,攻擊者可能會暴力破解root密碼或繞過認證直接登入系統,獲取系統超級權限,因此禁止root用戶直接SSH登錄系統。?? ?查看/etc/ssh/sshd_config文件?? ?PermitRootLogin被設置為“no”?? ?將PermitRootLogin設置為“no”
1.1.15?? ?允許external_om和internal_base平面網段訪問22端口?? ?H?? ?不允許除external_om和internal_base平面網段的其他網段訪問22端口?? ?執行命令:iptables-save | grep ssh-INPUT?? ?返回結果中存在external_om和internal_base平面網段?? ?無
2 系統訪問安全配置?? ??? ??? ??? ??? ??? ?
2.1 系統訪問安全配置?? ??? ??? ??? ??? ??? ?
2.1.1?? ?禁止通過CTRL+ALT+DEL重啟系統?? ?H?? ?禁止通過"ALT+CTRL+DEL"重啟系統,防止機器遭受非授權的人為的重啟?? ? 查看/etc/systemd/system/ctrl-alt-del.target和/usr/lib/systemd/system/ctrl-alt-del.target?? ?"/etc/systemd/system/ctrl-alt-del.target和
/usr/lib/systemd/system/ctrl-alt-del.target文件不存在"?? ?"刪除如下文件和鏈接
rm -f /etc/systemd/system/ctrl-alt-del.target
rm -f /usr/lib/systemd/system/ctrl-alt-del.target"
2.1.2?? ?設置會話超時后系統自動退出?? ?M?? ?無人看管的終端容易被監聽或被攻擊,可能會危及系統安全。設置會話在5分鐘(300秒)沒有活動的情況下會話超時。當會話超時時自動退出終端,降低系統被攻擊的風險?? ?查看/etc/profile文件?? ?文件中有: export TMOUT=300?? ?文件中有:export TMOUT=300
2.1.3?? ?限制命令歷史記錄的數量?? ?M?? ?Linux會自動記錄用戶輸入過的命令,用于問題定位時查看,此處限制最多記錄5000條,當超過5000條時,刪除最老的記錄?? ?查看/etc/profile文件?? ?"文件中有:
export HISTSIZE=5000?
"?? ?"在文件中添加:
export HISTSIZE=5000?
"
2.1.4?? ?禁用魔術鍵?? ?H?? ?禁用魔術鍵,避免由于直接發送命令到內核對系統造成影響,增強內核安全性?? ?查看/etc/sysctl.d/60-uvp-security.conf文件?? ?/etc/sysctl.d/60-uvp-security.conf中,將配置項“kernel.sysrq”設置為“=0”?? ?/etc/sysctl.d/60-uvp-security.conf中,將配置項“kernel.sysrq”設置為“=0”
2.1.6?? ?設置內核oops后系統重啟?? ?H?? ?oops是指內核發生嚴重錯誤,最普遍的是引用了內存空地址。安全加固默認系統在發生該情況時重啟,防止系統帶病運行帶來嚴重的影響?? ?查看/etc/sysctl.d/60-uvp-security.conf文件?? ?"/etc/sysctl.d/60-uvp-security.conf中,將配置項“kernel.panic_on_oops”設置為“=1”
"?? ?/etc/sysctl.d/60-uvp-security.conf中,將配置項“kernel.panic_on_oops”設置為“=1”
3 文件及目錄安全配置?? ??? ??? ??? ??? ??? ?
3.1 文件及目錄安全配置?? ??? ??? ??? ??? ??? ?
3.1.1?? ?只允許文件屬主對本文件進行修改,禁止其他用戶對該文件的修改?? ?H?? ?禁止其他用戶刪除或修改系統日志文件,保證系統日志的完整性?? ?查看/var/log/目錄下文件權限?? ?普通用戶沒有這些文件的修改和執行權限?? ?"執行如下命令。
chmod go-wx /var/log/*
"
3.1.2?? ?設置日志目錄和系統命令目錄的權限?? ?H?? ?設置/var/log和/sbin、/usr/sbin目錄權限為root用戶可讀寫并執行,其他用戶可讀和可執行?? ?查看/var/log /sbin /usr/sbin目錄下文件夾的權限?? ?/var/log /sbin /usr/sbin目錄下文件夾的權限分別為755、777、555?? ?"執行如下命令。
chmod 755 /var/log
chmod 777 /sbin
chmod 555 /usr/sbin"
3.1.3?? ?為全局可寫目錄/tmp設置粘貼位?? ?M?? ?對于公共可寫目錄/tmp設置粘貼位,避免個人文件被他人修改?? ?查看/tmp目錄的權限?? ?/tmp目錄的權限信息中有“t”標識?? ?"執行如下命令。
chmod o+t /tmp"
3.1.4?? ?禁止非root用戶讀寫或進入/root目錄?? ?H?? ?禁止非root用戶讀寫或進入/root目錄?? ?查看/root目錄權限?? ?目錄權限為700?? ?"執行如下命令。
chmod 700 /root"
3.1.5?? ?設置口令文件權限?? ?H?? ?設置口令文件權限,防止普通用戶讀取或拷貝加密的口令文件內容。默認權限設置為000,該權限的含義是僅允許root用戶進行讀操作?? ?查看目錄/etc/shadow、/etc/shadow-權限?? ?"/etc/shadow目錄權限為000
/etc/shadow-目錄權限為000"?? ?"執行如下命令。
chmod 000 /etc/shadow?
chmod 000 /etc/shadow-
"
3.1.6?? ?禁用core dump?? ?H?? ?core dump記錄Linux系統運行錯誤的相關信息,甚至包含了系統的敏感信息,為了防止系統信息泄露,禁止使用core dump?? ?查看/etc/profile文件?? ?ulimit -c”設置為“0”?? ?ulimit -c”設置為“0”
3.1.7?? ?限制at命令的使用權限,禁止非root用戶使用at命令?? ?M?? ?at命令用于創建在指定時間自動執行的任務,為避免任意用戶通過at命令安排工作,造成系統易受攻擊,僅指定root用戶可使用該命令?? ?查看/etc/at.deny、/etc/at.allow文件?? ?"/etc/at.deny不存在
/etc/at.allow的所屬用戶組都是root,權限為400
"?? ?"執行如下命令。
rm -f /etc/at.deny?
rm -f /etc/at.allow?
touch /etc/at.allow
chown root:root /etc/at.allow
chmod 400 /etc/at.allow
"
3.1.8?? ?限制cron命令的使用權限,禁止非root用戶使用cron命令?? ?M?? ?cron命令用于創建例行性任務,為避免任意用戶通過cron命令安排工作,造成系統易受攻擊,僅指定root用戶可使用該命令?? ?"查看/etc/cron.deny、/etc/cron.allow文件
"?? ?"/etc/cron.deny不存在
/etc/cron.allow不存在
"?? ?"rm -f /etc/cron.deny?
rm -f /etc/cron.allow "
3.1.9?? ?設置守護進程的umask值?? ?M?? ?umask用來為新創建的文件和目錄設置缺省權限,如果沒有設定umask值,則生成的文件具有全局可寫權限,存在一定的風險。為了提高守護進程新創建文件和目錄的安全性,為其設置umask值為027?? ?查看/etc/rc.status文件?? ?umask被設置為“027”?? ?將umask設置為“027”
3.1.10?? ?設置/etc/inittab的模式和所有權?? ?H?? ?設置/etc/inittab的屬主和群組都為root,權限為只有root用戶可讀和可寫?? ?查看/etc/inittab文件的權限和所屬用戶、組?? ?/etc/inittab文件的權限為600,所屬用戶和組都是root?? ?"執行如下命令
chown root:root /etc/inittab
chmod 600/etc/inittab"
4 帳戶口令安全及認證配置?? ??? ??? ??? ??? ??? ?
4.1 帳戶口令安全及認證配置?? ??? ??? ??? ??? ??? ?
4.1.1?? ?鎖定連續三次登錄失敗的用戶?? ?H?? ?鎖定連續三次登錄失敗的用戶(包括root),5分鐘(300秒)后自動解鎖?? ?查看/etc/pam.d/password-auth和/etc/pam.d/system-auth文件?? ?"文件中有如下配置
auth required pam_faillock.so preauth audit deny=3 even_deny_root unlock_time=300
auth [default=die] pam_faillock.so authfail audit deny=3 even_deny_root unlock_time=300
auth sufficient pam_faillock.so authsucc audit deny=3 even_deny_root unlock_time=300"?? ?"在配置文件/etc/pam.d/password-auth和/etc/pam.d/system-auth中,寫入如下內容:
auth required pam_faillock.so preauth audit deny=3 even_deny_root unlock_time=300
auth [default=die] pam_faillock.so authfail audit deny=3 even_deny_root unlock_time=300
auth sufficient pam_faillock.so authsucc audit deny=3 even_deny_root unlock_time=300
"
4.1.2?? ?設置密碼復雜度?? ?H?? ?用戶密碼必須符合相應的復雜度要求?? ?查看/etc/pam.d/password-auth和/etc/pam.d/system-auth文件?? ?"文件中有如下配置:
password ? ?requisite ? ? pam_pwquality.so minlen=8 minclass=3 enforce_for_root try_first_pass local_users_only retry=3 dcredit=0 ucredit=0 lcredit=0 ocredit=0
password required pam_pwhistory.so use_authtok remember=5 enforce_for_root
"?? ?"文件中有如下配置:
password ? ?requisite ? ? pam_pwquality.so minlen=8 minclass=3 enforce_for_root try_first_pass local_users_only retry=3 dcredit=0 ucredit=0 lcredit=0 ocredit=0
password required pam_pwhistory.so use_authtok remember=5 enforce_for_root"
4.1.3?? ?"通用加密算法場景下:密碼通過sha512方式進行加密
SM系列商密算法場景下:密碼通過sm3方式進行加密"?? ?H?? ?"通用加密算法場景下:使用不可逆的安全的sha512加密算法對密碼進行加密
SM系列商密算法場景下:使用不可逆的安全的sm3加密算法對密碼進行加密"?? ?"查看“/etc/pam.d/password-auth
”和“/etc/pam.d/system-auth”文件"?? ?"文件中有如下配置:
通用加密算法場景下:password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
SM系列商密算法場景下:password sufficient pam_unix.so sm3 shadow nullok try_first_pass use_authtok"?? ?"通用加密算法場景下:在配置文件“/etc/pam.d/password-auth
”和“/etc/pam.d/system-auth”文件中,寫入password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
SM系列商密算法場景下:
在配置文件“/etc/pam.d/password-auth
”和“/etc/pam.d/system-auth”文件中,寫入password sufficient pam_unix.so sm3 shadow nullok try_first_pass use_authtok"
4.1.4?? ?驗證登錄用戶的信息是否正確?? ?H?? ?在用戶登錄系統時使用pam_unix.so驗證用戶信息是否正確。如果用戶信息錯誤,則禁止用戶登錄?? ?"查看“/etc/pam.d/password-auth
”和“/etc/pam.d/system-auth”文件"?? ?"文件中有如下配置
account required pam_unix.so"?? ?"在配置文件“/etc/pam.d/password-auth
”和“/etc/pam.d/system-auth”中,寫入如下內容。
account required pam_unix.so
"
4.1.5?? ?設置密碼有效期?? ?H?? ?用戶需要定期修改密碼,密碼必須90天以內更換一次,在密碼過期前7天提醒用戶?? ?查看/etc/login.defs文件?? ?"寫入如下內容。
PASS_MAX_DAYS 90?
PASS_MIN_DAYS 0?
PASS_WARN_AGE 7
"?? ?"寫入如下內容。
PASS_MAX_DAYS 90?
PASS_MIN_DAYS 0
PASS_WARN_AGE 7
"
4.1.6?? ?限制使用su命令的帳戶?? ?H?? ?只允許屬于wheel群組的帳戶使用su命令?? ?查看/etc/pam.d/su文件?? ?"寫入如下內容。
auth required pam_wheel.so use_uid?
"?? ?"寫入如下內容。
auth required pam_wheel.so use_uid?
"