本文檔規定了全部維護管理的Linux操做系統的主機應當遵循的操做系統安全性設置標準,本文檔旨在指導系統管理人員進行Linux操做系統的安全合規性檢查和配置。mysql
本配置標準的使用者包括:服務器管理員、應用管理員、網絡安全管理員、運維工程師。
本設置標準適用於Linux服務器系統。linux
在本標準的執行過程當中如有任何疑問或建議,應及時反饋。sql
安全基線項目名稱:應對登陸的用戶進行身份標識和鑑別,身份標識具備惟一性,身份鑑別信息具備複雜度要求並按期更換
實施操做
編輯/etc/login.defs添加身份標識基線配置數據庫
vi /etc/login.defs PASS_MAX_DAYS 90 PASS_MIN_DAYS 1 PASS_MIN_LEN 8 PASS_WARN_AGE 7
備註 系統默認配置以下
PASS_MAX_DAYS 99999 --密碼最長使用期限
PASS_MIN_DAYS 0 --密碼最短使用期限
PASS_MIN_LEN 5 --密碼最短長度
PASS_WARN_AGE 7 --密碼到期提醒時間安全
2.2 登陸失敗處理功能
安全基線項目名稱 應具備登陸失敗處理功能,應配置並啓用結束會話、限制非法登陸次數和當登陸鏈接超時自動退出等相關措施
實施操做
一、編輯/etc/pam.d/system-auth添加登陸失敗處理功能基線,以下配置部分爲新增服務器
auth required /lib/security/pam_tally.so onerr=fail no_magic root account required /lib/security/pam_tally.so deny=3 no_magic root reset
完整的配置以下:markdown
vi /etc/pam.d/system-auth #%PAM-1.0 # This file is auto-generated. # User changes will be destroyed the next time authconfig is run. auth required pam_env.so auth required /lib/security/pam_tally.so onerr=fail no_magic root auth required pam_faildelay.so delay=2000000 auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 1000 quiet_success auth required pam_deny.so account required pam_unix.so account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 1000 quiet account required pam_permit.so account required /lib/security/pam_tally.so deny=3 no_magic root reset
二、編輯/etc/profile添加登陸鏈接超時自動退出配置網絡
vi /etc/profile TMOUT= 300s source /etc/profile
備註
(1)onerr=fail
若是一些奇怪的事情發生,例如不能打開文件,這個決定了模塊應該如何反應。
(2)no_magic_root
表示若是這個模塊是由一個uid=0的用戶觸發,那麼計數器就增長。系統管理員應該使用這個選項用於例如:telnet/rsh/login之類的服務。
(3)deny=3
這個選項代表若是這個用戶登陸3次失敗,就拒絕訪問。
(4)reset
這個選項指示模塊對成功的實體,應復位到0。oracle
安全基線項目名稱 當進行遠程管理時,應採起必要措施防止鑑別信息在網絡傳輸過程當中被竊聽
實施操做
一、經過iptables防火牆關閉23端口,確認僅22端口能夠進行遠程操做運維
iptables -A INPUT -p tcp --dport 23 iptables save netstat -an|grep 22 netstat -an|grep 23
二、經過firewall-cmd防火牆關閉23端口,確認僅22端口能夠進行遠程操做
firewall-cmd --list-ports firewall-cmd --zone=public --remove-port=23/tcp --permanent firewall-cmd --reload
安全基線項目名稱 應對登陸的用戶分配帳戶和權限;應授予管理用戶所需的最小權限,實現管理用戶的權限分離;訪問控制的粒度應達到主體爲用戶級或進程級,客體爲文件、數據庫表級;
實施操做
一、檢查存在不符合再更改
建議配置文件的權限值不大於644,可執行文件不大於755
經過ls -l 能夠查看權限值大小
二、建議作到三權分立,即擁有最高管理員(root,可視爲安全員)、應用帳戶(視爲操做員)、審計帳戶(審計員,僅有日誌查看權限),全部用戶一一對應使用方或具體人員
三、查看/etc/sudo.conf文件,覈查root級用戶的權限都授予哪些帳戶
more /etc/sudo.conf
安全基線項目名稱 應重命名或刪除默認帳戶,修改默認帳戶的默認口令;應及時刪除或停用多餘的、過時的帳戶,避免共享帳戶的存在
實施操做
一、檢查/etc/passwd文件,對不啓用的用戶登陸配置爲/sbin/nologin或以#號註釋,舉例以下
vi /etc/passwd mysql:x:1000:1000::/home/mysql:/sbin/nologin #ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
二、檢查是否已修改默認帳戶的默認密碼,例如查看是否存在如:root/root,oracle/oracle等的用戶
三、是否存在空密碼用戶,查看/etc/shadow文件,詢問相應帳戶是否爲過時、多餘帳戶,查看/etc/passwd文件各用戶第二字段是否不爲空,/etc/shadow文件中密碼字段是否不爲空
more /etc/passwd
四、應及時刪除或停用多餘的、過時的帳戶,避免共享帳戶的存在,將無用帳戶刪除,如games、news、ftp、lp、halt、shutdown等默認帳戶,其他自建帳戶需明確負責人
cd /home && ls userdel -r 用戶名
安全基線項目名稱 應禁用root用戶遠程登陸,使得*者沒法經過暴力破解來獲取root權限;訪問控制的粒度應達到主體爲用戶級或進程級,客體爲文件、數據庫表級;
實施操做**
一、添加一個普通用戶,如admin,並配置知足複雜度要求的密碼
useradd admin passwd admin
二、使用admin用戶與配置的密碼驗證是否正常經過ssh登陸到服務器,並驗證是否正常切換到root用戶
su - root
三、修改/etc/ssh/sshd_config配置文件,修改ssh默認鏈接端口並禁止root用戶遠程登陸
vi /etc/ssh/sshd_config Port 3122 PermitRootLogin no
重啓sshd服務
service sshd restart 或 systemctl restart sshd
三、passwd、shadow、group等重要文件夾僅root權限能夠修改
(1)/etc/passwd 全部用戶均可讀,root用戶可寫 –rw-r—r—
配置命令:
ls -l /etc/passwd chmod 644 /etc/passwd
(2)/etc/shadow 只有root可讀 –r--------
配置命令:
ls -l /etc/shadow chmod 400 /etc/shadow
(3)/etc/group 必須全部用戶均可讀,root用戶可寫 –rw-r—r—
配置命令:
ls -l /etc/group chmod 644 /etc/group
(4)個別特殊環境,可對文件進行鎖定
chattr +i /etc/passwd chattr +i /etc/shadow chattr +i /etc/group chattr +i /etc/gshadow
備註
一、請切記:必定要驗證新增的admin用戶可正常登陸到操做系統,不然重啓sshd服務將會失去對系統的控制!!!!
二、解鎖文件請使用以下命令
chattr -i /etc/passwd chattr -i /etc/shadow chattr -i /etc/group chattr -i /etc/gshadow
安全基線項目名稱 應啓用安全審計功能,審計覆蓋到每一個用戶,對重要的用戶行爲和重要安全事件進行審計;
實施操做
查看審計服務並啓動審計服務
ps -ef | grep auditd service auditd status 或 systemctl status auditd service auditd start 或 systemctl start auditd
安全基線項目名稱 審計記錄應包括事件的日期和時間、用戶、事件類型、事件是否成功及其餘與審計相關的信息;應對審計記錄進行保護,按期備份,避免受到未預期的刪除、修改或覆蓋等;應對審計進程進行保護,防止未經受權的中斷
實施操做
一、配置遠程日誌存儲服務器
vi /etc/rsyslog.conf 注:格式以下*.*後面跟tab建,端口小於1024時須要配置設置selinux #*.* @@remote-host:514 *.* @192.168.31.100 services syslogd restart 或 systemctl restart rsyslog
二、查看/etc/rsyslog.conf配置文件,確認是否添加authpriv.* /var/log/secure配置(中間的分隔符是tab鍵)
grep "^authpriv.*" /etc/rsyslog.conf
三、設置history時間戳
vi /etc/profile HISTFILESIZE=2000 HISTSIZE=2000 HISTTIMEFORMAT="%Y-%m-%d:%H-%M-%S:`whoami`:" export HISTTIMEFORMAT source /etc/profile
備註 Linux系統默認啓用如下類型日誌:
系統日誌(默認)/var/log/messages
cron日誌(默認)/var/log/cron
安全日誌(默認)/var/log/secure
審計日誌(默認)/var/log/audit/audit.log
注意:部分系統可能使用syslog-ng日誌,配置文件爲:/etc/syslog-ng/syslog-ng.conf。請根據實際環境配置。
安全基線項目名稱 應關閉不須要的系統服務、默認共享和高危端口;
實施操做
一、查看開放的服務列表
chkconfig --list 或 systemctl list-unit-files|grep
二、以下方式禁用沒必要要的服務
service <服務名> stop chkconfig --level 2345 <服務名> off 或 systemctl stop <服務名> systemctl disable <服務名>
三、查看並確認是否開放的端口都爲業務須要端口,是否已經關閉非必需的端口
netstat -ntlp
備註 參考說明
Linux/Unix系統服務中,部分服務存在較高安全風險,應當禁用,包括:
「lpd」,此服務爲行式打印機後臺程序,用於假脫機打印工做的UNIX後臺程序,此服務一般狀況下不用,建議禁用;
「telnet」,此服務採用明文傳輸數據,登錄信息容易被竊取,建議用ssh代替;
「routed」,此服務爲路由守護進程,使用動態RIP路由選擇協議,建議禁用;
「sendmail」,此服務爲郵件服務守護進程,非郵件服務器應將其關閉;
「Bluetooth」,此服務爲藍牙服務,若是不須要藍牙服務時應關閉等
安全基線項目名稱 應遵循最小安裝的原則,僅安裝須要的組件和應用程序;應經過設定終端接入方式或網絡地址範圍對經過網絡進行管理的管理終端進行限制;應能發現可能存在的已知漏洞,並在通過充分測試評估後,及時修補漏洞
實施操做
一、查看操做系統中已安裝的程序包,詢問是否有目前不須要的組件和應用程序,高風險且不須要的組件,建議卸載
yum list installed
二、查看並確認是否開放的端口都爲業務須要端口,是否已經關閉非必需的端口
netstat -ntlp
三、查看在/etc/hosts.deny中是否有「ALL:ALL",禁止全部的請求:在/etc/hosts.allow中,是否有以下配置(舉例):sshd:192.168.31.100/255.255.255.0)若是安裝有主機防火牆則查看有無登陸地址限制
cat /etc/hosts.deny cat /etc/hosts.allow
四、訪談並查看檢測的措施
(1)常常經過以下命令查看的重要線索(例如Telnet.FTP等),涉及命令
more /var/log/secure l grep refused
(2)查看是否啓用了主機防火牆、TCPSYN保護機制等設置。
(3)訪談系統管理員是否安裝了主機檢測軟件。查看已安裝的主機,檢查系統的配置狀況,是否具有報警功能。
(4)檢查是否安裝了主機檢測軟件,如Dragon Squire by Enterasys Networks,ITA by Symantec.Hostsentry by Psionic Software.Logcheck by Psiomc Software.RealSecure-agent by ISS。
(5)查看網絡拓撲圖,查看網絡上是否部署了網絡檢測系統,如IDS。
備註
須要安裝net-tools以支持netstat命令
yum -y install net-tools