Linux
GnuTLS 錯誤 -53:推送功能出錯,使用 vsftpd
我正在使用 CentOS 6.0 上的虛擬使用者設置我的家庭 FTP。我正在使用以下指南。
我能夠成功執行第一個腳本vsftpd_virtual_config_withTLS.sh並進行相應的配置。
然後我成功執行添加使用者腳本 vsftpd_virtualuser_add.sh 並配置一個虛擬使用者。
然後我執行以下命令以允許 Iptables 允許通過埠 21 進行連接
sudo iptables -I INPUT -p tcp --dport 21 -j ACCEPT sudo iptables -I OUTPUT -p udp --dport 21 -j ACCEPT sudo /sbin/service iptables save sudo /sbin/service iptables restart
然後我重新啟動 vsftpd 伺服器。然後,我嘗試使用 Filezilla 3.5.0(使用 GnuTLS:2.10.5)連接到我新配置的 ftp 伺服器(加密:需要通過 TLS 顯式 FTP),連接時出現以下錯誤。
Error: GnuTLS error -53: Error in the push function.
我已經嘗試過其他 ftp 客戶端,例如 Fireftp,但它仍然無法列出目錄列表。我還確保 vsftpd、gnutls 和 filezilla 都是最新版本。然而,我對 TLS 非常不熟悉,因此對於這種情況的任何幫助將不勝感激。謝謝!
編輯:按要求發布我的 vsftpd.conf 文件
anon_world_readable_only=NO anonymous_enable=NO chroot_local_user=YES guest_enable=NO guest_username=ftp hide_ids=YES listen=YES listen_address=[redacted] local_enable=YES max_clients=100 max_per_ip=2 nopriv_user=ftp pam_service_name=ftp pasv_max_port=65535 pasv_min_port=64000 session_support=NO use_localtime=YES user_config_dir=/etc/vsftpd/users userlist_enable=YES userlist_file=/etc/vsftpd/denied_users xferlog_enable=YES anon_umask=027 local_umask=027 async_abor_enable=YES connect_from_port_20=YES dirlist_enable=NO download_enable=NO # # TLS Configuration # ssl_enable=YES allow_anon_ssl=NO force_local_data_ssl=NO force_local_logins_ssl=YES ssl_tlsv1=YES ssl_sslv2=NO ssl_sslv3=NO rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem
編輯:在嘗試了 quanta 建議後,我在 Filezilla 中至少得到了一個失敗的目錄列表。下面是我從 Filezilla 的輸出。
Status: Connecting to [redacted]... Status: Connection established, waiting for welcome message... Response: 220 (vsFTPd 2.2.2) Command: AUTH TLS Response: 234 Proceed with negotiation. Status: Initializing TLS... Status: Verifying certificate... Command: USER [redacted] Status: TLS/SSL connection established. Response: 331 Please specify the password. Command: PASS ********* Response: 230 Login successful. Command: SYST Response: 215 UNIX Type: L8 Command: FEAT Response: 211-Features: Response: AUTH SSL Response: AUTH TLS Response: EPRT Response: EPSV Response: MDTM Response: PASV Response: PBSZ Response: PROT Response: REST STREAM Response: SIZE Response: TVFS Response: UTF8 Response: 211 End Command: OPTS UTF8 ON Response: 200 Always in UTF8 mode. Command: PBSZ 0 Response: 200 PBSZ set to 0. Command: PROT P Response: 200 PROT now Private. Status: Connected Status: Retrieving directory listing... Command: PWD Response: 257 "/" Command: TYPE I Response: 200 Switching to Binary mode. Command: PASV Response: 227 Entering Passive Mode (192,168,1,10,251,213). Command: LIST Error: GnuTLS error -53: Error in the push function. Error: Connection timed out Error: Failed to retrieve directory listing
編輯:錯誤似乎與 iptables 有關。下面列出了我的 iptables 配置。
# Generated by iptables-save v1.4.7 on Wed Aug 24 00:29:05 2011 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [157:20225] -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT -A INPUT -p tcp -m tcp --dport 60021 -j ACCEPT -A INPUT -p tcp -m tcp --dport 2011 -j ACCEPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A INPUT -p tcp -m tcp --dport 2011 -j ACCEPT -A INPUT -p tcp -m tcp --sport 1024:65535 --dport 64000:65535 -m state --state ESTABLISHED -j ACCEPT -A FORWARD -j REJECT --reject-with icmp-host-prohibited -A OUTPUT -p tcp -m tcp --sport 20 -j ACCEPT -A OUTPUT -p udp -m udp --dport 21 -j ACCEPT -A OUTPUT -p udp -m udp --sport 21 -j ACCEPT -A OUTPUT -p udp -m udp --sport 60021 -j ACCEPT -A OUTPUT -p tcp -m tcp --sport 2011 -j ACCEPT -A OUTPUT -p tcp -m tcp --sport 2011 -j ACCEPT -A OUTPUT -p tcp -m tcp --sport 20 -j ACCEPT -A OUTPUT -p tcp -m tcp --sport 64000:65535 --dport 1024:65535 -m state --state RELATED,ESTABLISHED -j ACCEPT COMMIT # Completed on Wed Aug 24 00:29:05 201
編輯:當執行下面 quanta 建議的查詢時,我得到以下資訊
grep: /usr/src/kernels/2.6.32-71.29.1.el6.x86_64-x86_64/.config: No such file or directory
所以 ip_conntrack_ftp 似乎沒有正確載入,我不知道如何糾正這個問題。
connect_from_port_20=YES
你想在活動模式下執行 vsftpd 嗎?如果是這樣,請添加以下 iptables 規則並重試:
iptables -A OUTPUT -p tcp --sport 20 -j ACCEPT
對於被動模式,試試這個:
# modprobe ip_conntrack_ftp
和:
iptables -A INPUT -p tcp --sport 1024: --dport 64000:65535 -m state --state ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp --sport 64000:65535 --dport 1024: -m state --state ESTABLISHED,RELATED -j ACCEPT