Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 用戶管理安全加固實戰:清理預設帳號、強化密碼策略、會話超時與關鍵檔案鎖定

編輯:Linux 教學

用戶帳號是 Linux 系統存取控制的第一道防線。預設安裝往往保留大量無用的系統帳號、寬鬆的密碼策略、無限制的會話存活期,以及可被惡意竄改的認證檔案。本文提供一套經生產環境驗證的「四步走」加固方案:清理冗餘帳號 → 強化密碼複雜度 → 強制會話超時 → 鎖定關鍵認證檔案,配合命令範例與原理解析,助你快速提升主機基線安全等級。

一、清理預設無用帳號與群組

風險分析

標準安裝會建立 adm、lp、sync、shutdown、halt、news、uucp、operator、games、gopher 等帳號,對應群組同名。這些帳號:

  • 擁有合法 UID/GID,可被攻擊者利用 su、ssh 嘗試弱口令登入。
  • 部分帳號(如 shutdown、halt)擁有特殊 Shell,可能被利用提權或拒絕服務。
  • 擴大攻擊面,增加審計噪音。

清理命令(謹慎執行,確認業務無依賴)

# 刪除用戶帳號
for u in adm lp sync shutdown halt news uucp operator games gopher; do
    userdel $u 2>/dev/null
done

# 刪除對應群組
for g in adm lp news uucp games dip; do
    groupdel $g 2>/dev/null
done

# 驗證
getent passwd | grep -E 'adm|lp|sync|shutdown|halt|news|uucp|operator|games|gopher'
getent group  | grep -E 'adm|lp|news|uucp|games|dip'

注意:root、daemon、bin、sys、nobody 等核心系統帳號不可刪除。刪除前建議備份 /etc/passwd、/etc/group、/etc/shadow、/etc/gshadow。

二、強化密碼複雜度與存活期策略

修改 /etc/login.defs

PASS_MAX_DAYS   90      # 密碼最長使用天數(原 99999)
PASS_MIN_DAYS   7       # 密碼最短變更間隔(原 0,防止立即改回舊密碼)
PASS_MIN_LEN    12      # 密碼最小長度(原 5,建議 ≥12)
PASS_WARN_AGE   14      # 過期前警告天數(原 7)

配合 PAM 模組強制複雜度(/etc/security/pwquality.conf)

minlen = 12
dcredit = -1    # 至少 1 個數字
ucredit = -1    # 至少 1 個大寫
lcredit = -1    # 至少 1 個小寫
ocredit = -1    # 至少 1 個特殊字元
retry = 3       # 重試次數
enforce_for_root

確保 /etc/pam.d/system-auth(或 password-auth)包含:

password    requisite     pam_pwquality.so try_first_pass local_users_only
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5
password    required      pam_deny.so

remember=5 禁止重用最近 5 次密碼。

三、強制會話閒置超時自動登出

風險

管理員離席未鎖定終端,root Shell 長期閒置,極易被物理/遠程接管。

配置 /etc/profile(全域生效,含 SSH 登入 Shell)

# 在 HISTSIZE 行後新增
TMOUT=300
readonly TMOUT
export TMOUT
  • 300 = 300 秒(5 分鐘)無操作自動登出。
  • readonly 防止用戶在 Shell 中 unset TMOUT 繞過。

補充:SSH 服務端亦可配置 /etc/ssh/sshd_config:

ClientAliveInterval 60
ClientAliveCountMax 5
# 60 秒發一次心跳,5 次無回應斷開(共 300 秒),需重啟 sshd 生效

四、鎖定關鍵認證檔案防竄改

使用 chattr +i 設定不可變屬性

chattr +i /etc/passwd
chattr +i /etc/shadow
chattr +i /etc/group
chattr +i /etc/gshadow

驗證與管理

lsattr /etc/passwd /etc/shadow /etc/group /etc/gshadow
# 輸出應含 'i' 屬性:----i---------e---- /etc/passwd

# 需修改用戶/密碼時,先解鎖
chattr -i /etc/passwd /etc/shadow /etc/group /etc/gshadow
# 修改完成後立即重新鎖定
chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow

原理:i(immutable)屬性由 ext2/3/4、xfs 等檔案系統在 VFS 層強制,即使 root 也無法修改/刪除/重命名/建立硬連結,除非先移除屬性。此為「竄改成本極高」的最後一道防線。

五、驗證加固成效腳本

#!/bin/bash
echo "=== 用戶管理基線檢查 ==="
echo "1. 無用帳號殘留:"
getent passwd | awk -F: '$3 < 1000 && $3 != 0 {print $1}' | grep -Ev 'root|daemon|bin|sys|nobody' || echo "  通過"

echo "2. 密碼策略:"
grep -E 'PASS_MAX_DAYS|PASS_MIN_DAYS|PASS_MIN_LEN|PASS_WARN_AGE' /etc/login.defs
grep -E 'minlen|dcredit|ucredit|lcredit|ocredit' /etc/security/pwquality.conf

echo "3. 會話超時:"
grep TMOUT /etc/profile /etc/bashrc 2>/dev/null || echo "  未配置"
grep ClientAlive /etc/ssh/sshd_config

echo "4. 關鍵檔案鎖定:"
lsattr /etc/passwd /etc/shadow /etc/group /etc/gshadow | grep 'i' || echo "  未鎖定"
echo "========================"

六、總結

加固項目關鍵動作風險降低
清理預設帳號userdel/groupdel 批次移除收縮攻擊面,消除弱口令切入點
密碼複雜度/存活期login.defs + pwquality.conf + PAM抵禦暴力破解、字典攻擊、密碼重用
會話超時TMOUT=300 + readonly + SSH ClientAlive防止無人值守終端被劫持
認證檔案鎖定chattr +i 四大檔案提高竄改成本,延緩攻擊者持久化

將上述四步納入「主機基線映像」或 Ansible/Playbook 自動化部署,即可實現新機上架即合規、存量機定期掃描修復,構建可度量、可審計的用戶管理安全體系。

Copyright © Windows教程網 All Rights Reserved