linux系统下限制 ftp用户访问目录并限制传输文件速度小于100KB

本文目标:写出FTP的工作原理及VSFTPD限制访问目录并限速100KB的建立过程。

1 FTP的工作原理

1.1 FTP协议概述

起初, FTP并不是应用于IP网络上的协议,而是ARPANEt网络中计算机间的文件传输协议, ARPANET是美国国防部组建的老网络,于1960-1980年使用。在那时, FTP的主要功能是在主机间高速可靠地传输文件。目前FTP仍然保持其可靠性,即使在今天,它还允许文件远程存取。这使得用户可以在某个系统上工作,而将文件存贮在别的系统。例如,如果某用户运行Web服务器,需要从远程主机上取得HTML文件和CGI程序在本机上工作,他需要从远程存储站点获取文件(远程站点也需安装Web服务器)。当用户完成工作后,可使用FTP将文件传回到Web服务器。采用这种方法,用户无需使用Telnet登录到远程主机进行工作,这样就使Web服务器的更新工作变得如此的轻松。

FTP是一种文件传输协议,它支持两种模式,一种方式叫做Standard (也就是 Active,主动方式),一种是 Passive (也就是PASV,被动方式)。 Standard模式 FTP的客户端发送 PORT 命令到FTP server。Passive模式FTP的客户端发送 PASV命令到 FTP Server。

FTP是TCP/IP的一种具体应用,它工作在OSI模型的第七层,TCP模型的第四层上,即应用层,使用TCP传输而不是UDP,这样FTP客户在和服务器建立连接前就要经过一个被广为熟知的"三次握手"的过程,它带来的意义在于客户与服务器之间的连接是可靠的,而且是面向连接,为数据的传输提供了可靠的保证。 下面,让我们来看看,一个FTP客户在和服务器连接是怎么样的一个过程(以标准的FTP端口号为例)。 首先,FTP并不像HTTP协议那样,只需要一个端口作为连接(HTTP的默认端口是80,FTP的默认端口是21),FTP需要2个端口,一个端口是作为控制连接端口,也就是21这个端口,用于发送指令给服务器以及等待服务器响应;另一个端口是数据传输端口,端口号为20(仅PORT模式),是用来建立数据传输通道的,主要作用是从客户机向服务器发送一个文件。 从服务器向客户发送一个文件。 从服务器向客户发送文件或目录列表。 其次,FTP的连接模式有两种,PORT和PASV。PORT模式是一个主动模式,PASV是被动模式,这里都是相对于服务器而言的。

1.2 工作原理:

linux系统下限制 ftp用户访问目录并限制传输文件速度小于100KB_第1张图片

1.2.1 主动传输模式(Active FTP)

FTP的数据连接和控制连接的方向是相反的。也就是说,是服务器向客户端发起一个用于数据传输的连接。客户端的连接端口是由服务器端和客户端通过协商确定的。
FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,当经过TCP的三次握手后,连接(控制信道)被建立。然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令。
服务器接收到命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。

1.2.2 被动传输模式(Passive FTP)

FTP的数据连接和控制连接的方向是一致的。也就是说,是客户端向服务器发起一个用于数据传输的连接。客户端的连接端口是发起这个数据连接请求时使用的端口号。
FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接, 同时会开启N+1号端口。然后向服务器发送PASV命令,通知服务器自己处于被动模式。
服务器收到命令后,会开放一个大于1024的端口P进行监听然后用PORT P命令通知客户端,自己的数据端口是P口客户端收到命令后,会通过N+1号端后连接服务器的端口P,然后在两个端口之间进行数据传输
被动模式的FTP通常用在处于防火墙之后的FTP客户访问外界FTP服务器的情况。

2 vsftpd 限制访问目录配置过程

2.1 安装vsftpd

本文使用CentOS 7系统,首先配置静态IP,确保win7测试机能ping通ftp服务器的IP地址,网路具体方法不再介绍。

为了避免一些不可预测的错误,需要关闭selinux。

getenforce			 #获取selinux状态
vi /etc/selinux/config	  #修改/etc/selinux/config文档
SELINUX=disabled  	#关闭selinux
reboot  	  #重启

yum -y install vsftpd	#安装vsftpd
systemctl enable vsftpd	#设置开机自启动vsftpd
systemctl start vsftpd	#启动vsftpd服务
systemctl status vsftpd	#查看vsftpd服务状态

2.2 配置防火墙

firewall-cmd --add-service=ftp --permanent	#将vsftpd服务添加到防火墙规则,使其通过防火墙
firewall-cmd --reload	#重新加载防火墙规则
firewall-cmd --list-all	#查看所有防火墙规则列表

2.3 配置vsftpd

修改文件/etc/vsftpd/vsftpd.conf

vi /etc/vsftpd/vsftpd.conf

修改为如下图所示:
linux系统下限制 ftp用户访问目录并限制传输文件速度小于100KB_第2张图片

useradd -d /home/ftp2 -s  ftpUser2		#新建用户ftpUser2
passwd ftpUser2		#设置密码
useradd -d /home/ftp3 -s  ftpUser3	#新建用户ftpUser3
passwd ftpUser3	#设置密码

cd /home/ftp2	#进入/home/ftp2目录下
mkdir a b c	#新建文件夹a b c
cd /home/ftp3	#进入/home/ftp3目录下
mkdir c x z	#新建文件夹c x z
vi /etc/vsftpd/chroot_list

在里面添加用户名ftpUser2

systemctl restart vsftpd		#重启vsftpd服务

限速100KB的建立过程:

vi /etc/vsftpd/vsftpd.conf

增加如下代码:
在这里插入图片描述

systemctl restart vsftpd		#重启vsftpd服务

2.4 测试结果

进入win7 虚拟机,打开WinSCP,分别用ftpUser和ftpUser3登录ftp

测试结果如下:

ftpsUer2可以切换目录:
linux系统下限制 ftp用户访问目录并限制传输文件速度小于100KB_第3张图片
linux系统下限制 ftp用户访问目录并限制传输文件速度小于100KB_第4张图片
ftpUser3只能在自己的目录,不能切换到上级目录:
linux系统下限制 ftp用户访问目录并限制传输文件速度小于100KB_第5张图片
在win7 虚拟机中向ftpUser2的ftp目录下粘贴一个几十兆的文件,查看传输速率。

传输速率被限制在100KB以内:

linux系统下限制 ftp用户访问目录并限制传输文件速度小于100KB_第6张图片

你可能感兴趣的:(Linux)