在 Linux 環境中,root 帳戶與 umask 設定對於系統安全至關重要。不正確的設定可能導致未授權存取和安全漏洞。本文將介紹如何檢查和設定 root 帳戶的預設群組 GID 和 umask,以符合安全性最佳實務。同時,也涵蓋了相關系統檔案許可權的設定,例如 /etc/passwd、/etc/shadow 等,以確保系統的整體安全性。文章內容也對應到 CIS Controls Version 7 的相關控制項,提供更全面的安全強化參考。
加強 Linux 系統安全:確保 root 帳戶預設群組與使用者 umask 設定
在 Linux 系統管理中,確保系統安全性是首要任務。其中,設定 root 帳戶的預設群組以及預設的使用者 umask 是強化系統安全性的重要步驟。本文將探討這兩個設定的重要性、稽核方法以及如何進行修正。
5.4.3 確保 root 帳戶的預設群組 GID 為 0
描述與原理
root 帳戶的預設群組對於系統安全性有著直接的影響。使用 usermod 命令可以指定 root 使用者所屬的群組。將 root 帳戶的預設群組設定為 GID 0,可以有效防止 root 擁有的檔案意外地變得可被非特權使用者存取。
稽核方法
執行以下命令來驗證 root 帳戶的預設群組 GID 是否為 0:
# grep "^root:" /etc/passwd | cut -f4 -d:
0
若輸出結果為 0,則表示設定正確。
修正方法
若稽核結果不符合要求,可以執行以下命令將 root 使用者的預設群組設定為 GID 0:
# usermod -g 0 root
CIS 控制相關內容
此設定符合 CIS Controls Version 7 中的 14.6 Protect Information through Access Control Lists,強調透過存取控制列表來保護系統上的所有資訊。
5.4.4 確保預設使用者 umask 為 027 或更具限制性
描述與原理
umask(使用者檔案建立模式遮罩)用於決定新建立的目錄和檔案的許可權。在 Linux 中,新建立的目錄預設許可權為 0777(rwxrwxrwx),新建立的檔案預設許可權為 0666(rw-rw-rw-)。umask 會修改這些預設許可權,透過遮罩(masking)來限制許可權。
umask 可以使用八進位(數字)值或符號值來設定。正確設定 umask 可以確保使用者建立的檔案和目錄具有適當的許可權,從而提高系統安全性。
稽核方法
執行以下指令碼來驗證預設使用者 umask 是否設定為 027 或更具限制性:
#!/bin/bash
passing=""
grep -Eiq '^\s*UMASK\s+(0[0-7][2-7]7|[0-7][2-7]7)\b' /etc/login.defs && grep -Eq '^\s*session\s+(optional|requisite|required)\s+pam_umask\.so\b' /etc/pam.d/common-session && passing=true
grep -REiq '^\s*UMASK\s+\s*(0[0-7][2-7]7|[0-7][2-7]7|u=(r?|w?|x?)(r?|w?|x?)(r?|w?|x?),g=(r?x?|x?r?),o=)\b' /etc/profile* /etc/bash.bashrc* && passing=true
[ "$passing" = true ] && echo "Default user umask is set"
輸出結果應為 “Default user umask is set”。
另外,執行以下命令來驗證系統中是否沒有設定較不具限制性的 umask:
# grep -RPi '(^|^[^#]*)\s*umask\s+([0-7][0-7][01][0-7]\b|[0-7][0-7][0-7][0-6]\b|[0-7][01][0-7]\b|[0-7][0-7][0-6]\b|(u=[rwx]{0,3},)?(g=[rwx]{0,3},)?o=[rwx]+\b|(u=[rwx]{1,3},)?g=[^rx]{1,3}(,o=[rwx]{0,3})?\b)' /etc/login.defs /etc/profile* /etc/bash.bashrc*
不應傳回任何檔案。
#### 內容解密:
grep命令使用正規表示式來搜尋特定的模式,例如在/etc/login.defs和其他設定檔中查詢符合特定 umask 設定的行。usermod -g 0 root命令將 root 使用者的預設群組更改為 GID 0,這樣可以增強安全性,防止 root 檔案被非授權存取。- 指令碼檢查多個設定檔,包括
/etc/login.defs、/etc/profile*和/etc/bash.bashrc*,以確保 umask 設定的一致性和安全性。 pam_umask.so模組用於根據系統預設值和使用者設定來設定 umask,解決了不同 shell 和登入方式下 umask 設定不一致的問題。
加強 Linux 系統安全性:組態與最佳實踐
在維護 Linux 系統的安全性時,管理員需要關注多個層面,包括使用者許可權、登入設定和系統組態。本文將探討幾個重要的安全設定,包括預設 umask 設定、shell 超時設定、root 登入限制以及 su 指令的存取控制。
5.4.4 確保預設的 umask 設定為 027 或更嚴格
系統中的 umask 值決定了新建立檔案和目錄的預設許可權。設定一個適當的 umask 值可以防止未授權的使用者存取敏感資料。
風險與影響
- 不當的
umask設定可能導致敏感檔案被未授權存取。 - 預設值
022可能過於寬鬆,允許群組和其他使用者讀取新建立的檔案。
稽核與修復
- 編輯
/etc/login.defs,將UMASK設定為027。 - 在
/etc/pam.d/common-session中新增或編輯session optional pam_umask.so。 - 執行命令
grep -RPi '(^|^[^#]*)\s*umask\s+([0-7][0-7][01][0-7]\b|[0-7][0-7][0-7][0-6]\b|[0-7][01][0-7]\b|[0-7][0-7][0-6]\b|(u=[rwx]{0,3},)?(g=[rwx]{0,3},)?o=[rwx]+\b|(u=[rwx]{1,3},)?g=[^rx]{1,3}(,o=[rwx]{0,3})?\b)' /etc/login.defs /etc/profile* /etc/bash.bashrc*,檢查並修改不符合規範的umask設定。
CIS 控制對應
- CIS Controls Version 7: 14.6 Protect Information through Access Control Lists
5.4.5 確保預設的使用者 shell 超時為 900 秒或更少
設定 shell 超時可以減少未授權使用者存取閒置終端機的風險。
風險與影響
- 未設定超時可能導致閒置的終端機會被未授權使用者利用。
稽核與修復
- 在
/etc/profile.d/目錄下的.sh檔案、/etc/profile或/etc/bash.bashrc中設定TMOUT=900。 - 確保
TMOUT被設定為只讀並匯出:readonly TMOUT; export TMOUT。 - 執行命令檢查組態是否正確:
for f in /etc/bash.bashrc /etc/profile /etc/profile.d/*.sh ; do grep -Eq '(^|^[^#]*;)\s*(readonly|export(\s+[^$#;]+\s*)*)?\s*TMOUT=(900|[1-8][0-9][0-9]|[1-9][0-9]|[1-9])\b' $f && grep -Eq '(^|^[^#]*;)\s*readonly\s+TMOUT\b' $f && grep -Eq '(^|^[^#]*;)\s*export\s+([^$#;]+\s+)*TMOUT\b' $f && echo "TMOUT correctly configured in file: $f"; done
CIS 控制對應
- CIS Controls Version 7: 16.11 Lock Workstation Sessions After Inactivity
5.6 確保 root 登入僅限於系統主控台
限制 root 登入可以減少系統被未授權存取的風險。
風險與影響
- 未受限制的 root 登入可能導致系統被未授權存取。
稽核與修復
- 檢查
/etc/securetty檔案,移除不必要的終端機條目。 - 確保只有物理上安全的終端機被列在
/etc/securetty中。
CIS 控制對應
- CIS Controls Version 7: 4.3 Ensure the Use of Dedicated Administrative Accounts
5.6 確保 su 指令的存取受到限制
限制 su 指令的使用可以提高系統的安全性,並鼓勵使用 sudo 進行精細的許可權控制。
風險與影響
- 不受限制的
su指令可能導致未授權的使用者獲得提升的許可權。
稽核與修復
- 編輯
/etc/pam.d/su,取消註解pam_wheel.so的設定行,以限制su的使用。 - 確保指定的群組是空的,以強制使用
sudo。
# grep pam_wheel.so /etc/pam.d/su
auth required pam_wheel.so use_uid group=<group_name>
# grep <group_name> /etc/group
<group_name>:x:<GID>:
CIS 控制對應
無直接對應,但與 CIS Controls Version 7 中的多項控制相關,特別是在存取控制和特權管理方面。
6 系統維護
本章節提供系統維護的建議,旨在確保系統的穩定性和安全性。許多建議需要頻繁檢查,以確保系統保持最佳狀態。
6.1 系統檔案許可權
本小節提供如何保護系統檔案和目錄的指導。
6.1.1 審核系統檔案許可權(手動)
適用設定檔:
- Level 2 - 伺服器
- Level 2 - 工作站
描述:
Debian 套件管理器提供了多種有用的選項,其中 --verify 選項可用於驗證系統套件是否正確安裝。此選項可用於驗證特定的套件或所有系統套件。如果沒有輸出,則表示套件安裝正確。下表描述了驗證選項輸出的含義:
| 程式碼 | 含義 |
|---|---|
| S | 檔案大小不同。 |
| M | 檔案模式不同(包括許可權和檔案型別)。 |
| 5 | MD5 校驗和不同。 |
| D | 裝置檔案的主次版本號不同。 |
| L | 連結不匹配。 |
| U | 檔案所有者不同。 |
| G | 檔案群組所有者不同。 |
| T | 檔案時間(mtime)不同。 |
dpkg -S 命令可用於確定特設定檔案屬於哪個套件。例如,以下命令確定 /bin/bash 檔案屬於哪個套件:
# dpkg -S /bin/bash
bash: /bin/bash
要驗證控制 /bin/bash 檔案的套件設定,請執行以下命令:
# dpkg --verify bash
??5?????? c /etc/bash.bashrc
理由:
確認系統檔案和目錄的許可權是否符合作業系統供應商的預期是非常重要的。
審核:
執行以下命令以審核所有已安裝的套件。請注意,這可能非常耗時,最好透過 cron 工具排程。建議將此命令的輸出重定向到一個檔案,以便稍後檢視。
# dpkg --verify <套件名稱>
修復:
修正發現的任何不一致之處,並重新執行審核,直到輸出乾淨或風險被降低或接受。
6.1.2 確保 /etc/passwd 的許可權組態正確(自動)
適用設定檔:
- Level 1 - 伺服器
- Level 1 - 工作站
描述:
/etc/passwd 檔案包含使用者帳戶資訊,供許多系統實用程式使用,因此必須對這些實用程式可讀。
理由:
確保 /etc/passwd 檔案受到保護,不受未經授權的寫入存取非常重要。儘管它預設受到保護,但檔案許可權可能會被無意或惡意更改。
審核:
執行以下命令並驗證 Uid 和 Gid 是否均為 0/root,且存取許可權為 644:
# stat /etc/passwd
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
修復:
執行以下命令以設定 /etc/passwd 的許可權:
# chown root:root /etc/passwd
# chmod 644 /etc/passwd
#### 內容解密:
chown root:root /etc/passwd:將/etc/passwd的擁有者和群組修改為root,確保只有root使用者能夠修改該檔案。chmod 644 /etc/passwd:將/etc/passwd的許可權設定為644(即-rw-r--r--),表示root使用者具有讀寫許可權,而其他使用者僅具有讀取許可權。
6.1.3 確保 /etc/passwd- 的許可權組態正確(自動)
描述:
/etc/passwd- 檔案包含備份的使用者帳戶資訊。
理由:
確保 /etc/passwd- 檔案受到保護,不受未經授權的存取非常重要。
審核:
執行以下命令並驗證 Uid 和 Gid 是否均為 0/root,且存取許可權為 644 或更具限制性:
# stat /etc/passwd-
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
修復:
執行以下命令以設定 /etc/passwd- 的許可權:
# chown root:root /etc/passwd-
# chmod u-x,go-wx /etc/passwd-
#### 內容解密:
chown root:root /etc/passwd-:將/etc/passwd-的擁有者和群組修改為root,確保該檔案的安全性。chmod u-x,go-wx /etc/passwd-:設定/etc/passwd-的許可權,移除使用者執行許可權和其他使用者寫入和執行許可權,確保該檔案不被未授權修改。
6.1.4 確保 /etc/group 的許可權組態正確(自動)
描述:
/etc/group 檔案包含系統中定義的所有有效群組的列表。
理由:
/etc/group 檔案需要被保護,以防止非特權使用者未經授權的更改,但需要對許多非特權程式可讀。
審核:
執行以下命令並驗證 Uid 和 Gid 是否均為 0/root,且存取許可權為 644:
# stat /etc/group
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
修復:
執行以下命令以設定 /etc/group 的許可權:
# chown root:root /etc/group
# chmod u-x,go-wx /etc/group
#### 內容解密:
chown root:root /etc/group:將/etc/group的擁有者和群組修改為root,確保該檔案的安全性。chmod u-x,go-wx /etc/group:設定/etc/group的許可權,移除使用者執行許可權和其他使用者寫入和執行許可權,確保該檔案的安全性和正確性。
Linux 系統檔案許可權設定
在 Linux 系統安全管理中,檔案許可權的設定是至關重要的環節。適當的檔案許可權可以有效防止未授權的存取,從而保護系統的安全。本文將重點介紹如何設定關鍵系統檔案的許可權,以增強系統的安全性。
/etc/group- 檔案許可權設定
/etc/group- 檔案包含了系統中所有有效群組的備份列表。確保該檔案受到保護免受未授權的存取至關重要。
檢查方法
執行以下命令,驗證 Uid 和 Gid 是否均為 0/root,且存取許可權為 644 或更嚴格:
stat /etc/group-
預期輸出:
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
修復方法
執行以下命令,設定 /etc/group- 的許可權:
chown root:root /etc/group-
chmod u-x,go-wx /etc/group-
內容解密:
chown root:root /etc/group-:將/etc/group-的擁有者和群組變更為 root,確保只有 root 使用者能夠修改該檔案。chmod u-x,go-wx /etc/group-:設定/etc/group-的許可權,移除使用者執行許可權以及群組和其他使用者的寫入和執行許可權,確保該檔案不會被未授權修改。
/etc/shadow 和 /etc/shadow- 檔案許可權設定
/etc/shadow 和 /etc/shadow- 檔案儲存了使用者帳戶的安全資訊,如雜湊密碼和其他安全設定。保護這些檔案免受未授權存取對於系統安全至關重要。
檢查方法
執行以下命令,驗證 Uid 為 0/root,Gid 為 0/root 或 <gid>/shadow,且存取許可權為 640 或更嚴格:
stat /etc/shadow
stat /etc/shadow-
預期輸出:
Access: (0640/-rw-r
---
--) Uid: ( 0/ root) Gid: ( 0/ root)
或
Access: (0640/-rw-r
---
--) Uid: ( 0/ root) Gid: ( 42/ shadow)
修復方法
執行以下命令,設定 /etc/shadow 和 /etc/shadow- 的擁有者和許可權:
chown root:root /etc/shadow
# 或 chown root:shadow /etc/shadow
chmod u-x,g-wx,o-rwx /etc/shadow
chown root:root /etc/shadow-
# 或 chown root:shadow /etc/shadow-
chmod u-x,g-wx,o-rwx /etc/shadow-
內容解密:
chown root:root /etc/shadow和chown root:root /etc/shadow-:將/etc/shadow和/etc/shadow-的擁有者和群組變更為 root,或將群組變更為 shadow 群組,以確保只有授權的使用者能夠存取。chmod u-x,g-wx,o-rwx /etc/shadow和chmod u-x,g-wx,o-rwx /etc/shadow-:移除使用者執行許可權、群組寫入和執行許可權,以及其他使用者的所有許可權,以保護檔案不被未授權存取。
/etc/gshadow 和 /etc/gshadow- 檔案許可權設定
/etc/gshadow 和 /etc/gshadow- 檔案儲存了與群組相關的安全資訊。保護這些檔案對於防止密碼破解和其他安全威脅至關重要。
檢查方法
執行以下命令,驗證 Uid 為 0/root,Gid 為 0/root 或 <gid>/shadow,且存取許可權為 640 或更嚴格:
stat /etc/gshadow
stat /etc/gshadow-
預期輸出與 /etc/shadow 類別似。
修復方法
執行以下命令,設定 /etc/gshadow 和 /etc/gshadow- 的擁有者和許可權:
chown root:root /etc/gshadow
# 或 chown root:shadow /etc/gshadow
chmod u-x,g-wx,o-rwx /etc/gshadow
chown root:root /etc/gshadow-
# 或 chown root:shadow /etc/gshadow-
chmod u-x,g-wx,o-rwx /etc/gshadow-
內容解密:
與 /etc/shadow 的設定類別似,這些命令確保了 /etc/gshadow 和 /etc/gshadow- 的安全。