Serv-U 作為廣泛部署的 FTP 服務器軟體,默認配置極不安全 (空管理密碼、明文傳輸、匿名訪問、無速率限制、目錄遍歷風險)。本文提供從安裝到日誌審計的**全生命週期加固清單**,將 Serv-U 打造為合規、可審計、抗攻擊的文件傳輸服務。
階段 0:安裝階段 — 源頭最小化
- 非默認路徑安裝:避開 `C:\Program Files\Serv-U`,選擇不可猜測路徑 (如 `D:\Apps\ServU_Prod_2024`),減少自動化掃描/利用命中率。
- 最小組件安裝:僅勾選「Server program files」+「Administrator program files」。**取消** 「ReadMe/Version text」、「Online help files」——減少攻擊面、磁盤佔用、補丁負擔。
- 原則:**所有服務器軟體遵循「夠用原則」,不安裝任何非運行必需組件**。
階段 1:初始化 — 管理員強認證
- 首次啟動彈出向導 → **取消**,改用手動創建域/用戶 (向導可能創建弱默認值)。
- 主界面 →「設置/更改密碼」 → 設置**高強度管理員密碼** (≥20 位、全字符集、密碼管理器生成)。
- 啟用 **管理介面 HTTPS** (若支援) 或 **SSH 管理** (Serv-U 15.2+),禁用 HTTP/明文管理。
- 限制管理介面綁定 IP:僅綁定內網管理網段 IP / Loopback + SSH 隧道 / VPN 訪問,**嚴禁 0.0.0.0:對公網開放**。
階段 2:域與用戶策略 — 最小權限與生命週期
1. 域級安全設置
- 「安全性」下拉選單 → **「僅允許 SSL/TLS 連接」 (Explicit FTPS / Implicit FTPS)**,強制加密傳輸 (控制通道 + 數據通道)。
- **禁用明文 FTP (端口 21)**,僅保留 990 (Implicit FTPS) 或 21 + STARTTLS (Explicit FTPS)。
- 啟用 **SSL 憑證**:管理介面 → 本地服務器 → 設置 → SSL 憑證 → 「普通名稱」填實際 FQDN (如 `ftp.corp.example.com`),申請受信 CA 證書 (Let's Encrypt/內部 CA/商業證書),應用。
2. 用戶帳戶精細化配置
| 設置項 | 推薦值/原則 | 說明 |
| 帳戶失效時間 | 臨時帳戶必填到期自動移除 | 防止僵屍帳戶長期存活 |
| 最大上傳/下載速度 | 1000 KB/s (視業務調整) | 防大文件佔滿帶寬/磁盤 I/O 導致 DoS |
| 空閒超時 / 會話超時 | 600 秒 / 1800 秒 | 釋放佔用連接槽,防連接耗盡 |
| 目錄訪問權限 | **最小必要**:僅授予列表/讀取/上傳/刪除/重命名/建立目錄,**嚴禁「執行」權限** | 防 WebShell/惡意腳本通過 FTP 上傳後直接執行 |
| IP 訪問控制 | 「編輯規則」=「允許訪問」 → 僅添加業務來源 IP/網段 (辦公網段/合作夥伴出口 IP/雲端 NAT IP) | 白名單機制,預設拒絕,極大縮小攻擊面 |
| 拒絕訪問列表 | 從系統日誌發現的掃描/暴力破解 IP 段持續加入 | 動態威脅情報餵入 (Fail2Ban/自動化腳本) |
階段 3:協議與傳輸加固
- 強制 FTPS (TLS 1.2+):禁用 SSLv3/TLS 1.0/1.1,加密套件限制 `ECDHE+AES-GCM`、`DHE+AES-GCM`。
- 被動模式 (PASV) 端口範圍固定:如 `50000-51000`,防火牆/安全組精準放行,避免大範圍端口開放。
- 啟用 EPSV/EPRT (IPv6 支援)。
- 禁用匿名登入:除非極少數公開只讀場景 (且僅讀、無寫、隔離 VLAN、審計)。
- 啟用 UTF-8 (OPTS UTF8 ON),避免中文文件名亂碼導致邏輯錯誤。
階段 4:日誌審計與告警 — 可見性是安全前提
- 管理介面 → 域 →「活動」→「域日誌」:記錄 IP、用戶、命令、文件、傳輸量、錯誤碼、會話時長。
- 日誌轉發:配置 Syslog (RFC 5424) 轉發至 SIEM (Splunk/ELK/Graylog/Sentinel),字段結構化解析。
- 關鍵告警規則**:
• 短時內多次登入失敗 (暴力破解) → 觸發 Fail2Ban/防火牆封禁 IP。
• 非常用 IP/地理位置登入 → 郵件/企業微信/鉉釘告警。
• 大文件上傳/下載 (超閾值) → 人工複核。
• 目錄遍歷嘗試 (`../`、`..\`) → 即時阻斷告警。
• 管理員登入/配置變更 → 審計追蹤。
- 日誌保留**:熱存儲 90 天 + 冷存儲 1 年 (合規要求)。
階段 5:持續運營與應急
- 補丁管理:訂閱 SolarWinds Serv-U 安全公告,月度檢查並應用補丁 (CVE-2021-35211、CVE-2022-36881 等歷史高危漏洞)。
- 滲透測試**:半年度針對 FTP 服務滲透測試 (認證繞過、目錄遍歷、命令注入、邏輯漏洞)。
- 備份與恢復演練**:配置/用戶數據庫/SSL 證書/日誌 異地加密備份,季度演練恢復。
- 棄用評估**:FTP 協議固有缺陷 (命令/數據分離、被動模式防火牆穿透難、無完整性校驗):**新業務優先選 SFTP (SSH) / HTTPS (WebDAV/S3 API) / MFT 托管服務**,逐步淘汰 FTP。
一鍵審計腳本 (PowerShell 檢查關鍵配置)
$servuPath = "C:\Program Files\RhinoSoft\Serv-U\Serv-U.exe" # 實際路徑
# 檢查版本
$ver = (Get-Item $servuPath).VersionInfo.FileVersion
Write-Host "Serv-U Version: $ver"
# 檢查配置文件 (Serv-U 使用 .ini 或 註冊表/數據庫,具體視版本)
# 此處為示例:檢查關鍵註冊表鍵值 (假設)
$reg = 'HKLM:\SOFTWARE\RhinoSoft\Serv-U\Domains\YourDomain'
if (Test-Path $reg) {
$ssl = Get-ItemPropertyValue $reg 'RequireSSL' -ErrorAction SilentlyContinue
$anon = Get-ItemPropertyValue $reg 'AllowAnonymous' -ErrorAction SilentlyContinue
$maxUp = Get-ItemPropertyValue $reg 'MaxUploadSpeed' -ErrorAction SilentlyContinue
$maxDown = Get-ItemPropertyValue $reg 'MaxDownloadSpeed' -ErrorAction SilentlyContinue
Write-Host "RequireSSL: $([bool]$ssl) | AllowAnonymous: $([bool]$anon) | MaxUp: $maxUp KB/s | MaxDown: $maxDown KB/s"
if (-not $ssl) { Write-Error "CRITICAL: SSL/TLS NOT ENFORCED!" }
if ($anon) { Write-Warning "WARNING: Anonymous login ENABLED!" }
}
FTP 服務器是數據流動的關卡,**配置即防線,日誌即眼睛,補丁即盾牌,淘汰才是終極方案**。按清單落地,讓 Serv-U 從「弱點」變「堡壘」。