角色安裝:一條命令搞定
# 服務器核心安裝
ServerManagerCmd -i Web-FTP-Server -i Web-FTP-Service -i Web-FTP-Ext -i Web-Mgmt-Console
# GUI 路徑:服務器管理器 → 角色 → Web 服務器 (IIS) → 添加角色服務
# 勾選:FTP 服務器、FTP 服務、FTP 可擴展性、管理工具 → IIS 管理控制台
服務啟動與防火牆放行
- 服務管理器 (
services.msc) → FTP Publishing Service → 啟動類型「自動」→ 啟動。
- Windows 防火牆高級安全 → 入站規則 → 新建規則 → 端口 TCP 21、被動模式範圍 (如 5000-5100) → 允許域/專用配置文件。
FTP 站點創建與隔離最佳實踐
- IIS 管理器 → 「網站」右鍵 → 「添加 FTP 站點」。
- 站點名稱、物理路徑(如
D:\FTP_Root)。
- 綁定:IP 選「所有未分配」,端口 21,無需 SSL(或配置憑證啟用 FTPS)。
- 關鍵:FTP 用戶隔離 → 選「用戶名目錄」(每用戶獨立根目錄)或「用戶主目錄」(AD 映射)。
- 認證:基本認證 + SSL(生產必開);授權規則 → 指定角色/用戶 + 讀寫權限。
被動模式端口鎖定(穿透防火牆/NAT 必做)
# 命令行鎖定被動端口範圍 5000-5100
appcmd set config /section:system.applicationHost/sites /siteDefaults.ftpServer.passiveMode.portRange:"5000-5100" /commit:apphost
# 防火牆同步放行該範圍
netsh advfirewall firewall add rule name="FTP Passive Ports" dir=in action=allow protocol=TCP localport=5000-5100
日志與審計:合規留存
- IIS → FTP 站點 → 「FTP 日志」 → 選擇 W3C 格式、本地時間、按天切割、保留 180 天。
- 字段勾選:日期、時間、客戶端 IP、用戶名、命令、狀態、子狀態、發送/接收字節、會話 ID。
- 定期歸檔至 SIEM/日志審計平台,滿足等保/PCI-DSS 審計要求。
安全加固清單
| 項目 | 配置 | 風險 |
| 禁用匿名登錄 | FTP 認證 → 取消匿名 | 暴露目錄遍歷、暴力破解 |
| 強制 FTPS | FTP SSL 設置 → 「要求 SSL 連接」+ 有效憑證 | 明文傳輸帳號密碼/數據 |
| 帳號鎖定策略 | GPO → 帳號鎖定閾值 5 次、鎖定 30 分鐘 | 暴力破解 FTP 憑證 |
| 目錄執行權限 | FTP 授權規則 → 僅授權「讀取/寫入」,禁止「執行」 | 上傳 WebShell/惡意腳本執行 |
| 磁盤配額 | NTFS 配額 / FSRM 配額 → 單用戶 10GB 硬限制 | 單用戶佔滿磁盤導致服務拒絕 |