基礎版 vsftpd 僅能完成上傳下載,生產環境仍需解決:使用者能 `cd /` 逾越根目錄、命令過於開放、非獨立進程模式穩定性較差等問題。
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
useradd -d /home/sery sery
passwd sery # 設定密碼
cp vsftpd.conf /etc/vsftpd.conf
cp Redhat/vsftpd.pam /etc/pam.d/ftp # 關鍵:缺此檔導致無法登入
# 基礎啟用
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
vsftpd &
| 參數 | 作用 | 安全效益 |
|---|---|---|
| listen=YES | 獨立 daemon 模式,不經 xinetd | 降低攻擊面、啟動更快、記憶體佔用可控 |
| chroot_local_user=YES | 使用者根目錄鎖定為家目錄 | 防止目錄遍歷洩露系統結構 |
| cmds_allowed=... | 命令白名單機制 | 最小權限原則:移除 DELE、RMD、RNFR、RNTO、CHMOD 等高風險指令 |
| local_umask=022 | 新檔權限 644、新目錄 755 | 避免世界可寫風險 |