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 工作原理:

在這裏插入圖片描述

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

修改爲如下圖所示:
在這裏插入圖片描述

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可以切換目錄:
在這裏插入圖片描述
在這裏插入圖片描述
ftpUser3只能在自己的目錄,不能切換到上級目錄:
在這裏插入圖片描述
在win7 虛擬機中向ftpUser2的ftp目錄下粘貼一個幾十兆的文件,查看傳輸速率。

傳輸速率被限制在100KB以內:

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章