FTP(File Transfer Protocol,檔案傳輸協定)是 TCP/IP 協定族中應用層最早、最經典的標準協定之一,專為跨異構系統(Windows、Linux、Unix、Mac、大型主機)的檔案交換而設計。本文從協定架構、連線模式、安全性演進到部署實務,完整解析 FTP 伺服器核心知識。
| 模式 | 控制連線 | 資料連線發起方 | 資料連線埠口 | 防火牆/NAT 友善度 |
|---|---|---|---|---|
| 主動模式 (Active/PORT) | Client → Server:21 | Server → Client | Server:20 → Client:隨機高埠 | 差:Client 端防火牆/NAT 會擋住 Server 主動連入 |
| 被動模式 (Passive/PASV) | Client → Server:21 | Client → Server | Server:隨機高埠(需防火牆開放範圍) | 佳:Client 主動發起,符合 NAT 穿透邏輯 |
現代部署鐵則:預設強制使用被動模式,並在伺服器防火牆開放固定被動埠範圍(如 50000-51000),FTP 用戶端同樣設為被動模式。
| 協定 | 加密方式 | 埠口 | 現狀 |
|---|---|---|---|
| FTP (Plain) | 無(明文帳密/資料) | 21/20 | 嚴禁生產環境使用 |
| FTPS (FTP over SSL/TLS) | 隱式/顯式 TLS 加密控制與資料通道 | 990 (隱式)/21 (顯式) | 相容性佳,但雙通道加密設定複雜 |
| SFTP (SSH File Transfer Protocol) | SSH 通道全程加密(非 FTP 協定) | 22 | 現代首選,單一埠口、強加密、金鑰認證 |
最佳實務:棄用純 FTP,全面改用 SFTP(OpenSSH 內建)或 FTPS (Explicit TLS),並強制停用匿名登入、啟用root 限制目錄、配合 fail2ban 防暴力破解。
同一台電腦安裝 FTP 軟體上傳檔案時,該電腦扮演 Client 角色;接收檔案的遠端主機為 Server。
| 軟體 | 平台 | 特色 |
|---|---|---|
| vsftpd | Linux/Unix | 極輕量、安全預設值高、高併發能、預設 chroot |
| ProFTPD | Linux/Unix | 模組化、設定彈性大、支援虛擬用戶、LDAP 整合 |
| Pure-FTPd | Linux/Unix | 簡潔、虛擬用戶友善、TLS 支援完善 |
| FileZilla Server | Windows | GUI 管理、支援 FTPS、介面直覺 |
| IIS FTP | Windows Server | 整合 AD、管理主控台、企業環境便利 |
FTP 雖為古老協定,其雙通道架構與主動/被動模式至今仍影響現代檔案傳輸架構設計。理解其本質,正確選擇 SFTP/FTPS、配置被動模式埠與權限模型,是構建安全可靠檔案交換服務的基石。