如何配置 vsftpd 以使用被动模式

如何配置 vsftpd 以使用被动模式

每当我vsftpd在 上安装时centos,我都只为用户设置 jail 环境,其余的是 的默认配置vsftpd。我创建用户并尝试使用filezilaftp 客户端进行连接,但无法使用被动模式进行连接。我总是将 更改transfer settings为主动模式以成功连接到 ,ftp server否则我会得到

 Error: Failed to retrieve directory listing

那么有没有办法可以改变vsftp.conf文件中的任何指令,然后我们就可以用被动模式连接到服务器?

答案1

要为 vsftpd 配置被动模式,您需要在 vsftpd.conf 中设置一些参数。

pasv_enable=Yes
pasv_max_port=10100
pasv_min_port=10090

这将启用被动模式并将其限制为使用 11 个端口进行数据连接。这很有用,因为您需要在防火墙上打开这些端口。

iptables -I INPUT -p tcp --destination-port 10090:10100 -j ACCEPT

如果测试一切正常,则使用以下命令保存防火墙状态:

service iptables save

这将更新/etc/sysconfig/iptables文件。

要在 CentOS 7 中执行此操作,您必须使用新的firewalld,而不是 iptables:

找到你的区域:

# firewall-cmd --get-active-zones
public
  interfaces: eth0

我的区域是“公共”的,因此我将我的区域设置为公共,添加端口范围,然后我们重新加载:

# firewall-cmd --permanent --zone=public --add-port=10090-10100/tcp
# firewall-cmd --reload

当你建立连接时会发生什么

  • 您的客户端通过端口 21 连接到 vsftpd 服务器。

  • 服务器响应客户端,告诉它从上面指定的范围中连接到哪个端口。

  • 客户端在指定端口上建立数据连接并且会话继续。

有一个很好的解释不同的 ftp模式这里。

答案2

要启用被动模式,请在 vsftp.conf 中设置以下配置选项:

pasv_enable=YES
pasv_min_port=41361
pasv_max_port=65534
pasv_address=xxx.xxx.xxx.xxx

您当然可以更改起始和结束端口,并且应该用服务器的公共 IP 替换 xxx。

此外,您应该在防火墙中打开被动模式端口范围。在 centos 上,您可以ip_conntrack_ftp在防火墙中加载模块来处理 ftp 连接。编辑/etc/sysconfig/iptables-config并将 ip_conntrack_ftp 添加到 IPTABLES_MODULES 选项。然后重新启动 iptables:

/sbin/service iptables restart

答案3

旁边pasv_enable=YES,指定 VSFTP 将运行 PASV 模式的端口范围:

pasv_min_port=50000
pasv_max_port=50999
pasv_enable=YES

不要忘记配置iptables允许在这些端口上传输数据包:

iptables -I INPUT -p tcp --dport 50000:50999 -j ACCEPT

答案4

通常,不是 ftp 服务器 vsftpd,而是 iptable 之类的防火墙阻止使用被动模式(阻止数据传输所需的 tcp 连接)。

相关内容