2021-05-12 14:32:11
RedHat Linux作業系統安裝設定規範
1、談談規範的那些事
-
首先思考為什麼要規範,規範有哪些好處、怎樣去規範、規範可以避免哪些風險,當伺服器超過幾百上千台的時候,規範的重要性越發的尤為重要,廢話不多說,淺談下自己的規範文件。
RedHat Linux作業系統安裝設定規範
-
1.1 版本選擇
-
根據應用的要求,並結合硬體型別,選擇適當的作業系統版本。
-
至本規範最後更新時,新安裝作業系統允許使用的版本如下:
-
RedHatEnterprise Linux Server 6.4
-
RedHatEnterprise Linux Server 7.2
-
軟體包選擇:作業系統安裝的初始軟體包選擇建議如下
-
軟體包名稱
軟體包說明
base(組)
作業系統基礎包
compat-libraries(組)
作業系統相容性庫包,提供對老版本軟體的支援
hardware-monitoring(組)
硬體監控工具,提升系統定位能力
large-systems(組)
大型系統工具集包,提供cgroup等管理工具
legacy-unix(組)
Unix相容性包
performance(組)
效能定位和監控工具,及時了解系統瓶頸
ksh
ksh,監控軟體和傳統unix工具依賴
ftp
ftp用戶端,環境維護管理員使用
telnet
telnet用戶端,環境維護管理員使用
-
l VMware虛擬機器中,須取消VMware Tools設定項中的“在虛擬機器和ESX Server操作系統之間進行時間同步”。
-
l 作業系統應開啟時間同步服務,以進行時間同步,設定方法如下:
-
在RedHat Enterprise Linux Server 6上:
-
(1) 新增時鐘同步伺服器,在/etc/ntp.conf檔案中增加如下設定:
-
server IP prefer
-
server IP
-
service ntpd restart
-
chkconfig ntpd on
-
時間同步最大閥值應設定為500秒,伺服器與時間伺服器的時間誤差超過500秒時應停止同步,在RedHat Enterprise Linux Server 5和6上ntpd服務將自動退出,在RedHat Enterprise Linux Server 7上chronyd服務將忽略跳過
-
1.2 服務的設定
-
為提高系統的穩定性,減少系統網路設定上的安全漏洞,如非特殊需要,建議關閉以下系統服務:
-
服務名稱
服務描述
cups
列印服務
postfix
郵件服務(RHEL5上的郵件服務是sendmail)
pcscd
smart卡登入服務
smartd
磁碟監控服務,對於做過RAID的磁碟無效
alsasound
音效卡服務
iscsitarget
iscsi target服務
smb
與windows互存取的檔案服務
acpid
acpi高階電源管理服務
iptables
ipv4防火牆服務
ip6tables
ipv6防火牆服務
firewall
防火牆服務(RHEL7上才有的)
-
命令時間戳記錄
-
在/etc/bashrc檔案中增加如下行:
-
export HISTTIMEFORMAT="%F %T "
-
1.3 ulimit設定
-
不恰當的limit設定會導致系統或者應用程式執行出現錯誤,應對/etc/security/limits.conf組態檔中的引數進行設定,並將/etc/security/limits.d/90-nproc.conf組態檔中的以下行注釋:
-
#* soft nproc 1024
-
組態檔/etc/security/limits.conf中主要引數的說明及設定值如下所示:
-
l 應用程式core大小設定,為防止大量的core檔案佔用系統,建議應用程式core大小限制為100M以下,在組態檔中增加如下兩行:
-
* soft core 102400
-
* hard core 102400
-
1.4 系統敏感檔案許可權設定
-
# chmod 400 /etc/crontab
-
# chmod 400 /etc/securetty
-
# chmod 600 /boot/grub/grub.conf
-
# chmod 600/boot/grub2/grub.cfg (僅針對RHEL7)
-
# chmod 600 /etc/inittab
-
# chmod 600/etc/login.defs
-
-
檢視設定結果
-
ll /etc/crontab
-
ll /etc/securetty
-
ll /boot/grub/grub.conf
-
ll /etc/inittab
-
ll /etc/login.defs
-
1.5 紀錄檔審計策略設定
-
1. 統預設已經開啟syslog/rsyslog服務,禁止關閉。系統syslog/rsyslog服務會將所有系統紀錄檔自動記錄到/var/log/messages檔案中,系統紀錄檔永久保留。
-
2. 開啟audit審計功能,可以監控指定使用者或目錄,預設會監控root的所有登入和操作。
-
l 新增規則到 /etc/audit/audit.rules(RHEL7為/etc/audit/rules.d/audit.rules) 檔案中,實現監控所有使用者的登入行為,包含使用者所有操作,以及shell指令碼中的命令
-
-a exit,always -F arch=b64 -S execve -k exec
-
-a exit,always -F arch=b32 -S execve -k exec
-
新增後使用ausearch -k exec來列出使用者操作的記錄。
-
1. 設定audit紀錄檔,audit紀錄檔檔案自動儲存在/var/log/audit/目錄中。
-
l 每個log檔案超過50M時進行輪換,保持最後4個log,可以通過/etc/audit/auditd.conf進行設定,修改如下選項:
-
num_logs = 4 #個數
-
max_log_file = 50 # 大小(MB)
-
l 預設情況下,審計紀錄檔為每20條flush一次,為了防止由於大量後台指令碼執行產生的審計紀錄檔在頻繁flush到磁碟,導致磁碟使用率過高(特別是沒有cache直接落盤的RAID卡),所以需要修改flush模式為NONE。可以通過編輯audit組態檔/etc/audit/auditd.conf進行設定,修改如下選項:
-
flush = NONE
具體審計設定請參照我博文的audit審計
-
啟動audit和syslog/rsyslog服務,啟動審計服務:
-
# service auditd start
-
# chkconfig auditd on
-
1.6 系統核心引數設定
-
編號
預設值(如非特殊需要,不應修改)
說明
1
vm.min_free_kbytes = 16384
最小記憶體水平線,free記憶體低於此值,系統會強制回收記憶體。建議最大設定不要超過:64000 KB。應使用預設值。
最小值:128K, 最大值:65536K
2
vm.vfs_cache_pressure = 100
vfs層cache保留傾向,> 100表示系統嘗試多回收vfs cache,< 100表示系統儘量多保留vfs cache。
3
vm.dirty_ratio = 40
Page cache達到40% total memory(含swap)時,系統嘗試將cache回寫到磁碟,回收記憶體。
4
vm.page-cluster = 3
每次寫入swap的最小頁面數, 預設是2的3次方=8個頁面。
5
(需要根據記憶體大小使用計算公式來計算,例如8G記憶體:)
fs.file-max = 838860
kernel允許的最大檔案控制代碼數。系統啟動時根據記憶體自動調節,開啟一個檔案大概需要1k,總數不應超過系統記憶體的10%:計算公式為:
Max(N, NR_FILE)
N=(mempages * 4)/10
NR_FILE=4096
例如記憶體為8G的設定為(8*1024*1024/4)*4/10=838860
6
kernel.shmmax
共用記憶體的最大值,系統啟動時根據記憶體自動調節,如非特殊需要,不應修改。此值最大設定為實體記憶體的90%。
7
kernel.shmmni = 4096
共用記憶體的最小值,系統預設值為4096,如非特殊需要,不應修改。
8
kernel.core_uses_pid = 0(預設為1)
kernel.core_pattern = corefile/core-%e
應用程式core檔案的命名設定,為防止應用程式生成大量core檔案佔用系統空間,應用程式core檔案應設定為僅生成一個。其中core_pattern的路徑可修改為其他路徑。預設路徑為應用使用者家目錄,且沒有完全開啟,如需完全開啟,只需在應用使用者家目錄下建立corefile目錄即可(但需注意home目錄空間比應用程式所用記憶體要大)。
9
kernel.sysrq = 1
系統hung住時,可以使用Alt+Sysrq+c來收集vmcore
-
註:以上設定選項在/etc/sysctl.conf中修改,執行: sysctl -p 生效。
-
1.7 物理安全設定
-
應禁止使用usb儲存裝置,防止物理usb裝置引入木馬檔案。
# echo "install usb-storage /bin/true" >>/etc/modprobe.d/usb-storage.conf
必須禁止Control+Alt+Delete直接重新啟動伺服器:
# sed -i 's/^start oncontrol-alt-delete/#start on control-alt-delete/g' /etc/init/control-alt-delete.conf
1.8 口令策略設定
口令複雜度規定
密碼複雜性設定應滿足如下要求
l 密碼長度至少為8位,且含有如下字元型別中的四種:
英語大寫字母 A, B, C, … Z
英語小寫字母 a, b, c, … z
西方阿拉伯數位 0, 1, 2, … 9
非字母數位字元,如標點符號,@, #, $, %, &, *等
l 密碼歷史為10次,是指修改口令時禁止使用最近10次已使用過的密碼口令(己使用過的口令會被儲存在 /etc/security/opasswd 下面)。
在RedHat Enterprise Linux Server 5和6上:
# sed -i'/^password[[:space:]]{1,}requisite[[:space:]]{1,}pam_cracklib.so/apassword required pam_pwhistory.so use_authtok remember=10enforce_for_root' /etc/pam.d/system-auth-ac
口令有效期規定
所有使用者應滿足如下使用者口令策略,對於其他使用者,如無特殊要求,建議採用。修改/etc/login.defs檔案,修改如下引數的值:
l PASS_MAX_DAYS 90 (最長期限90天)
l PASS_MIN_DAYS 1 (最短期限1天)
l PASS_MIN_LEN 8 (最少8個字元)
l PASS_WARN_AGE 7 (提前7天提示密碼修改)
在RedHat Enterprise Linux Server 5和6上:
# sed -i"s/^(password[[:space:]]*requisite[[:space:]]*pam_cracklib.so).*/1try_first_pass retry=6 minlen=8 dcredit=-1 ucredit=-1 ocredit=-1 lcredit=-1enforce_for_root/g" /etc/pam.d/system-auth-ac
2.1 UID 0使用者設定
系統應禁止除root使用者及qadmsom之外UID為0的使用者。
系統中每一個使用者都被分配一個使用者ID號,ID 號為 0 是為 root 保留的,UID 號 1-499 是為系統其它預定義的帳號保留的,UID為0擁有系統的最高特權,為了系統安全需要封存root賬號,採用qadmsom賬戶進行日常管理,應保證只有root和qadmsom使用者的UID為0。
檢查方法:
# awk -F: '($3 == 0) {print $1 }' /etc/passwd
返回值包括“root”和“qadmsom”以外的條目,則應修正。
2.2 系統登入安全設定
針對系統登入進行加固,提升系統安全性。具體修改如下:
l 避免記錄不存在使用者的登入資訊,避免使用者誤輸入導致密碼洩露
# echo"LOG_UNKFAIL_ENAB yes">> /etc/login.defs
l 設定使用者密碼嘗試次數為6次,超過6次後使用者鎖定,避免暴力破解
# echo"LOGIN_RETRIES 6" >> /etc/login.defs
l 記錄使用者上次登入時間,使用者登入時給予提示
# echo "LASTLOG_ENAB yes" >> /etc/login.defs
2.3 系統全域性PROFILE安全設定
l 設定系統超時自動退出,建議設定成300秒
# echo "exportTMOUT=300" >> /etc/profile
l 設定命令歷史記錄條數為5000
# echo "exportHISTFILESIZE=5000 " >> /etc/profile
l 連續6次輸錯密碼禁用一段時間,建議設定成300秒
在RedHat Enterprise Linux Server 6上:
# sed -i'/auth[[:space:]]*required[[:space:]]*pam_env.so/aauth required pam_tally2.so onerr=fail deny=6unlock_time=300 even_deny_root root_unlock_time=300' /etc/pam.d/system-auth-ac
# sed -i '/account[[:space:]]*required[[:space:]]*pam_unix.so/iaccount required pam_tally2.so' /etc/pam.d/system-auth-ac
# sed -i'/auth[[:space:]]*required[[:space:]]*pam_env.so/aauth required pam_tally2.so onerr=fail deny=6unlock_time=300 even_deny_root root_unlock_time=300'/etc/pam.d/password-auth-ac
# sed -i'/account[[:space:]]*required[[:space:]]*pam_unix.so/iaccount required pam_tally2.so'/etc/pam.d/password-auth-ac
l 使用者預設的umask值為022,不應修改
2.4 刪除rhost相關高風險檔案
rcp,rsh,rlogin等遠端拷貝和登入命令會使用rshost相關檔案,這些命令存在較高風險,應禁止使用,並在實際使用中用scp, ssh等命令替代。其相關組態檔應該刪除。
刪除命令如下:
# rm /root/.rhosts /root/.shosts /etc/hosts.equiv /etc/shosts.equiv
如非特殊需要,應用管理員需要以應用賬號登陸,需要使用特權指令時,使用sudo許可權。使用以下方法來設定sudo許可權:
# visudo
例如:賦予Oracle使用者使用fdisk命令的許可權,在visudo命令開啟的組態檔最後新增:
#建立alias PRIVUSERS 然後新增 sudo 使用者oracle,這樣可以使多個使用者有相同的許可權
User_AliasPRIVUSERS = oracle
#建立 alias PRIVSERVICES 這樣便於以後可以新增多個命令
Cmnd_AliasPRIVSERVICES = /sbin/fdisk
#指定之前建立的alias給指定的使用者/使用者組
PRIVUSERSALL=(ALL) PRIVSERVICES
sudo使用方法:
以oracle使用者在執行命令前加sudo,然後輸入oracle使用者的密碼(非root密碼)
oracle$sudo /sbin/fdisk -l
本文永久更新連結地址:http://www.linuxidc.com/Linux/2017-06/144955.htm
相關文章