vsftp服務介紹與相關實驗

1、VSFTP服務簡介

FTP 是 File Transfer Protocol(文件傳輸協議)的英文簡稱,用於 Internet 上的文件的雙向傳輸。使用 FTP 來傳輸時,是具備必定程度的危險性, 由於數據在因特網上面是徹底沒有受到保護的明文傳輸方式!VSFTP是一個基於GPL發佈的類Unix系統上使用的FTP服務器軟件,它的全稱是Very Secure FTP, 從名稱定義上基本能夠看出,這是爲了解決 ftp 傳輸安全性問題的。數據庫

1.一、vsftp特色
  • vsftp 程序的運行者通常是普通用戶,下降了相對應進程的權限,提升了安全性。
  • 任何須要執行較高權限的指令都須要配置許可。
  • ftp 所須要使用的絕大多數命令都被整合到了 vsftp 中,基本不須要系統額外提供命令。
  • 擁有 chroot 功能,能夠改變用戶的根目錄,限制用戶只能在本身的家目錄。
1.二、VSFTP鏈接類型
  • 控制鏈接(持續鏈接) → TCP 21(命令信道) → 用戶收發FTP命令
  • 數據鏈接(按需鏈接) → TCP 20(數據信道) → 用於上傳下載數據
1.三、vsftp工做模式
1)主動模式

FTP 客戶端首先和服務器的 TCP 21 端口創建鏈接,用來發送命令,客戶端須要接收數據的時候在這個通道上發送 PORT 命令。PORT 命令包含了客戶端用什麼端口接收數據。在傳送數據的時候,服務器端經過本身的 TCP 20 端口鏈接至客戶端的指定端口發送數據。vim

2)被動模式

FTP 客戶端首先和服務器的 TCP 21 端口創建鏈接,用來創建控制通道發送命令,但創建鏈接後客戶端發送 Pasv 命令。 服務器收到 Pasv 命令後,打開一個臨時端口(端口大於 1023 小於 65535)而且通知客戶端鏈接這個端口進行傳送數據,客戶端進而鏈接 FTP 服務器的臨時端口進行數據傳輸。centos

1.四、VSFTP 傳輸模式
  • Binary模式:不對數據進行任何處理,適合進行可執行文件、壓縮文件、圖片等
  • ASCII模式:進行文本傳輸時,自動適應目標操做系統的結束符,如回車符等

Linux的紅帽發行版中VSFTP默認採用的是Binary模式,這樣能保證絕大多數文件傳輸後能正常使用 。
切換方式:在ftp>提示符下輸入ascii即轉換到ACSII方式,輸入bin,即轉換到Binary方式。安全

1.五、VSFTP 相關軟件名
服務端軟件名:vsftpd  
客戶端軟件名:ftp  
服務名:vsftpd 
端口號:20、2一、指定範圍內隨機端口 配置文件:/etc/vsftpd/vsftpd.conf
1.六、VSFTP 登錄方式
一、匿名用戶驗證:

用戶帳號名稱:ftp或anonymous
用戶帳號密碼:無密碼
工做目錄:/var/ftp
默認權限:默承認下載不可上傳,上傳權限由兩部分組成(主配置文件和文件系統,配置文件中配置上傳權限,對該目錄具備寫權限。)服務器

二、本地用戶驗證:

用戶帳號名稱:本地用戶(/etc/passwd)
用戶帳號密碼:用戶密碼(/etc/shadow)
工做目錄:登陸用戶的宿主目錄
權限:最大權限(drwx------)測試

三、虛擬用戶驗證:

建立虛擬用戶用來代替本地用戶,減小本地用戶曝光率
使用本地用戶做爲虛擬用戶的映射用戶,爲虛擬用戶提供工做目錄和權限控制
可以設置嚴格的權限ui

2、相關實驗

一、匿名用戶實驗

匿名用戶相關配置參數操作系統

一、安裝服務
yum install vsftpd -y
二、匿名用戶相關配置 
/etc/vsftpd/vsftpd.conf 
pasv_enable=YES #設置鏈接模式
pasv_min_port=3000 #隨機最小端口範圍
pasv_max_port=5000 #隨機最大端口範圍
anonymous_enable=YES   #啓用匿名訪問  
anon_umask=022     #匿名用戶所上傳文件的權限掩碼  
anon_root=/var/ftp/anno     #匿名用戶的 FTP 根目錄  
anon_upload_enable=YES   #容許上傳文件  
anon_mkdir_write_enable=YES  #容許建立目錄  
anon_other_write_enable=YES  #開放其餘寫入權(刪除、覆蓋、重命名)  
anon_max_rate=0     #限制最大傳輸速率(0 爲不限速,單位:bytes/秒)
三、實現文件上傳
a. 修改配置文件
   anon_upload_enable=YES
   anon_root=/var/ftp 
b. 在/var/ftp/下建立上傳目錄
     mkdir /var/ftp/anon
c. 修改上傳目錄的權限或全部者,讓匿名用戶有寫入權限
    chown ftp:ftp /var/ftp/anon
d. 客戶機登陸
ftp> [root@centos ~]# ftp 100.100.100.103
Name (100.100.100.103:root): ftp
331 Please specify the password.
Password:
230 Login successful.
ftp> cd anon
ftp> put install.log
28529 bytes sent in 0.0821 secs (347.54 Kbytes/sec)

四、實現建立目錄和文件其餘操做 添加以下配置。
anon_mkdir_write_enable=YES  #容許建立目錄 
anon_other_write_enable=YES  #刪除文件、文件更名、文件覆蓋 

五、進入到目錄彈出信息
在對應目錄下建立 .message 文件,並寫入相應內容 
確認dirmessage_enable=YES

六、下載上傳的文件權限
默認狀況下開放上傳權限後,上傳的文件是沒法被下載的,由於文件的其餘人位置沒有r權限
anon_umask=022
二、本地用戶實驗

本地用戶相關配置code

local_enable=YES   #是否啓用本地系統用戶  
local_umask=022   #本地用戶所上傳文件的權限掩碼  
local_root=/var/ftp   #設置本地用戶的 FTP 根目錄  默認在當前用戶的家目錄下
chroot_local_user=YES  #只能本身的家目錄,
chroot_list_enable=YES  #開啓容許切換目錄用戶文件 
chroot_list_file=/etc/vsftpd/chroot_list #寫入該文件中的用戶能夠隨意切換目錄
local_max_rate=0   #限制最大傳輸速率  
ftpd_banner=Welcome to blah FTP service  #用戶登陸時顯示的歡迎信息  
userlist_enable=YES & userlist_deny=YES  #禁止/etc/vsftpd/user_list 文件中出現的用戶名登陸 FTP (默認) 
userlist_enable=YES & userlist_deny=NO  #僅容許/etc/vsftpd/user_list 文件中出現的用戶名登陸 FTP  

配置文件:/etc/vsftpd/ftpusers 
/etc/vsftpd/ftpusers 文件中出現的用戶名登陸 FTP,權限比 user_list 更高,即時生效

a. useradd -s /sbin/nologin huahua  #服務端須要建立用戶並設置密碼(所建立的用戶,不須要登陸操做系統,僅用來登陸VSFTP) 
b. passwd huahua  #密碼
c. 客戶機登陸
[root@centos ~]# ftp 100.100.100.103
Connected to 100.100.100.103 (100.100.100.103).
Name (100.100.100.103:root): huahua
331 Please specify the password.
Password:
230 Login successful.
三、虛擬用戶實驗
  1. 創建 FTP 的虛擬用戶的用戶數據庫文件 在/etc/vsftpd目錄下
vim /etc/vsftpd/vsftpd.user(單數行用戶名,偶數密碼)
    zs 
    123456

二、將上一步創建的vsftpd.user文件轉成數據庫密碼文件進程

db_load  -T  -t  hash  -f  vsftpd.user  vsftpd.db
chmod 600 vsftpd.db  #修改權限,保證安全性

三、建立 FTP 虛擬用戶的映射用戶,並制定其用戶家目錄

useradd  -d  /var/ftp_virtual_root  -s  /sbin/nologin  virtual

四、創建支持虛擬用戶的 PAM 認證文件,添加虛擬用戶支持

cp  /etc/pam.d/vsftpd  /etc/pam.d/vsftpd.pam
vim /etc/pam.d/vsftpd.pam(清空源文件內容,加入下面兩條)
    auth       required     pam_userdb.so  db=/etc/vsftpd/vsftpd
    account    required     pam_userdb.so  db=/etc/vsftpd/vsftpd
在 vsftpd.conf 文件中添加支持配置
修改: 
    pam_service_name=vsftpd.pam  
添加: 
    guest_enable=YES
    guest_username=virtual
    user_config_dir=/etc/vsftpd/dir/ #指定用戶配置目錄

五、爲虛擬用戶創建獨立的配置文件,啓動服務並測試

a、修改配置文件,將主配置文件中自定義的匿名用戶相關設置註釋掉,防止主配置覆蓋用戶配置
cd dir/
vim zs
anon_upload_enable=YES   #用戶能夠上傳
anon_mkdir_write_enable=YES  #容許建立目錄 用戶能夠修改文件名
anon_other_write_enable=YES  #容許重名和刪除文件、覆蓋

b、給映射用戶的家目錄,設置讓虛擬用戶有讀權限
chmod a+r /var/ftp_virtual_root
相關文章
相關標籤/搜索