保護關鍵配置文件 (nginx.conf, sshd_config, passwd, shadow) 防止誤修改、惡意篡改、勒索病毒加密,需構建權限控制 (DAC) + 強制屬性 (MAC-like) 雙重防線。本文詳解 chmod 600 最小權限原則、chattr +i 不可變屬性原理與操作、lsattr 查看、解除保護、典型保護清單、容器/只讀掛載增強方案。
# 僅擁有者 (root) 可讀寫,組/其他無任何權限
chmod 600 /etc/nginx/nginx.conf
chmod 600 /etc/ssh/sshd_config
chmod 600 /etc/shadow
# 驗證
ls -l /etc/nginx/nginx.conf
# -rw------- 1 root root 2345 Jan 1 12:00 nginx.conf
sudo、內核模塊、掛載命名空間均可突破。
# 添加不可變屬性 (i = immutable)
chattr +i /etc/nginx/nginx.conf
chattr +i /etc/ssh/sshd_config
chattr +i /etc/passwd
chattr +i /etc/shadow
# 查看屬性
lsattr /etc/nginx/nginx.conf
# ----i---------e----- /etc/nginx/nginx.conf
# i = immutable, e = extent format (ext4默認)
# 嘗試修改 (root 也失敗)
echo "test" > /etc/nginx/nginx.conf
# bash: /etc/nginx/nginx.conf: Operation not permitted
rm /etc/nginx/nginx.conf
# rm: cannot remove '/etc/nginx/nginx.conf': Operation not permitted
vim /etc/nginx/nginx.conf
# E212: Can't open file for writing
tmpfs/procfs/sysfs/NFS (視服務端) 不支持。a (append only):僅允許追加寫入 (適合日志文件 chattr +a /var/log/messages)s (secure deletion):刪除時零填充數據塊u (undeletable):刪除時保留內容供恢復d (no dump):dump 備份時跳過
# 移除不可變屬性
chattr -i /etc/nginx/nginx.conf
lsattr /etc/nginx/nginx.conf
# --------------e----- /etc/nginx/nginx.conf (i 消失)
# 現可正常修改、刪除
最佳實踐:修改配置流程 → chattr -i → 編輯 → 驗證語法 (nginx -t) → chattr +i → 重載服務。
| 文件/目錄 | chmod | chattr | 說明 |
|---|---|---|---|
| /etc/passwd | 644 | +i | 用戶信息,需可讀 |
| /etc/shadow | 600 | +i | 加密密碼,極敏感 |
| /etc/group | 644 | +i | 組信息 |
| /etc/gshadow | 600 | +i | 組密碼 |
| /etc/ssh/sshd_config | 600 | +i | SSH 核心配置 |
| /etc/sudoers | 440 | +i | sudo 權限,visudo 編輯會臨時解除 |
| /etc/fstab | 644 | +i | 掛載配置,關鍵啟動 |
| /boot/grub2/grub.cfg | 600 | +i | 引導配置 |
| /etc/nginx/nginx.conf | 600 | +i | Web 核心配置 |
| /etc/my.cnf | 600 | +i | MySQL 配置 |
| /var/log/ | 755 | +a (日志文件) | 僅追加,防止清空日志 |
# 1. 掛載選項 ro (整個分區只讀)
/dev/sda2 /opt/app ext4 ro,relatime 0 0
# 2. 綁定掛載只讀
mount --bind /etc/nginx /etc/nginx
mount -o remount,ro,bind /etc/nginx
# 3. 容器運行時 --read-only
docker run --read-only -v /data:/app/data nginx
# 根文件系統只讀,僅掛載卷可寫
# 4. Kubernetes SecurityContext
securityContext:
readOnlyRootFilesystem: true
allowPrivilegeEscalation: false
chmod 600 針對非 root 用戶/進程的 DAC 保護;chattr +i 針對 root/特權進程的文件系統級強制保護。兩者結合,構建「防誤操作、防惡意篡改、防勒索加密」的立體防線。操作規範:改配置先 chattr -i,改完驗證再 chattr +i,並納入變更管理流程。
