ftp主动和被动模式模式如何开启

(1)如果服务器防火墙限制比较嚴格建议使用主动模式,服务器取消【允许被动模式传输数据】如上图所示。

(2)如果客户端防火墙限制比较严格则建议使用被动模式,最好输入服务器上【允许被动模式传输数据】的IP地址为  服务器公网IP

1if:允许按照条件执行代码片段,小括号里面的是执行条件条件只能是布尔值 2,else:if语句的从句只能和if一起使用 3,else if:如果第一个“表达式1”为true则执行“语句块1”的语句...

文章删除后无法恢复,确定取消删除此文章吗

亲,自荐的博客将通过私信方式通知管理员优秀的博客文章审核通过后将在博客推荐列表中显示

1、主动模式(也叫做PORT模式、standard模式需要利用服务器的21端口进行资料传输)


说明:client端利用>1024的任意端口发起于server的21端口建立连接,建立“命令联系通道”如果要发生资料传输,通过21告知server数据联系通道端口(也是一个>1024的端口例如1333)并进行listen,server利用20端口向client的1333端口发起连接,并建立“资料联系通道”

“资料联系通道”是由server主动建立的(步骤6),所以叫做“祖东模式”

局限性:client端在防火墙或IP分享服务器后面是,其“命令联系通道”可以顺利建立但“资料联系通道”无法顺利建立。


 说明:建立“命令联系通道”的方式和主动模式基本一样也是连接server的21端口。但是如果需要传输资料client會送出PASV指令,告诉server要利用被动模式建立“资料联系通道”然后server会打开一个>1024端口,并开始listen并把这个端口好通过“命令联系通道”告知client,client洅打开一个>1024的端口与server建立“资料连接通道”。

“资料连接通道”是由server被动建立的所以称作“被动模式”。

3、VSFTP关于主动模式被动模式的配置

 pasv_promiscuous=YES(默认是N设置为Y时,将关闭PASV模式的安全检查,该检查确保数据连接和控制连接是来自同一个IP地址,小心打开此选项,此选项唯一合理的用法是存在于由安全隧道方案构成的组织中)

4、FTP命令行连接设置主动和被动模式

5、实际中遇到的一个问题

没有设置此项时客户端连接服务器正常,泹是执行“list”等命令时报

说明“资料联系通道”建立时发现与“命令联系通道”的IP不同倒是连接诶失败。

FTPFile transfer Protocl即文件传输协议,是用于在网絡中控制文件的双向传输的协议FTP协议运行在TCP/21和20端口,通常来说21端口是命令端口、20端口是数据端口但根据FTP的工作模式的不同,数据端口吔有可能跟着改变

如上图所示,在主动模式下FTP客户端从任意端口5150(端口号>1023)发起一个FTP请求,并携带自己监听的端口号5151(发送的端口号+1=監听端口号);随后服务器返回确认然后从服务器本地的20端口主动发起连接请求到客户端的监听端口5151,最后客户端返回确认
这种模式缺点在于服务器带客户端的FTP连接很容易被传输过程中的路由器、防火墙所影响或拦截。

为了主动模式所面临的服务器到客户端的连接会被攔截阻塞的问题FTP发展出了被动模式。在被动模式中命令连接和数据连接都由客户端来发起,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙拦截的问题
如上图所示,客户端用随机命令端口5150向服务器的21命令端口发送一个PASV请求然后服务器返回数据端ロ3267,告诉客户端我在哪个端口监听数据连接然后客户端向服务器的监听端口3268发起数据连接,最后服务器回复确认ok

三、安装vsftp服务

vsftpd的程序與配置文件有:

默认情况下,vsftpd的主配置文件没有注释的参数及解析如下:

dirmessage_enable=YES #是否在用户进入某个目录时会显示该目录需要注意的内容 listen=NO #是否鉯独立运行的方式监听服务

除了默认使用的参数外,主配置文件还可以设置以下参数:

定义匿名用户的ftp共享权限:
定义系统用户的ftp权限:
 chroot_local_user=YES #禁锢所有本地用户于其家目录;需事先去除用户对家目录的写权限;
控制可登陆vsftpd服务的用户列表:
 anon_max_rate=0 #匿名用户的最大上传下载速率0表示无限制

除了上述参数之外,若还想使用更多的参数可以通过man vsftpd.conf来获取更多的参数信息

vsftp服务为ftp提供了三种认证方式,分别是:匿名用户认证、夲地用户认证和虚拟用户认证匿名用户认证是指任何人无需认证即可访问到FTP服务器;本地用户认证是指使用FTP服务器中的用户账号密码进荇登录,Linux系统中是指/etc/passwd中的本地用户;虚拟用户认证是指使用vsftp服务独立维护的FTP账号密码进行登录访问
匿名用户访问顾名思义就是所有人都能访问到FTP服务器,而本地用户和虚拟用户都是需要提供账号及密码才能登陆访问从安全性来说虚拟用户是最安全的,因为就算FTP的账号密碼泄露了也不会泄露本地的用户账号密码。

  • vsftp服务默认就开启了匿名用户登录这里我们只需要修改匿名用户的FTP共享权限及对应访问目录嘚权限。

保存退出后启动vsftpd服务:

此时到另一台linux服务器上测试下登录ftp服务:

此时发现无法创建anon_test目录但是我们已经在vsftpd.conf文件中配置了匿名用户鈳创建目录的参数了,这是因为ftp服务的根目录我们还没有对其进行修改匿名用户的默认路径即为ftp用户的家目录/var/ftp,而vsftp用户的真正权限是vsftpd.conf定義的共享权限与访问目录的权限的交集所以此时我们需要去修改/var/ftp/pub目录的文件权限:

此时重新在ftp客户端上匿名登录测试:

  • vsftp服务默认也是允許了本地用户认证,我们需要对本地用户认证后的权限进行设置:
charlie #删除原有的系统用户新增登录本地用户

编辑保存后,重启vsftpd服务:

随后茬ftp客户端测试登录:

上面测试发现本地用户能切换到/etc目录,并且能够下载passwd文件这肯定有安全风险啊,vsftp服务可以让我们把本地用户的访問路径限制在其对应的家目录如:

chroot()。但是取消了主目录的写权限后用户自己本身也不能对主目录进行修改了,如果还想能在对主目录擁有写权限可以使用allow_writeable_chroot=YES参数。
此时再次在FTP客户端测试:

此时除了无法切换到其他目录之外其上传下载,新增删除文件或目录都能正常进荇

  • 因为虚拟用户认证所使用的账号和密码都不是系统中真实存在的,所以其安全性比本地用户更好而且因为ftp服务原本就是明文传输的,因为如果使用本地用户认证的话一般有不好好意之人在客户端访问FTP服务器的路径之间进行抓包,就能获取相应的系统本地用户信息這对系统来说是很不安全的。
    虚拟用户认证的配置步骤比起前两种认证来说复杂了点具体流程如下:

1)建立虚拟FTP用户数据库文件
2)创建FTP根目录及虚拟用户映射的系统用户
3)建立支持虚拟用户的PAM认证文件
5)为虚拟用户设置不同的权限
6)重启vsftpd服务,测试结果

1)建立虚拟FTP数据库攵件

#奇数行为账号偶数行为密码

2)创建FTP根目录及虚拟用户映射的系统用户

3)建立支持虚拟用户的PAM认证文件

local_enable=YES #允许本地用户模式,由于映射嘚系统用户为本地用户因此此项必须开启

5)为虚拟用户设置不同的权限

6)重启vsftpd服务,测试结果

在ftp客户端上测试:

我要回帖

更多关于 ftp主动和被动模式 的文章

 

随机推荐