转自:http://blog.chinaunix.net/uid-10696433-id-2935794.html

 

ftp与大多数应用层协议不同的是, 它采用了二个端口. 控制端口21,数据端口20.这就导致了客户端与服务器通信的四个端口连接问题.

主动连接流程为,服务器为S,客户端为C

应用层——FTP主动连接与被动连接的区别

  • C以一个随机端口x与S的21端口相连, 这个随机端口范围为 1024~65535. 并发送命令port x+1, 指明数据端口. C(x) -> S(21)
  • S收到该命令后, 将返回一个ACK. S(21) -> C(x)
  • S将用自己的20端口与C的x+1端口相连. S(20) -> C(x+1)
  • C给S返回一个ACK. C(x+1) -> S(20)

对于防火墙,这时你需要开放如下规则

  • 允许本机(1024~65535)范围内任意端口访问S的21端口
  • 允许本机(1024~65535)范围内任意端口访问S的21端口
  • 允许服务器21端口访问本机(1024~65535)范围内任意端口
  • 允许服务器20端口访问本机(1024~65535)范围内任意端口

我们可以按步骤具体考虑一下

  • C(x) -> S(21), 这个没有问题, C只要允许对外部主机21端口访问, S只要接受对21端口的访问即可
  • S(21) -> C(x), 这个也没问题, 开启状态模块. 用其中的Related和Established就可以实现.
  • S(20) -> C(x+1), 这个就出问题了. 这个连接是由S主动发起的. 状态模块不派不上用场. 对于S来说, 只要将output链设为接受就可以实现. 但对于C, 它要接受别人对它高位端口的访问, 这如何实现? 如果你开放高位端口的访问权限, 那么你的主机就很容易受到***病毒的侵害. 你可能会设置一条针对S的IP和端口的高位端口访问权限. 如果你只访问特定的ftp服务器,这个当然可以.如果你是在网上浏览很多FTP服务器, 你就需要为每一个可能用到的ftp服务器设定一条规则. 这个工作量可选而知.
  • C(x+1) -> S(20), 这个也很容易实现.

现在可以得到结论.
对于服务器, 它只需要接受20和21端口的连接即可
对于客户机, 它需要能访问外部20和21端口, 同时允许外部主机的20 21端口访问自己的高位端口.
服务器易于实现,而客户机很难. 这也反应了主动连接的特点, 使得服务器易于管理.而客户端则难以管理

被动连接流程为,服务器为S,客户端为C

应用层——FTP主动连接与被动连接的区别

  • C以一个随机端口x与S的21端口相连, 这个随机端口范围为 1024~65535, 并发送命令 PASV. C(x) -> S(21)
  • S收到命令, 返回一个ACK, 并在其中指明一个新的高位端口y. S(21) -> C(x)
  • C发起 x+1端口到S的y的端口的连接. C(x+1) -> S(y)
  • S返回一个ACK. S(y) -> C(x+1)

对于防火墙,这时你需要开放如下规则

  • 允许本机(1024~65535)范围内任意端口访问S的21端口
  • 允许本机(1024~65535)范围内任意端口访问S的(1024~65535)端口
  • 允许服务器21端口访问本机(1024~65535)范围内任意端口
  • 允许服务器(1024~65535)端口访问本机(1024~65535)范围内任意端口

我们可以按步骤具体考虑一下

  • C(x) -> S(21), 这个没有问题, C只要允许对外部主机21端口访问, S只要接受对21端口的访问即可
  • S(21) -> C(x), 这个也没问题, 开启状态模块. 用其中的Related和Established就可以实现.
  • C(x+1) -> S(y), 这个可能会出问题了. 对于S来说, 它需要开放高位端口的访问权限,同样引起不安全因素.
  • S(y) -> C(x+1), 这个同样可以用状态模块容易实现.

现在可以得到结论.
对于服务器, 它需要接受21端口和任意高位端口的连接
对于客户机, 它需要能访问外部21端口和任意高位端口, 同时允许外部主机的20和任意高位端口访问自己的作意高位端口. 这可以通过状态模块实现. 客户机真正要做的就只是开启状态模块而已, 因为Output链一般都是设为接受的.
这就体现了被动连接的特点, 客户端易于实现, 而服务器很难实现. 方便用户却麻烦了ftp管理员. 一个比较好的折衷是目前大部分FTP服务器软件都可以自行设置启用的高位端口范围,这样在防火墙设置中可以只开放少量高位端口的访问权限.

 

转载于:https://blog.51cto.com/dong4716138/1135133

相关文章:

  • 2021-12-01
  • 2022-12-23
  • 2022-12-23
  • 2021-04-09
  • 2021-11-23
  • 2021-12-02
  • 2022-02-09
猜你喜欢
  • 2021-08-03
  • 2022-12-23
  • 2022-12-23
  • 2021-08-24
  • 2022-12-23
  • 2021-09-19
相关资源
相似解决方案