談談企業--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 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/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 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/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相關高風險文件

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





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章