Linux -- 防火墙对FTP的影响

  FTP默认使用21端口进行连接,但实际上不止使用了21端口,如果防火墙是打开的,那就会碰到一个问题就是,能登录ftp,但是下载文件却会有问题。
  FTP是常见的基于TCP的网络服务,它使用了两个TCP连接来建立逻辑通信信道,即控制连接和数据连接。当客户端与服务器建立一个FTP会话时,使用TCP创建一个持久的控制连接以传递命令和应答。当发送文件和其它数据传输时,它们在独立的TCP数据连接上进行传递,这个连接根据需要创建和拆除。更为复杂的是,FTP标准指定了创建数据连接的两种不同方法,即正常(主动)数据连接和被动数据连接
  FTP的控制连接总是由客户端首先发起的,在主动模式下数据连接是由服务端发起的(即FTP Server),在被动模式下数据连接是由客户端发起的。成功建立控制连接后,在进行主动连接时,客户端发送PORT命令,其中内嵌了地址和端口信息,以告知服务器进行连接,然后服务器打开默认端口20建立到客户端已告知地址和端口的数据连接。在进行被动连接时,客户机使用PASV命令告诉服务器等待客户机建立数据连接,服务器响应,告诉客户机为了数据传输它应该使用服务器上的什么端口(随机打开)。这种工作机制带来了一个严重的问题:在FTP的命令(PORT或PASV)或对它们的回答中传递IP地址及端口号与网络分层机制严重冲突,在FTP客户端与服务器的通信信道之间的网关设备(防火墙或路由器)上启用了NAT功能的情况下将出现连接性问题。

主动模式

  在主动模式下,由客户端打开一个端口并告知ftpServer来连接这个端口进行数据传输。

被动模式

  在被动模式下,ftpServet随机打开一个可用的TCP端口,并将地址和端口信息(如IP:172.16.6.1,Port:50000)返回给客户端,告知客户端利用这些信息进行数据连接。

结论

  可以看到,不管哪种模式下,除了21端口都会随机打开一个端口来进行数据传输,而如果其中任意一台服务器没有关闭防火墙,则数据连接就会被阻拦,现象就是一直在连接中,在下载,却什么东西都没有,页面的现象就是一直在转圈,加载不出来,就是因为底层一直在尝试建立连接。
  大多数管理员设置防火墙的默认访问控制策略是:允许从内部到外部的一切流量,禁止从外部到内部的一切流量。就FTP应用来说,为了简化防火墙策略的配置又兼顾安全策略要求,客户机选择被动模式进行数据连接较好,不需要对其前端的防火墙设置特别的访问控制策略,但要求服务器前端的防火墙能动态打开数据连接所需的随机端口;服务器端则选择主动连接较好,为允许客户端的访问,其前端防火墙的访问控制策略仅需要显式对外开放21端口即可,但需要客户机前端的防火墙能动态打开数据连接所需的端口。从方便使用的角度考虑,既然提供FTP服务,就要配置好服务器前端的防火墙,使其访问控制策略能支持两种模式下的FTP服务正常工作。
  综上所述,客户端使用被动方式连接FTP服务器是最恰当的,能最大限度地降低连接性问题。同时降低了对客户机前端防火墙备的要求,不需要像主动方式那样动态开放允许输入的随机端口,把可能的安全威胁推给了服务器端。

做法

  1. 将内网的防火墙关闭,这样是绝对没有问题的,只要做好外网的防火墙控制就好
  2. 配置FTP Server,控制随机打开的端口在一个范围内,在客户端这边就只需要开一个范围内的端口就可以了,这样也可以减小一点危害。

参考:防火墙对FTP主动和被动模式的影响

发布了66 篇原创文章 · 获赞 18 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Aeve_imp/article/details/100668821