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

匿名 FTP 伺服器安全配置最佳實踐:目錄權限、寫入隔離、使用者限制與日誌稽核完整指南

編輯:關於伺服器

匿名 FTP 若配置不當,極易成為惡意軟體散佈站、盜版資源倉庫、跳板攻擊踏腳石。本文依據 CERT/CC 建議與現代最佳實踐,建立從「目錄結構、權限模型、寫入隔離、使用者限制、日誌稽核、異常檢測」的纏繞防禦體系。

一、目錄結構與 NTFS/UNIX 權限模型 (核心原則:根目錄不可寫、寫入目錄不可讀/列表)

標準目錄佈局

/ftp_root/                    (根目錄,僅供讀取/列表)
├── bin/                      (必要執行檔,如 ls、cp — chroot 環境需求)
├── etc/                      (passwd、group 虛擬檔案 — 不含真實帳號)
├── pub/                      (公開下載區,唯讀)
│   ├── software/
│   ├── docs/
│   └── drivers/
├── incoming/                 (上傳投遞箱,僅寫入,不可讀/列表/刪除)
│   ├── dept_a/               (部門專屬上傳,已知隨機名稱)
│   └── dept_b/
└── users/                    (實名使用者專屬目錄,非匿名)
    ├── alice/
    └── bob/

權限矩陣 (Linux/UNIX chmod/chown 範例)

目錄擁有者:群組權限 (oct)說明
/ftp_rootroot:root755 (rwxr-xr-x)根目錄唯讀,防止匿名建立檔案/目錄
/ftp_root/binroot:root755僅含必要二進制檔 (ls 等),不可寫入
/ftp_root/etcroot:root755虛擬 passwd/group,密碼欄位用 * 替代
/ftp_root/pubroot:root755公開下載,匿名可讀/列表,不可寫入
/ftp_root/incomingroot:root733 (rwx-wx-wx)可進入 (x)、可建立檔案 (w)、不可列表 (無 r)
/ftp_root/incoming/dept_aroot:ftp_dept_a733隨機名稱 (如 jAjwUth2),僅授權人員知曉

Windows NTFS ACL 對應 (icacls)

rem 根目錄
icacls "D:\FTPRoot" /grant "Administrators:(OI)(CI)F" "SYSTEM:(OI)(CI)F" "Anonymous:(RX)" /inheritance:r

rem pub 唯讀
icacls "D:\FTPRoot\pub" /grant "Anonymous:(OI)(CI)(RX)" /inheritance:r

rem incoming 投遞箱 (寫入不可讀)
icacls "D:\FTPRoot\incoming" /grant "Anonymous:(OI)(CI)(WD,AD)" /inheritance:r
icacls "D:\FTPRoot\incoming" /deny "Anonymous:(OI)(CI)(RX)" /inheritance:r

二、FTP Daemon 硬化配置 (以 vsftpd / ProFTPD / IIS FTP / Wu-FTPD 為例)

vsftpd.conf 關鍵安全參數

# 匿名存取控制
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=NO          # 禁止刪除/重命名/修改現有檔案
anon_root=/ftp_root                 # 匿名根目錄 (chroot)

# 上傳限制
anon_max_rate=1024000               # 匿名上傳限速 1MB/s
local_max_rate=5120000              # 本地用戶 5MB/s

# 目錄隔離
chroot_local_user=YES               # 本地用戶 chroot 至家目錄
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list  # 例外清單

# 虛擬用戶 (推薦替代系統帳號)
guest_enable=YES
guest_username=ftpvirtual
user_config_dir=/etc/vsftpd_user_conf
virtual_use_local_privs=YES

# 日誌與稽核
xferlog_enable=YES
xferlog_std_format=YES
xferlog_file=/var/log/vsftpd.log
dual_log_enable=YES                 # 同時輸出 wu-ftpd 格式
log_ftp_protocol=YES                # 記錄完整 FTP 指令流

# 連線控制
max_clients=200
max_per_ip=10
idle_session_timeout=300
data_connection_timeout=120

# SSL/TLS (FTPS)
ssl_enable=YES
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1_2=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/ssl/certs/vsftpd.pem

IIS FTP 7.5+ 關鍵設定

  • FTP 授權規則:允許匿名用戶讀取 /pub、允許匿名用戶寫入 /incoming (需搭配 NTFS ACL)。
  • FTP 訊息篩選:啟用「命令篩選」封鎖 SITE CHMOD、SITE EXEC 等危險指令。
  • FTP 防火牆支援:設定「資料通道連接埠範圍」 (如 5000-5100)、「外部 IP 位址」 (NAT 環境)。
  • 啟用 FTP over SSL (FTPS):「SSL 原則」→ 允許/要求/自訂憑證。

三、寫入目錄隔離策略 (三層防禦)

層級 1:修改過的 FTP Daemon (最強)

  • 上傳檔案自動改名 (避免覆蓋)、病毒掃描整合 (ClamAV/ICAP)、隔離區人工審核後釋出、磁碟配額限制、檔案類型白名單。
  • vsftpd 可搭配 uploadscript 外部腳本處理上傳事件。

層級 2:目錄結構與權限迷宮 (中等)

  • incoming/ 權限 733 (不可列表)。
  • 子目錄使用 高熵隨機名稱 (如 jAjwUth2、MhaLL-iF),僅透過安全管道告知授權上傳者。
  • 定期輪換子目錄名稱、清理過期檔案。

層級 3:獨立磁碟/磁碟區掛載 (物理隔離)

  • 將 /ftp_root/incoming 掛載至獨立磁碟/邏輯卷 (LVM/ZFS dataset)。
  • 優點:磁碟滿載不影響系統/其他服務、可獨立掛載選項 noexec,nodev,nosuid、快照備份/回滾獨立運作。

四、實名 FTP 使用者目錄限制 (chroot / 虛擬用戶)

防止合法 FTP 用戶跳出家目錄存取系統敏感區域:

Linux (Wu-FTPD / vsftpd) 實作

  1. 建立群組:groupadd ftpusers
  2. 建立用戶:useradd -g ftpusers -d /ftp_root/users/alice -s /sbin/nologin alice (禁用 Shell 登入)
  3. /etc/ftpaccess 加入:
    guestgroup ftpusers
    chroot everyone (或 guestgroup ftpusers 配合 limit 指令)
  4. 複製 /bin/ls 等必要二進制檔至用戶 bin/ 目錄,或使用靜態編譯 busybox。

Windows IIS FTP 用戶隔離

  • FTP 用戶隔離模式:使用者名稱目錄 (自動對應 %FTP_ROOT%\%UserName%) 或 使用者名稱實體目錄 (AD/本地用戶家目錄)。
  • NTFS ACL 精細控制:每個用戶目錄僅授予該用戶 + 管理員權限。

五、日誌稽核與異常檢測體系

關鍵日誌欄位 (W3C / xferlog 標準格式)

Mon Oct 23 03:15:00 2000 0 192.168.1.50 1024 /pub/software/patch.exe b _ i r anonymous ftp 0 * c
  • 欄位:時間、傳輸耗時、客戶端 IP、檔案大小、檔案路徑、傳輸類型 (a/b)、特殊動作、方向 (i/o)、存取模式 (r/d)、用戶名、服務名、認證方式、認證用戶 ID、完成狀態。

自動化檢測規則 (Syslog/ELK/Splunk/Wazuh)

規則名稱觸發條件響應等級
暴力破解同一 IP 5 分鐘內 ≥ 10 次 530 Login incorrect高 — 自動封鎖 IP 1h
異常大檔案上傳單次上傳 > 100MB 或 單小時上傳總量 > 500MB中 — 告警、人工審核
可疑檔案類型上傳 .exe/.scr/.bat/.ps1/.jar/.php/.asp/.jsp (非白名單)高 — 隔離檔案、封鎖 IP
非工作時間大量下載00:00-06:00 下載流量 > 日均 3 倍中 — 告警
目錄遍歷嘗試FTP 指令含 ../、..\、C:\、/etc/passwd高 — 封鎖 IP、WAF 規則更新

六、合規與法律風險控制

  • 拒絕匿名上傳版權內容:在登入橫幅、/incoming/README.txt 明確聲明禁止上傳盜版/非法/惡意內容,保留法律追究權利。
  • 資料保留政策:上傳檔案保留 30 天自動清理,稽核日誌保留 1 年 (依 GDPR/個資法/行業法規)。
  • 事件回應預案:發現惡意軟體/洩漏/入侵 → 隔離伺服器 → 保全證據 (磁碟映像/日誌/記憶體) → 通報主管機關/客戶 → 根因分析 → 加固復原。
現代替代方案:SFTP (SSH File Transfer Protocol) + Chroot/Jail + 金鑰認證 + 雙因子認證 (2FA)。SFTP 單一連接埠 (22)、強加密、原生支援 chroot、無主動/被動模式 NAT 困擾、整合系統帳號/LDAP/AD。強烈建議新部署棄用 FTP/FTPS,全面遷移至 SFTP 或物件存儲 (S3/MinIO/Azure Blob) + 預簽名 URL。
Copyright © Windows教程網 All Rights Reserved