VSFTP服务器概述

FTP服务概述

FTP服务器(File Transfer ProtocolServer)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。

FTP(File Transfer Protocol: 文件传输协议)作用:Internet 上用来传送文件的协议。

常见FTP服务器: Windows:Serv-U 、FTP Server、filezilla_server Linux:ProFTPD:(Professional FTP daemon)一个Unix平台上或是类Unix平台上(如Linux, FreeBSD等)的FTP服务器程序。

本节主讲:VSFTP

VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP 从此名称可以看出来,编制者的初衷是代码的安全。 特点: 它是一个安全、高速、稳定的FTP服务器。

VSFTP模式: C/S 模式

监听端口:20、21 [root@xuegod64 ~]# vim /etc/services #查看services文件,如图所示。

在这里插入图片描述

FTP监听的端口有两个:

端口20:用于传输数据 端口21:用于传输指令

工作流程(原理)分为两种模式:

主动和被动模式: FTP会话包含了两个通道,控制通道和数据传输通道,FTP的工作有两种模式,一种是主动模式,一种是被动模式,以FTP Server为参照,主动模式,服务器主动连接客户端传输,被动模式,等待客户的连接。

主动模式(PORT)的工作原理: FTP客户端连接到FTP服务器的21号端口,发送用户名和密码,客户端随机开放一个端口(1024以上),发送PORT命令到FTP服务器,告知服务器客户端采用主动模式并开放端口,FTP服务器收到PORT主动模式命令和端口后,通过服务器的20号端口和客户端开放的端口连接,发送数据,原理如图 所示,(无论是主动还是被动模式,首先的控制通道都是先建立起来,只是在数据传输模式上的区别)

在这里插入图片描述

被动模式的工作原理: PASV是Passive的缩写,中文成为被动模式,工作原理:FTP客户端连接到FTP服务器所监听的21号端口,发送用户名和密码,发送PASV命令到FTP服务器,服务器在本地随机开放一个端口(1024以上),然后把开放的端口告知客户端,而后客户端再连接到服务器开放的端口进行数据传输,原理如图所示。

在这里插入图片描述

主 21 20 被 21 1024以上

安装vsftp服务器端、客户端

使用rpm安装本地光盘中的vsftp程序包:

[root@xuegod63 ~]# rpm -ivh /mnt/cd/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm	

或: 使用yum直接安装(两种安装方法,选取其中一种即可):

[root@xuegod63 ~]# yum -y install vsftpd
安装客户端:
[root@xuegod64 ~]# yum install -y lftp			#使用yum安装ftp客户端。
lftp

Linux客户端:

lftp 是一个功能强大的下载工具,它支持访问文件的协议: ftp、ftps、http、https、hftp(其中ftps和https需要在编译的时候包含openssl库),lftp的界面非常类似一个Shell,有命令补全、历史记录、允许多个后台任务执行等功能,使用起来非常方便。它还有书签、排队、镜像、断点续传、多进程下载、等功能。

配置文件位置:

vsftpd 相关文档:

/etc/vsftpd/vsftpd.conf		     #vsftpd 的核心配置文件。
/etc/vsftpd/ftpusers			#用于指定哪些用户不能访问FTP 服务器,即黑名单。
/etc/vsftpd/user_list			#指定允许使用VSFTP的用户列表文件,即白名单。
[root@xuegod63 ~]# vim /etc/vsftpd/user_list		#查看user_list文件

如图所示。

在这里插入图片描述

说明:如果userlist_deny= YES(默认),绝不允许在这个文件中的用户登录ftp,甚至不提示输入密码。

/etc/vsftpd/vsftpd_conf_migrate.sh		#是vsftpd 操作的一些变量和设置脚本
/var/ftp/			                       #默认情况下匿名用户的根目录
启动服务
[root@xuegod63 vsftpd]# systemctl start vsftpd 		#启动FTP服务。
[root@xuegod63 vsftpd]# systemctl enable vsftpd	#设置开启自动启动FTP服务。

#注意关闭iptables 和SElinux

[root@xuegod63 ~]# netstat -antup | grep ftp		#查看FTP服务监听的端口。
tcp    0     0 0.0.0.0:21          0.0.0.0:*          LISTEN       11725/vsftpd

以上内容中说明FTP监听两个端口,但目前FTP已经启动了,但经过查看,只查看到21号端口,还有20号端口没有查看到?

是因为没有数据传输,20号端口是用于传输数据的,所以20号端口是尚未开启,如有数据传输时,20号端口则会开启。

FTP服务的使用方法

Linux系统:

以xuegod63主机示例(即服务端、客户端为一台主机)

[root@xuegod63 ~]# rpm -ivh /mnt/Packages/lftp-4.4.8-8.el7_3.2.x86_64.rpm		#安装FTP客户端
[root@xuegod63 ~]# lftp 192.168.1.63			#连接FTP服务器。
ctrl+d  或  exit退出
?  帮助

Windows系统:

通过浏览器访问或 打开文件夹,在地址栏输入地址:ftp://192.168.1.63/,如图所示

在这里插入图片描述

修改配置文件,实战举例匿名访问

公司技术部准备搭建一台功能简单的FTP 服务器,允许所有员工上传和下载文件,并允许创建用户自己的目录。

分析: 允许所有员工上传和下载文件需要设置成允许匿名用户登录并且需要将允许匿名用户上传功能开启。

允许匿名用户访问

anon_mkdir_write_enable 字段可以控制是否允许匿名用户创建目录。

[root@xuegod63 ~]# cd /etc/vsftpd/		#切换工作目录至FTP工作目录下。
[root@xuegod63 vsftpd]# cp vsftpd.conf{,.bak}	#使用命令展开式,FTP配置文件备份,便于后期恢复还原。
[root@xuegod63 vsftpd]# vim  vsftpd.conf  	#编辑FTP配置文件,修改以下内容。
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES

允许匿名用户上传文件并可以创建目录,如图 所示

在这里插入图片描述 在这里插入图片描述

重启FTP服务,使配置文件生效:

[root@xuegod63 vsftpd]# systemctl restart vsftpd

测试:提示不能写,如图 所示。

在这里插入图片描述

[root@xuegod63 vsftpd]# chown ftp.ftp /var/ftp/pub/			#修改FTP共享目录属主、属组为ftp用户。

再次测试,结果:可以新建文件夹,但是不能重命名,不能删除!

[root@xuegod63 vsftpd]# vim vsftpd.conf		#编辑FTP配置文件,修改以下内容。
anon_other_write_enable=YES  		#默认没有,需要手动添加下这行(匿名帐号可以有写的权限)。

重启FTP服务,使配置文件生效:

[root@xuegod63 vsftpd]# systemctl restart vsftpd

可以删除文件夹了,这个参数对匿名用户来说权限太大,不安全,使用这个参数需要考虑安全性。 注意,默认匿名用户家目录的权限是755,这个权限是不能改变的。切记!