vsftpd 被动端口配置不适用

vsftpd 被动端口配置不适用

简而言之:它确实以被动模式连接,但尽管配置如此,它就是不使用我尝试使用的端口。

设置pasv_max_portpasv_min_port似乎被忽略了,但我看不出是什么阻止 vsftpd 识别或应用配置。

我采取的程序是:

  1. [服务器] 编辑 vsftpd.conf 并保存

    pasv_max_port=60000
    pasv_min_port=60003
    #Server's public IP (AWS EC2 Elastic IP)
    pasv_address=*.*.*.*  
    

    *我尝试了一些其他的组合:如下所示。

  2. [服务器] 使用以下命令重新启动 vsftpdservice vsftpd restart

  3. [客户端(Filezilla)] 以被动模式连接到端口 22 上的 *.*.*.*。SSL 和登录一切正常,然后它返回以下内容:

    Command:    PASV
    Trace:  CFtpControlSocket::OnReceive()
    Response:   227 Entering Passive Mode (*,*,*,*,254,73).
    

这看起来像是连接到了*.*.*.*:65097。(而且这个端口号每次尝试都会改变,好像我没有设置用于被动模式的端口范围。)果然,如果我将防火墙设置为关闭除端口 22 和范围 60000 - 60003 之外的所有其他端口,它就不会再继续了。

我尝试了其他范围,如 62010-62019,甚至重新启动了 Linux,但它仍然表现出相同的行为。

这和 iptables 冲突吗?(我对此表示怀疑,因为我的机器在 AWS EC2 实例上运行,所以就像在 NAT 后面运行一样,对吗?)

没有找到与我的问题相关的东西,所以我认为我一定是做了一些愚蠢的事情,但是拼写已经逐字检查,并且配置下面的行pasv_address确实生效了(如果我将它们留空并重新启动 vsftpd,则不起作用)。


  • 硬件
    运行“Amazon Linux AMI 2018.03.0.20180412 x86_64 HVM GP2”的 AWS EC2 实例
  • 网络
    防火墙(AWS 安全组)配置为向客户端 IP 打开所有端口。我的目标是只为客户端打开必要的端口(21, 60000 - 60003
  • 包裹
    从存储库安装 vsftpd amzn-mainvsftpd.x86_64,2.2.2-13.13.amzn1)
  • 可用端口
    cat /proc/sys/net/ipv4/ip_local_port_range返回32768 60999

我的目标是仅打开受控范围内的端口进行数据传输,并且它仅适用于具有固定 IP 地址的单个客户端。这意味着我实际上可以选择主动模式并仅为该 IP 地址打开端口 20,但是为了坚持要替换的当前 FTP 服务器的旧配置,我宁愿使用被动模式。-> 刚刚发现由于客户端的安全问题它必须是被动模式。

..有人有什么想法吗?


在此之前,我曾尝试过其他一些 vsftpd.conf,例如

pasv_enable=YES
pasv_max_port=60000
pasv_min_port=60003
port_enable=YES
pasv_addr_resolve=YES
pasv_address=*.*.*.*

我也没有运气。目前我只是坚持使用这种事情所需的最少行数(默认pasv_enable情况下YES)。

答案1

已解决:@Zdenek 从评论部分注意到我的配置中有一个愚蠢的错误:

最大端口必须高于最小端口 -@Zdenek

因此,修复

pasv_max_port=60000
pasv_min_port=60003

pasv_max_port=60003
pasv_min_port=60000

就是所有需要做的事情。


我认为这太愚蠢了,不应该留在这个网站上,但我认为对于那些忽略了这一点或期望 vsftpd 在出现此类配置错误时返回错误的人来说,这可能会有所帮助,所以保留原样。

再次感谢@Zdenek 的关注!

相关内容