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/a\password 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/a\auth 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/i\account required pam_tally2.so' /etc/pam.d/system-auth-ac
# sed -i'/auth[[:space:]]*required[[:space:]]*pam_env.so/a\auth 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/i\account 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