本章概述
主要介绍FTP服务是什么?有什么功能,有哪些传输模式,并进行试验配置服务。
一、什么是FTP服务?
FTP(file Transfer Protocol,文件传输协议),是典型的C/S架构的应用层协议,由客户端软件和服务端软件两个部分共同实现文件传输功能,FTP客户端和服务器之间的连接时可靠的,面向连接的,为数据的传输提供了可靠的保证。
FTP 是TCP传输协议,主要使用20和21端口
- 20端口用来传输数据
- 21端口用来建立连接(传输指令)
FTP是一种文件传输协议,它支持两种模式
- 一种叫做Standard(也就是Active,主动方式),客户端发送PORT命令到服务器。
- 另一种叫做Passive(也就是PASV被动方式),客户端发送PASV命令到服务器。
二、FTP的作用和接口信息
FTP的作用
- internet上用来传输文件的协议
FTP服务器的接口信息
- 20端口用于建立数据连接,并传输文件数据
- 21端口用于建立控制连接,并传输FTP的控制命令
三、FTP的工作原理和流程
FTP数据连接分为主动模式和被动模式
- FTP会话包含了两个通道, 控制通道 和 数据传输通道 ,FTP的工作有两种模式,一种是主动模式,一种的被动模式,以FTP server为参照。
- 主动模式: 服务器主动连接客户端传输
- 被动模式: 服务器等待客户端连接。
注意:无论时主动还是被动模式,首先控制通道都是先建立起来,只是在数据传输模式上的区别。
1、主动模式
FTP客户端连接到FTP服务端的21号端口,发送用户名和密码,客户端随机开放一个端口(高位端口:1024以上),发送PORT命令到FTP服务器,告知服务器客户端采用主动模式,并开放端口,FTP服务器收到PORT主动模式命令和端口后,通过服务器的20号端口和客户端开放的端口连接,发送数据。
解释: 主动模式就是:客户端开放一个高位端口连接到FTP服务器的21号端口,发送用户名和密码和PORT命令以及自己开放的高位端口号,告知FTP服务器、客户端采用的是主动模式,FTP服务器收到PORT命令和端口后,通过自己的20号端口来和客户端另一个端口号进行连接,发送数据
注意:主动模式的情况,客户端必须关闭防火墙,否则无法传输数据。
2、被动模式
FTP客户端连接到FTP服务器所监听的21号端口,发送用户名和密码,还有PASV命令到FTP服务器,服务器在本地随机开放一个端口(1024以上),然后把开放的端口告知客户端,然后客户端再连接到服务器开放的端口进行数据传输。
解释: 被动模式就是:客户端连接到FTP服务器的21号端口,发送用户名和密码和PASV和自己开放的一个端口,告诉FTP服务器,客户端采用的是被动模式,服务端收到后,会在本地也开放一个高位端口号,并告知客户端这个端口号,等待客户端过来进行连接,客户端通过自己的另一个高位端口号连接FTP的高位端口号之后,开始传输数据。
四、搭建和配置FTP服务
1、匿名用户案例
1.1 下载服务包、备份配置文件
关闭防火墙、核心防护
查看下载FTP服务包(服务包为vsftpd)
下载完成之后进行开启服务
进行备份ftp服务的主要配置文件
1.2 修改配置文件
进入配置文件
需要修改配置文件内容描述
anonymous_enable=YES #开启匿名用户访问。默认开启
write_enable=YES #开放服务器的写权限(若要上传必须开启)。默认已开启
local_umask=022 #设置用户所上传数据的权限掩码(反掩码)
anon_upload_enable=YES #允许匿名用户上传文件。默认已注释,需取消注释
anon_mkdir_write_enable=YES #允许匿名用户创建(上传)目录。默认已注释,需取消注释
anon_other_write_enable=YES #允许匿名删除、重命名、覆盖等操作。需添加
anon_root=/var/ftp/pub
#anon_root 针对匿名用户(如果不设置默认为此目录,可以进行修改,修改之后修改给它权限)
修改文件 /var/ftp/pub 权限为777
重启服务
1.3 匿名访问测试
开启一台windows系统,进行登录
- windows下面的根目录在linux上面显示的目录就是“ /var/ftp/pub ”
在FTP服务器中的共享目录创建一个文件
查看windows中是否可查看文件
可以将看到的文件下载到本地
也可以在windows本地创建文件进行上传的到FTP服务器
在FTP服务器上进行查看FTP共享文件,是否有windows上传的文件
2、用户登录模式
首先前面的配置跟匿名登录一样操作,在配置文件中的定义存在区别,具体操作如下
2.1 修改配置文件
进入配置文件
配置文件内容介绍
local_enable=Yes #启用本地用户
anonymous_enable=NO #关闭匿名用户访问
write_enable=YES #开放服务器的写权限(若要上传,必须开启)
local_umask=077 #可设置仅宿主用户拥有被上传的文件的权限(反掩码)
chroot_local_user=YES #将访问禁锢在用户的宿主目录中
allow_writeable_chroot=YES #允许被限制的用户主目录具有写权限
#anon_mkdir_write_enable=YES 注释
#anon_other_write_enable=YES 注释
修改配置文件内容
2.2 创建需要登录的用户,更换需要共享的目录
配置好后可以创建一个目录用来当做FTP的共享目录,还需要创建一个用户用来作为此用户的属主目录
然后再进入到配置文件中,将刚所创建的目录添加到配置文件中
local_root=/var/ftp/data #local_root针对系统用户
2.3 进行验证测试上传(put)和下载(get)文件
进入windows系统,使用创建的用户进行连接ftp服务器
在centos 7 中查看上传的目录
2.4 设置黑白命令
在黑明单内的用户,在别的系统上面就无法完成登录的操作
进入配置文件
将yudeqiang用户加入到黑名单
再从windows系统上进行登录
五、总结
FTP服务就是一个传输文件的协议
主要使用20(用来传输)和21(用来控制)两个端口用来连接和传输文件
且有两种传输模式
- 主动模式: 客户端通过自己的高位端口连接到ftp服务器的21端口,发送用户名、密码、端口号、PORT给FTP服务端,其中PORT就是告诉服务端,此时此刻连接为主动模式,然后FTP服务器将使用自己的20端口连接到客户端的高位端口进行传输数据
- 被动模式: 客户端通过自己的高位端口连接到FTP服务器的21端口,发送用户名、吗,IMA、端口号、PASV给到FTP服务端,其中PASV就是告知服务端,此次连接为被动模式,ftp服务器收到后返回一个高位接口给到客户端,客户端进行连接ftp服务器的高位端口进行传输数据
具体的实验为
- 匿名登录: 主要就是配置ftp服务,进行任何用户都可以进行登录到FTP服务器中的指定的目录中下载或上传文件。
- 用户登录: 主要就是配置ftp服务,将需要共享的目录加入到被登录的用户中,客户端登录时,只能在该目录下进行上传和下载文件,其它的目录文件不能修改。