centos内网搭建外网可访问的vsftpd服务

您所在的位置:网站首页 外网访问不了内网 centos内网搭建外网可访问的vsftpd服务

centos内网搭建外网可访问的vsftpd服务

2024-07-16 15:14| 来源: 网络整理| 查看: 265

需求       

        给公司存储服务器搭建一个vsftpd,用作外网拉取文件,通过虚拟路有专用通道来拉取网速太慢,所以使用端口映射的方式直接访问vsftpd

操作

部署

服务器内网ip 10.0.10.120

#yum install vsftpd

关闭防火墙和selinux

#service iptables stop

#setenforce 0

编辑配置

#vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO  #不允许匿名用户访问

write_enable=YES          #允许用户写权限

reverse_lookup_enable=NO   #没有加此配置前客户端登录特别慢

其他默认配置

#service vsftpd start

#chkconfig vsftpd on

配置外网映射

使用内网客户端访问正常

在防火墙上做对应的外网映射  内网ip为10.0.10.120 端口为21  外网ip和端口这里不做描述

映射后外网访问输入账户密码后显示没有权限,然后FTP断掉

#vim /etc/vsftpd/vsftpd.conf

pasv_promiscuous=YES

可能是ftp的保护设置 配置文件中增加 pasv_promiscuous 关闭PASV模式的安全检查。

#service vsftpd restart

外网再次访问输入账户密码后显示连接超时,和刚才问题已经不一样

思考发现是因为FTP的主被动模式原理造成的传输问题,访问时21端口,但是回传数据是其他端口。所以我需要增加配置来限制回传端口并映射端口

#vim /etc/vsftpd/vsftpd.conf

pasv_enable=YES     #开启被动模式

connect_from_port_20=NO  #关闭主动模式 pasv_address=61.149.7.198    #回传给客户端的IP pasv_min_port=22221             #定义被动模式的端口范围 pasv_max_port=22222

保存文件映射内网22221端口和22222端口,可以把端口范围设置大一些,批量映射,这里我只映射了两个被动端口可能造成的问题就是最大两个客户端同时传输数据

#service vsftpd restart

外网访问正常

原理

关于FTP

FTP是基于TCP的一个服务。它之所以特别是特别在它使用了两个端口,一个用来传送数据,一个用来传送命令。大家通常理解的,是用来传送命令的使用21端口,用来传送数据的使用20端口。但实际上并不是总是用20端口进行数据传输的,这还是要看使用的模式。

 

FTP:主动模式

在主动模式中,FTP客户端使用一个非分配端口(N>1023)与FTP服务端的21命令端口建立连接,并开始倾听N+1端口,同时通过21端口将N+1端口告诉FTP服务端。FTP服务端获取到客户端告诉它的N+1端口后,使用数据传输的20端口与FTP客户端N+1端口建立连接,从而进行数据传输。图示如下:

第一步:FTP客户端通过1026端口(N>1023)与FTP服务端的21端口建立通讯,并告诉FTP服务端它监听的数据传输端口是1027。

第二步:FTP服务端发送ACK给FTP客户端的1026端口。

第三步:FTP服务端通过数据端口20端口与FTP客户端1027端口建立连接。

第四步:FTP客户端传送ACK给FTP服务端以确认建立连接。

根据上述描述,站在FTP服务端防火墙的角度,需要开通以下网络关系:

FTP客户端任意端口到FTP服务端21端口。

FTP服务端21端口到FTP客户端的大于1023端口。

FTP服务端20端口到FTP客户端的大于1023端口。

FTP客户端大于1023端口到FTP服务端20端口。

可以看出,FTP主动模式最大的问题是,FTP客户端不是直接创建到FTP服务端20数据传输端口的连接,而只是告诉FTP服务端自己监控的端口,由FTP服务端创建连接。这会造成FTP客户端的防火墙认为这是一个外部建立的连接而被拦截掉。

 

FTP:被动模式

为了解决主动模式中由于FTP服务端建立连接造成的问题,所以FTP有另一种模式——被动模式。在FTP被动模式中,FTP客户端负责创建命令传输和数据传输两条连接,从而解决防火墙拦截FTP服务端建立连接到FTP客户端的问题。当FTP客户端创建FTP连接的时候,FTP客户端会开通随机的两个端口N和N+1(N>1023)。其中,N端口与FTP服务端21端口建立通讯,并发送PASV命令到FTP服务端。FTP服务端接收到PASV命令之后,会随机创建一个端口P(P>1023),并将端口P返回给FTP客户端。FTP客户端拿到P端口后,就会通过N+1端口与P端口建立数据传输连接。图示如下:

第一步:FTP客户端与FTP服务端命令传输端口21建立通讯,并传输PASV命令。

第二步:FTP服务端通过21端口响应FTP客户端1026端口,并告诉FTP客户端它将监听2024端口作为数据传输端口。

第三步:FTP客户端1027端口与FTP服务端2024端口建立连接。

第四步:FTP服务端通过2024端口返回ACK确认给FTP客户端1027端口。

根据上述描述,站在FTP服务端防火墙的角度,需要开通以下网络关系:

1.FTP客户端任意端口到FTP服务端21端口。

2.FTP服务端21端口到FTP客户端的大于1023端口。

3.FTP客户端任意端口到FTP服务端的大于1023端口。

4.FTP服务端大于1023端口到FTP客户端大雨1023端口。

由此可见,被动模式解决了主动模式在客户端上面开通网络关系的问题。但存在另一个问题,就是FTP客户端需要开通网络关系到FTP服务端的所有大于1023端口,这可能也是网络安全不允许的。不过现在有些FTP可以指定一个范围的端口,以达到控制安全的作用。

 

一个细节

在使用FTP命令行打开FTP连接进行通讯的时候,有时候会有这样的响应:

 

PORT 192,168,150,80,14,178

227 Entering Passive Mode (192,168,150,90,195,149)

这些响应中,那串数子头4个是IP地址,后两位是表示端口,端口的计算是将第5位数乘以256加上第六位数。如192,168,150,90,195,149,则端口为195*256+149=50069。

     关于ftp原理参考https://www.cnblogs.com/huangzijian/p/6200802.html     

 

 

.



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3