我正在努力第一次build立一个vsftpd服务器。 这是一个OpenStack虚拟机,所以我们的安全和云团队有一堆默认的configuration自动应用到vsftpd实例。
这是我们的configuration(由我们的安全团队决定):
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
我创build了一个名为ftpuser的ftp本地系统用户。 我的意图是让用户使用该用户login,并将文件写入该用户的目录。
当我们尝试login时,执行任何命令都会产生以下结果:
msarro:~/ $ ftp xxxx Connected to xxxx 220 (vsFTPd 2.2.2) Name (xxxx: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.
连接closures。
我们在RHEL6上运行vsftpd-2.2.2-13。 我已经确保将以下行添加到/etc/hosts.allow:
vsftpd : ALL
在这一点上,我无法find任何有关如何解决这个问题的build议,无法转换到被动模式。 这样做提出以下内容:
msarro:~/ $ ftp xxxx [13:13:08] Connected to xxxx 220 (vsFTPd 2.2.2) Name (xxxx: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 `xxxx': Operation timed out 200 EPRT command successful. Consider using EPSV.
任何build议将非常感激。
对于防火墙,FTP始终存在问题,因为它使用单独的数据连接。
在主动FTP中,数据连接返回到客户端,因此可能被客户端防火墙阻止(或者在服务器端可能有热情的传出规则)。
使用被动FTP时,服务器会进行第二次连接,这可能会被服务器端防火墙阻止。 在任何情况下,“pasv_enable = NO”都可以作为一个选项。 所以你被困在主动的FTP。
所以从服务器开始,看看防火墙规则是否阻止了TCP从端口20出站; 然后移动到边界防火墙(如果适用的话),然后移到桌面机器