萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux 伺服器基礎安全強化完整指南

Linux 伺服器基礎安全防護體系建設

面對日益嚴峻的網路威脅,Linux 伺服器的基礎安全強化是運維工作的重中之重。本文系統梳理賬號管控、密碼策略、審計追蹤、權限提升機制四大核心維度,提供可落地的配置標準與最佳實踐。

一、賬號安全:最小權限與生命週期管理

1.1 禁用非必要登入 Shell

針對系統服務賬號(如 daemon、mail、games 等),應將登入 Shell 設為 /sbin/nologin 或 /usr/sbin/nologin:

usermod -s /sbin/nologin daemon
usermod -s /sbin/nologin mail

批次處理腳本範例:

for user in $(awk -F: '$3 < 1000 && $7 != "/sbin/nologin" && $7 != "/bin/false" {print $1}' /etc/passwd); do
    usermod -s /sbin/nologin "$user"
done

1.2 鎖定/清理閒置與無效賬號

  • 鎖定長期未登入賬號: usermod -L username 或 passwd -l username
  • 查詢 90 天未登入賬號: lastlog -b 90
  • 刪除無用賬號: userdel -r username(-r 同時刪除家目錄與郵件佇列)

1.3 關鍵系統檔案不可變屬性保護

使用 chattr +i 鎖定核心認證檔案,防止竄改:

chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow
lsattr /etc/passwd /etc/shadow  # 驗證輸出應含 'i' 屬性

操作前必讀:鎖定後無法新增/刪除使用者、修改密碼,維護窗口期間需先 chattr -i 解鎖,完畢後立即恢復。

二、密碼安全:強制複雜度與輪換機制

2.1 登入定義檔

編輯 /etc/login.defs 設定全域密碼策略:

PASS_MAX_DAYS   90      # 密碼最大使用天數
PASS_MIN_DAYS   7       # 密碼最小變更間隔天數
PASS_MIN_LEN    12      # 密碼最小長度
PASS_WARN_AGE   14      # 到期前警告天數

2.2 PAM 密碼品質模組

安裝 libpam-pwquality(Debian/Ubuntu)或 pam_pwquality.so(RHEL/CentOS),編輯 /etc/pam.d/common-password 或 /etc/pam.d/system-auth:

password requisite pam_pwquality.so retry=3 minlen=12 dcredit=-1 ucredit=-1 ocredit=-1 lcredit=-1 difok=3 enforce_for_root

參數說明:至少 12 字元、含 1 個數字、1 個大寫、1 個小寫、1 個特殊字元、新舊密碼至少 3 字元不同、root 同樣強制。

2.3 既有使用者強制變更密碼

chage -d 0 username        # 下次登入強制修改
chage -M 90 username       # 設定單一使用者最大天數

三、命令審計與會話管控

3.1 歷史記錄安全化

編輯 /etc/profile(全域)或 ~/.bashrc(用戶級):

export HISTSIZE=1000              # 記憶體中保留條數
export HISTFILESIZE=2000          # 檔案中保留條數
export HISTTIMEFORMAT="%F %T "    # 含時間戳記
export HISTCONTROL=ignoredups:erasedups  # 忽略重複、刪除重複
export PROMPT_COMMAND="history -a"       # 即時追加寫入檔案

3.2 登出自動清理與閒置登出

~/.bash_logout:

history -c
clear

~/.bash_profile 或 /etc/profile.d/timeout.sh:

export TMOUT=600  # 600 秒無操作自動登出(僅對互動式 Shell 生效)
readonly TMOUT

四、su/sudo 權限提升管控

4.1 限制 su 僅允許 wheel 群組使用

編輯 /etc/pam.d/su,啟用 pam_wheel.so:

auth required pam_wheel.so use_uid group=wheel

將受信任管理員加入 wheel 群組:

gpasswd -a adminuser wheel

4.2 sudo 精細授權策略

使用 visudo 編輯 /etc/sudoers 或 /etc/sudoers.d/ 下建立專屬規則檔:

# 允許 webadmin 以 www-data 身分重啟 nginx,免密
webadmin ALL=(www-data) NOPASSWD: /bin/systemctl reload nginx

# 允許 dba 執行資料庫備份腳本,需輸入自身密碼
dba ALL=(postgres) /usr/local/bin/pg_backup.sh

# 禁止高風險指令
Cmnd_Alias DANGEROUS = /bin/rm -rf /, /sbin/mkfs*, /sbin/fdisk*, /usr/bin/passwd root
adminuser ALL=ALL, !DANGEROUS

4.3 sudo 日誌審計

確保 /etc/sudoers 含:

Defaults logfile="/var/log/sudo.log"
Defaults log_input, log_output  # 記錄輸入/輸出(需磁碟空間,謹慎啟用)

定期審閱 /var/log/secure(RHEL)或 /var/log/auth.log(Debian)中的 su/sudo 記錄。

五、持續安全基線檢查

  • 部署 Lynis(lynis audit system)定期自動掃描
  • 訂閱發行版安全公告(如 Ubuntu USN、Red Hat RHSA)並及時修補
  • 實施檔案完整性監控(AIDE/Tripwire)偵測關鍵檔案竄改
  • 啟用審計框架:auditd 監控敏感系統呼叫(auditctl -w /etc/passwd -p wa -k passwd_changes)

結語

安全非一次性設定,而是持續演進的過程。建立基線、自動化合規檢查、最小權限原則、完整審計日誌,四大支柱缺一不可。將上述措施納入 Ansible/Playbook 或 Terraform 模組,實現基礎設施即代碼的安全交付。

copyright © 萬盛學電腦網 all rights reserved