在 RHEL6 上运行命令时 VSFTPD 挂起

在 RHEL6 上运行命令时 VSFTPD 挂起

我正在首次设置 vsftpd 服务器。这是一个 openstack VM,因此我们的安全和云团队拥有大量默认配置,这些配置会自动应用于 vsftpd 实例。

以下是我们的配置(由我们的安全团队决定):

anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
xferlog_std_format=NO
log_ftp_protocol=YES
pasv_enable=NO

我为 ftp 创建了一个名为 ftpuser 的本地系统用户。我的目的是让用户以该用户身份登录,并将文件写入该用户的目录。

当我们尝试登录时,执行任何命令都会得到以下结果:

msarro:~/ $ ftp x.x.x.x                                                                                                                      
Connected to x.x.x.x.
220 (vsFTPd 2.2.2)
Name (x.x.x.x:msarro): ftpuser
331 Please specify the password.
Password: 
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
550 Permission denied.
200 PORT command successful. Consider using PASV.

此时,它挂起了。

大约 30 秒后,显示以下消息:

421 Service not available, remote server timed out. Connection closed.

连接关闭。

我们在 RHEL6 上运行 vsftpd-2.2.2-13。我已确保将以下行添加到 /etc/hosts.allow:

vsftpd : ALL

目前,除了切换到被动模式之外,我找不到任何关于如何解决问题的建议。这样做会出现以下情况:

msarro:~/ $ ftp x.x.x.x                                                                                                                      [13:13:08]
Connected to x.x.x.x.
220 (vsFTPd 2.2.2)
Name (x.x.x.x:msarro): ftpuser
331 Please specify the password.
Password: 
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
229 Entering Extended Passive Mode (|||31582|).

然后它会挂起约 1 分钟,并显示以下行:

ftp: Can't connect to `x.x.x.x': Operation timed out
200 EPRT command successful. Consider using EPSV.

如有任何建议,我们将不胜感激。

答案1

FTP 总是存在防火墙问题,因为它对数据使用单独的连接。

通过主动 FTP,数据连接将返回到客户端,因此它可能会被客户端防火墙(或可能是服务器端严格的传出规则)阻止。

使用被动 FTP 时,会与服务器建立第二个连接,这可能会被服务器端防火墙阻止。无论如何,“pasv_enable=NO”都会排除此选项。因此,您只能使用主动 FTP。

因此从服务器开始,查看防火墙规则是否阻止了从端口 20 出站的 TCP;然后移至边界防火墙(如果适用),然后移至台式机。

相关内容