【问题标题】:What Standard/RFC Specifies That Passive Mode FTP Ports Must Be Greater Than 1023?什么标准/RFC 规定被动模式 FTP 端口必须大于 1023?
【发布时间】:2016-01-02 12:27:52
【问题描述】:

我正在与我们的网络管理员协商他们应该如何配置他们的防火墙以允许我将我的 FTP 客户端用于 FTP 和 FTPS 的被动模式,并且他们已经要求允许通过特定的目标端口。据我了解,FTP 服务器对 PASV 命令的响应将始终指定大于 1023 的端口,但我无法找到明确声明这一点的标准或文档!

RFC 959 似乎很接近,因为在第 5.3.2 节中它定义了 BNF,如下所示:

<port-number> ::= <number>,<number> 
<number> ::= any decimal integer 1 through 255

(虽然这实际上是针对 PORT 命令的,但我假设它假设对 PASV 的 227 响应使用相同的格式)。

随后在Errata ID 3039 中确定这是不正确的,因为该数字当然应该是 0 到 255。但这意味着端口号可以是 0 到 65535 之间的任何端口号。

为什么要求它最终位于 1024-65535 的非系统端口范围内?还有其他的 RFC 这么说吗?

【问题讨论】:

    标签: ftp standards


    【解决方案1】:

    看看RFC 1579 Firewall-Friendly FTP。它提到了以下内容(尽管在客户端,而不是服务器端):

    FTP 规范说,默认情况下,所有数据传输都应该 通过单个连接。主动打开由服务器完成, 从其端口 20 到客户端计算机上使用的相同端口 用于控制连接。客户端进行被动打开。

    无论好坏,大多数当前的 FTP 客户端都不是这样的。 每次传输都使用一个新连接;以免发生冲突 TCP的TIMEWAIT状态,客户端每次选择一个新的端口号 并发送一个 PORT 命令向服务器宣布这一点。

    这两种情况都不适合防火墙。如果使用包过滤器 (例如,由大多数现代路由器提供),数据通道 请求显示为对未知端口的传入呼叫。 大多数防火墙 被构造成只允许来电到某些认为- 安全的端口,例如 SMTP。通常的妥协是仅阻止 “服务器”区域,即低于 1024 的端口号。 但该策略 有风险;诸如 X Windows 之类的危险服务生活在更高的 端口编号。

    服务器必须使用非系统端口 >= 1024 并不是真正的明确要求。但这是现代系统中的常见做法。

    IIRC,在旧系统上,系统端口 1-1023 只能在低级系统/内核服务中使用(这也是它们一开始就被保留的部分原因),并且不能在不支持的用户模式应用中使用以系统权限运行。因此 FTP 服务器可以接受端口 21 上的客户端并在端口 20 上执行传输,但不能在任何其他系统端口上执行传输,因此 PASV 端口范围必须 >= 1024。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-14
      • 2023-02-22
      • 2012-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-18
      相关资源
      最近更新 更多