1. 禁用匿名訪問
匿名訪問是FTP服務器最易被濫用的入口,必須徹底關閉。修改/etc/vsftpd.conf
文件,將anonymous_enable=YES
改為anonymous_enable=NO
,禁止任何匿名用戶登錄,避免未授權訪問服務器文件。
2. 啟用本地用戶訪問并限制權限
僅允許系統本地用戶登錄,增強身份可控性。設置local_enable=YES
開啟本地用戶訪問;通過chroot_local_user=YES
將用戶限制在其主目錄內(如/home/ftpuser
),防止訪問系統其他目錄;添加allow_writeable_chroot=YES
解決chroot環境下目錄不可寫的問題(若用戶需要上傳文件)。
3. 強制使用SSL/TLS加密傳輸
FTP默認明文傳輸密碼和數據,易被嗅探。生成SSL證書(sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem
),并在配置文件中啟用加密:ssl_enable=YES
、force_local_data_ssl=YES
、force_local_logins_ssl=YES
、ssl_tlsv12=YES
(禁用SSLv3及以下版本),強制所有數據傳輸加密。
4. 配置防火墻限制訪問
通過防火墻僅允許可信IP或端口訪問FTP服務。開放FTP端口(21)和被動模式端口范圍(如30000-31000):sudo firewall-cmd --permanent --add-port=21/tcp
、sudo firewall-cmd --permanent --add-port=30000-31000/tcp
;拒絕特定IP訪問(如192.168.1.100
):sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.100" reject' --permanent
;最后重載防火墻規則:sudo firewall-cmd --reload
。
5. 管理用戶權限與隔離
700
(sudo chmod 700 /home/ftpuser
),所有權設為用戶自身(sudo chown -R ftpuser:ftpuser /home/ftpuser
),防止其他用戶訪問。chroot_local_user=YES
將用戶鎖定在主目錄,避免跨目錄操作;若需上傳文件,添加allow_writeable_chroot=YES
。6. 控制用戶登錄范圍
/etc/vsftpd.user_list
文件,添加允許登錄的用戶名;配置userlist_enable=YES
(啟用列表)、userlist_deny=NO
(列表為白名單,僅允許列表內用戶登錄)。/etc/vsftpd/ftpusers
文件為系統黑名單,內置root等敏感用戶,禁止其登錄FTP服務器。7. 使用虛擬用戶增強隔離
虛擬用戶不映射到系統用戶,降低系統風險。創建虛擬用戶數據庫(/etc/vsftpd/virtual_users.txt
,格式為username:password
),轉換為DB格式(sudo db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db
);配置VSFTP使用虛擬用戶:guest_enable=YES
、guest_username=ftp
(映射到系統用戶)、virtual_user_root=/var/ftp
(虛擬用戶根目錄)、virtual_user_table=/etc/vsftpd/virtual_users.db
。
8. 更新系統與軟件
定期更新Linux系統和VSFTP軟件,修復已知安全漏洞。使用包管理器更新:sudo apt update && sudo apt upgrade -y
(Debian/Ubuntu)或sudo yum update -y
(CentOS/RHEL),確保系統及VSFTP處于最新安全版本。
9. 啟用日志記錄與監控
開啟詳細日志記錄,便于追蹤異常行為。設置xferlog_enable=YES
(啟用傳輸日志)、xferlog_std_format=YES
(標準日志格式)、log_ftp_protocol=YES
(記錄FTP協議細節);日志文件默認位于/var/log/vsftpd.log
,使用tail -f /var/log/vsftpd.log
實時監控,及時發現非法登錄或異常操作。