1. 安裝與基礎配置:選擇安全組件并關閉匿名訪問
Ubuntu上推薦使用vsftpd(Very Secure FTP Daemon)作為FTP服務器軟件,其以安全特性著稱。安裝后需修改配置文件/etc/vsftpd.conf
,關閉匿名訪問(anonymous_enable=NO
),禁止未授權用戶登錄;啟用本地用戶登錄(local_enable=YES
),并限制用戶只能訪問其主目錄(chroot_local_user=YES
),同時允許主目錄可寫(allow_writeable_chroot=YES
),防止用戶因無法寫入而破壞系統。此外,啟用寫權限(write_enable=YES
)需根據實際需求調整,若無需用戶上傳文件則應禁用。
2. 強制加密傳輸:啟用SSL/TLS加密數據
為避免FTP數據(用戶名、密碼、文件內容)在傳輸中被竊取,必須啟用SSL/TLS加密。首先安裝OpenSSL工具并生成自簽名證書(或使用CA頒發的證書):
sudo apt install openssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
然后在vsftpd.conf
中添加加密配置:
ssl_enable=YES
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
force_local_data_ssl=YES # 強制數據傳輸加密
force_local_logins_ssl=YES # 強制登錄過程加密
ssl_tlsv1=YES # 僅使用TLSv1及以上安全協議
ssl_sslv2=NO
ssl_sslv3=NO
重啟vsftpd服務使配置生效:sudo systemctl restart vsftpd
。
3. 防火墻管控:限制訪問端口與來源
使用ufw
(Uncomplicated Firewall)配置防火墻規則,僅允許必要的FTP端口通過。FTP控制連接使用21端口,數據傳輸默認使用20端口(主動模式),被動模式需開放額外端口范圍(如30000-31000或50000-51000)。配置命令如下:
sudo ufw allow 21/tcp # FTP控制連接
sudo ufw allow 20/tcp # FTP數據連接(主動模式)
sudo ufw allow 30000:31000/tcp # 被動模式端口范圍(根據實際情況調整)
sudo ufw enable # 啟用防火墻
若使用FTP over SSL(FTPS),還需允許990(控制連接)和40000-50000(被動模式)端口。
4. 用戶權限管理:隔離用戶與限制權限
sudo adduser ftpuser # 創建用戶
sudo passwd ftpuser # 設置強密碼(包含大小寫字母、數字、特殊字符)
sudo chown ftpuser:ftpuser /home/ftpuser
sudo chmod 755 /home/ftpuser
vsftpd.conf
中的chroot_list_enable=YES
和chroot_list_file
指定允許訪問的用戶列表。5. 日志與監控:追蹤異?;顒?/strong>
啟用vsftpd的詳細日志記錄,便于后續審計和排查安全問題。在vsftpd.conf
中添加:
xferlog_enable=YES # 啟用傳輸日志
xferlog_std_format=YES # 使用標準日志格式
log_ftp_protocol=YES # 記錄FTP協議細節(可選,增加日志量)
日志文件默認位于/var/log/vsftpd.log
,定期使用tail
或grep
命令檢查異常登錄(如多次失敗嘗試)或未授權訪問:
sudo tail -f /var/log/vsftpd.log # 實時查看日志
sudo grep "FAILED" /var/log/vsftpd.log # 查找失敗登錄記錄
此外,可安裝fail2ban
工具自動封禁暴力破解IP:
sudo apt install fail2ban
創建/etc/fail2ban/jail.local
文件,添加FTP防護配置:
[vsftpd]
enabled = true
port = ftp
filter = vsftpd
logpath = /var/log/vsftpd.log
bantime = 3600 # 封禁時間(秒)
maxretry = 5 # 最大失敗次數
重啟fail2ban服務:sudo systemctl restart fail2ban
。
6. 定期更新維護:修補安全漏洞
定期更新Ubuntu系統和vsftpd軟件包,修復已知安全漏洞。執行以下命令更新系統:
sudo apt update && sudo apt upgrade -y
同時,定期檢查vsftpd官方公告,及時升級到最新版本。