GnuTLS 错误 -53:推送功能出错,使用 vsftpd

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

编辑:尝试了量子建议后,我在 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 似乎没有正确加载,我不确定如何纠正这个问题。

答案1

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

相关内容