首頁 > 軟體

RedHat Linux作業系統安裝設定規範

2020-06-16 17:12:18

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 56ntpd服務將自動退出,在RedHat Enterprise Linux Server 7chronyd服務將忽略跳過

  • 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時進行輪換,保持最後4log,可以通過/etc/audit/auditd.conf進行設定,修改如下選項:

  • num_logs = 4      #個數

  • max_log_file = 50  # 大小(MB)

  • l  預設情況下,審計紀錄檔為每20flush一次,為了防止由於大量後台指令碼執行產生的審計紀錄檔在頻繁flush到磁碟,導致磁碟使用率過高(特別是沒有cache直接落盤的RAID卡),所以需要修改flush模式為NONE。可以通過編輯audit組態檔/etc/audit/auditd.conf進行設定,修改如下選項:

  • flush = NONE

    具體審計設定請參照我博文的audit審計

  • 啟動auditsyslog/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 56:

# 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 56:

# 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之外UID0的使用者。

系統中每一個使用者都被分配一個使用者ID號,ID 號為 0 是為 root 保留的,UID 1-499 是為系統其它預定義的帳號保留的,UID0擁有系統的最高特權,為了系統安全需要封存root賬號,採用qadmsom賬戶進行日常管理,應保證只有rootqadmsom使用者的UID0

檢查方法:

# 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相關高風險檔案

rcprshrlogin等遠端拷貝和登入命令會使用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


IT145.com E-mail:sddin#qq.com