前言:Linux 天然安全優勢 + 正確配置 = 堅不可摧的 FTP 服務
以 Red Flag Linux 4.1 + vsftpd 1.1.3 為例,示範從安裝、基礎配置、權限修復、匿名上傳開放、埠號隱藏的完整安全加固流程。
一、安裝與基礎配置
- 安裝套件:`rpm -ivh vsftpd-1.1.3-8.i386.rpm`
- 啟動服務:`ntsysv` 勾選 `vsftpd` → 重開機或 `service vsftpd restart`
- 核心配置 `/etc/vsftpd/vsftpd.conf` 關鍵參數:
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
ascii_upload_enable=YES
ascii_download_enable=YES
pam_service_name=vsftpd
userlist_enable=YES
listen=YES
tcp_wrappers=YES
二、常見問題排查與修復
問題 1:無法下載 `/var/ftp/pub` 下檔案,「檔案無法被伺服器開啟」
根因**:檔案權限為 `600` (僅擁有者讀寫),其他檔案為 `644`。
修復**:
`chmod 644 /var/ftp/pub/vsftpd.conf`
或 `chmod go+r /var/ftp/pub/vsftpd.conf`
→ 確保「其他人」具備讀取權限。
問題 2:如何安全開放匿名上傳?
原則**:預設拒絕匿名寫入。若業務必須開放,**嚴格隔離目錄、最小權限、審計日誌**。
- 配置啟用匿名寫入:
`anon_upload_enable=YES`
`anon_mkdir_write_enable=YES`
`anon_world_readable_only=NO`
`anon_other_write_enable=YES`
- 建立專用上傳目錄:
`mkdir /var/ftp/incoming`
- 授予寫入權限:
`chmod o+w /var/ftp/incoming`
- **關鍵**:**不給 `/var/ftp/pub` 寫入權限**,避免公開下載區被污染,便於管理審計。
- 重啟服務驗證。
問題 3:使用非標準埠 (10021) 降低自動掃描攻擊
- 修改配置:`listen_port=10021`
- 驗證監聽埠:
`netstat -anp | grep 21`
輸出應顯示 `:10021` 由 `vsftpd` 監聽,`:21` 可能仍由 `xinetd` 監聽。
- 關閉埠 21:
`kill -9 ` (或停用 xinetd 下的 ftp 服務)
- 客戶端連線指定埠:`ftp -p 10021 ` 或 FileZilla 站點管理器設定埠 10021。
效果**:自動化掃描腳本多針對埠 21,非標準埠大幅降低暴露面。
三、進階安全建議 (生產環境必做)
- 啟用 SSL/TLS (FTPS):`ssl_enable=YES`,強制加密控制/資料通道,防竊聽。
- 限制登入失敗次數:`max_login_fails=3`,配合 `fail2ban` 封鎖惡意 IP。
- chroot 限制本地用戶:`chroot_local_user=YES`,`chroot_list_enable=YES`,例外用戶列入 `/etc/vsftpd/chroot_list`。
- 被動模式埠範圍固定:`pasv_min_port=50000`、`pasv_max_port=51000`,防火牆精準放行。
- 隱藏版本資訊:`ftpd_banner=Welcome to FTP Service.`,不洩露軟體版本。
- 日誌審計自動化:`xferlog_std_format=YES`,配合 logrotate 每日輪轉,導入 SIEM 分析異常登入/傳輸模式。
結語
vsftpd 配置簡潔而強大,**預設安全、顯式開放**是核心哲學。從權限最小化、目錄隔離、埠號隱藏、加密傳輸、失敗鎖定、審計日誌六個維度構建纵深防禦,讓 FTP 服務在便利與安全間找到最佳平衡點。