CentOS與VSFTP網絡配置指南
在配置VSFTP前,需完成以下基礎準備工作:
sudo yum update -y
確保系統軟件包為最新版本;sudo yum install vsftpd -y
命令安裝VSFTP服務器;sudo systemctl start vsftpd
啟動服務,并設置開機自啟sudo systemctl enable vsftpd
。編輯主配置文件/etc/vsftpd/vsftpd.conf
,設置以下參數:
listen=YES
:啟用獨立模式(避免作為inetd/xinetd子進程運行,提升穩定性);listen_ipv6=NO
:禁用IPv6(若無需IPv6支持,減少配置復雜度);listen_address=服務器IP
(如192.168.1.100
):指定VSFTP綁定的IP地址(單網卡無需修改,雙網卡需綁定內網/外網IP以實現隔離);pasv_enable=YES
:啟用被動模式(解決FTP主動模式下的“連接被拒絕”問題,適用于客戶端位于防火墻后的場景);pasv_min_port=60000
/pasv_max_port=60100
:設置被動模式的端口范圍(需與防火墻規則匹配,允許該區間端口通過)。使用firewalld
開放FTP相關端口:
sudo firewall-cmd --permanent --add-port=21/tcp
sudo firewall-cmd --permanent --add-port=60000-60100/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="21" protocol="tcp" accept'
sudo firewall-cmd --reload
若系統啟用了SELinux(getenforce
返回Enforcing
),需調整以下策略:
sudo setsebool -P ftp_home_dir on
;sudo setsebool -P allow_ftpd_full_access on
;sudo setenforce 0
。sudo systemctl status vsftpd
,確認服務處于active (running)
狀態;ss -tulnp | grep vsftpd
,檢查是否監聽21端口(及被動模式端口范圍);sudo firewall-cmd --list-all
查看是否開放了21端口和被動模式端口;ping 服務器IP
(檢查網絡通路)和telnet 服務器IP 21
(檢查21端口是否可達)。passwd -S 用戶名
,狀態應為P
);chroot_local_user=YES
,需將用戶添加到/etc/vsftpd/chroot_list
(允許其訪問主目錄外的路徑);tail -f /var/log/vsftpd.log
獲取詳細錯誤信息(如“530 Login incorrect”表示認證失?。?。755
(sudo chmod 755 /home/用戶名
),上傳目錄需設置為777
(sudo chmod 777 /var/ftp/upload
,若需寫入);public_content_rw_t
(sudo chcon -Rt public_content_rw_t /var/ftp/upload
);pasv_enable=YES
、pasv_min_port
/pasv_max_port
設置正確,且防火墻允許該端口范圍;df -h
查看磁盤剩余空間(需大于待傳輸文件大?。?。/etc/vsftpd/vsftpd.conf
,設置anonymous_enable=NO
(避免未授權用戶訪問);chroot_local_user=YES
將用戶限制在主目錄(防止訪問系統其他目錄),若需允許部分用戶訪問其他路徑,可配置allow_writeable_chroot=YES
;sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/certs/vsftpd.pem
),并在配置文件中添加:ssl_enable=YES
allow_anon_ssl=NO
force_local_logins_ssl=YES
force_anon_data_ssl=YES
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem