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

vsftpd 快速部署進階版:Chroot 限制目錄、命令白名單與獨立守護進程模式

編輯:關於伺服器

從基礎部署到生產就緒的關鍵增強

基礎版 vsftpd 僅能完成上傳下載,生產環境仍需解決:使用者能 `cd /` 逾越根目錄、命令過於開放、非獨立進程模式穩定性較差等問題。

完整部署步驟 (vsftpd-2.0.5)

1. 源碼編譯安裝(擺脫 RPM 依賴地獄)

wget ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.0.5.tar.gz
tar zxvf vsftpd-2.0.5.tar.gz
cd vsftpd-2.0.5
make && make install

2. 建立系統帳號型 FTP 使用者

useradd -d /home/sery sery
passwd sery  # 設定密碼

3. 部署核心配置檔

cp vsftpd.conf /etc/vsftpd.conf
cp Redhat/vsftpd.pam /etc/pam.d/ftp  # 關鍵:缺此檔導致無法登入

4. 修改 `/etc/vsftpd.conf` 關鍵參數(每行頂格,不可縮排)

# 基礎啟用
local_enable=YES
write_enable=YES
local_umask=022

# 獨立守護進程模式 (效能/穩定性最佳)
listen=YES

# Chroot 限制:使用者被鎖定在家目錄,cd / 無法跳出
chroot_local_user=YES

# 命令白名單:僅允許上傳/建立目錄/列表/下載,禁止刪除/改名/權限變更
# ⚠️ 必須寫在單一行,不得換行
cmds_allowed=ABOR,CWD,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RETR,RMD,RNFR,RNTO,SITE,SIZE,STOR,TYPE,USER,ACCT,APPE,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST

5. 啟動服務

vsftpd &

配置細節解析

參數作用安全效益
listen=YES獨立 daemon 模式,不經 xinetd降低攻擊面、啟動更快、記憶體佔用可控
chroot_local_user=YES使用者根目錄鎖定為家目錄防止目錄遍歷洩露系統結構
cmds_allowed=...命令白名單機制最小權限原則:移除 DELE、RMD、RNFR、RNTO、CHMOD 等高風險指令
local_umask=022新檔權限 644、新目錄 755避免世界可寫風險

常見坑點提醒

  • 配置檔每行必須頂格寫入,前置空白會導致啟動失敗且無明確錯誤訊息
  • `vsftpd.pam` 必須部署至 `/etc/pam.d/ftp`,否則系統帳號無法通過 PAM 驗證
  • 若需虛擬用戶 (非系統帳號),需額外配置 `guest_enable=YES` + `virtual_use_local_privs=YES` + `pam_service_name=vsftpd` 並建立專用 PAM 檔
  • 防火牆需開放 TCP 21 (命令) + PASV 被動埠範圍 (建議 `pasv_min_port=60000` `pasv_max_port=60020`)

驗證清單

  1. FTP Client 登入成功,`pwd` 顯示 `/` (實為 `/home/sery`)
  2. `cd /` 仍停留在 `/`,無法存取 `/etc`、`/var` 等系統目錄
  3. `put` 上傳成功、`get` 下載成功、`mkdir` 建立目錄成功
  4. `delete`、`rename`、`chmod` 等被拒絕 (550 Permission denied)
  5. `netstat -antp | grep :21` 確認獨立 `vsftpd` 進程持有埠口
Copyright © Windows教程網 All Rights Reserved