日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

ftp&vsftpd详解

發布時間:2023/12/25 综合教程 33 生活家
生活随笔 收集整理的這篇文章主要介紹了 ftp&vsftpd详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. ftp簡介

1.1 文件傳輸協議

File Transfer Protocol,文件傳輸協議

C/S架構
ftp是明文傳輸

1.2 兩路ftp連接

當傳輸數據時,會新建立一個連接,而非使用此前建立的命令連接。

命令連接:傳輸命令
數據連接:傳輸數據

1.3 文本模式&二進制模式

文本模式:

文本傳輸是使用ASCII字符,并由回車鍵和換行符分開,二進制不用轉換或格式化就可以傳輸字符
二進制模式比文本模式更快,并且可以傳輸所有ASCII值,所以一般將FTP設置成二進制模式

二進制模式:

二進制模式用來傳輸可執行文件、壓縮文件、圖片文件
如果用ASCII模式傳送,會顯示一堆亂碼,必須重新用BINARY模式傳
注意:用HTML和文本編寫的文件必須用ASCII模式上傳,用BINARY模式上傳會破壞文件,導致文件執行出錯

2. ftp的兩種工作模式

2.1 主動模式(PORT)

1)工作圖示&分析

FTP客戶端通過向FTP服務器端發送PORT命令,告訴服務器該客戶端傳輸數據的臨時端口
當需要傳送數據時,服務器通過TCP的20端口與客戶端的臨時端口建立數據傳輸通道,完成數據傳輸
在建立連接的過程中,由服務器主動發起連接,因此被稱為主動方式

2)工作原理

Server:20/tcp端口連接客戶端命令連接使用的向后的第一個可用端口
客戶端在一個隨機端口上向服務端的21/tcp端口發起請求,服務端響應后,連接成功
客戶端向服務端發起一個GET請求后,服務端便會通過自己的20/tcp端口,向客戶端之前的那個隨機端口+1的端口傳輸數據,如果隨機端口+1的端口被其他程序占用,那么會使用再次+1的端口,以此類推,直到找到一個合適的端口
傳輸完畢后發送數據的一方主動關閉數據連接

2.2 被動模式(PASV)

1)工作圖示&分析

FTP客戶端通過向FTP服務器端發送PASV命令,告訴服務器進入被動模式,服務器選擇臨時端口并告知客戶端
當需要傳送數據時,客戶端主動與服務器的臨時端口號建立數據傳輸通道,完成數據傳輸
在整個過程中,由于服務器總是被動接收客戶端的數據連接,因此被稱為被動方式

2)工作原理

Server:打開一個隨機端口,并等待客戶端連接
客戶端在一個隨機端口上向服務端的21/tcp端口發起請求后,服務端會進行響應

告訴客戶端這里已經開放了某個端口,可以連接了
服務端響應時不會直接發送端口號,而是會發送兩個數字,如173,26,(表示打開的端口除以256所得到的商和余數,這里表示44314)

客戶端收到服務端的端口后,就連接服務端的端口進行數據傳輸

3. vsftp詳解

3.1 vsftp概述

1)概述

vsftp是安全的FTP程序
URL的格式

SCHEME://username:password@HOST:PORT/path/to/file

路徑映射

用戶家目錄:每個用戶的URL的 / 映射到當前用戶的家目錄

vsftp以ftp用戶的身份運行進程

默認用戶即為ftp用戶,匿名用戶的默認路徑即為ftp用戶的家目錄 /var/ftp
匿名用戶:ftp、anonymous

2)程序結構

主程序:/usr/sbin/vsftpd
Unit File:/usr/lib/systemd/system/vsftpd.service
主配置文件:/etc/vsftpd/vsftpd.conf
數據根目錄:/var/ftp

3.2 vsftp的用戶類別

匿名用戶

anonymous --> ftp : /var/ftp
匿名用戶其實也是系統用戶,只不過這個系統用戶叫ftp,而這個用戶的家目錄為/var/ftp

系統用戶

若系統用戶可以訪問,則此用戶可以通過ftp訪問該系統上任何可以被該用戶訪問的資源,家目錄就是用戶的家目錄
/etc/pam.d/vsftp文件中include了passwd-auth.so,而這個文件中又包含了pam_unix.so,這個文件就定義了可以通過系統用戶來訪問
注意:至少禁止系統用戶訪問ftp服務

/etc/vsftpd/ftpusers
PAM(/etc/pam.d/vsftpd)

虛擬用戶

非系統用戶,用戶賬號不是可登陸操作系統的用戶賬號(非/etc/passwd)

注意:

用戶通過vsftpd服務訪問到的默認路徑,是用戶自己的家目錄,默認可以在自己有權限訪問的所有路徑間切換
要禁錮用戶于其家目錄中

3.3 配置vsftpd

注意事項:

如果開啟了chroot_list_enable功能,需要自行創建chroot_list_file指定的文件,否則vsftpd服務無法正常提供服務

4. vsftpd認證虛擬用戶

4.1 先創建一個系統用戶

因為虛擬用戶要使用這個系統用戶訪問文件,所以需要先創建一個系統用戶

# 設置該用戶的主目錄為/home/vsftpd, 且禁止ssh登錄
useradd  vsftpd  -d  /home/vsftpd  -s  /sbin/nologin

4.2 創建虛擬用戶

1)創建虛擬用戶主目錄

mkdir  -p  /home/vsftpd/{ftp1, ftp2}

2)創建虛擬用戶

vim  /etc/vsftpd/loginuser
# 添加:
   ftp1
   123
   ftp2
   456
# 創建了ftp1和ftp2這兩個虛擬用戶,密碼分別為123和456

4.3 創建數據庫文件

1)使用db_load命令生成db

因為保存虛擬賬號和密碼的文本文件無法被系統賬號直接調用,所以需要使用db_load命令來生成db

db_load  -T  -t  hash  -f  /etc/vsftpd/loginuser  /etc/vsftpd/loginuser.db
# 參數說明:
#    -T:允許應用程序能夠將文本文件轉譯載入進數據庫
#    -t hash  :使用hash加密
#    -f:指定包含用戶名和密碼的文本文件(此文件的格式為:奇數行為用戶名,偶數行為密碼)

2)修改數據庫文件的權限

chmod  600  /etc/vsftpd/{loginuser,loginuser.db}

4.4 pam認證中加入數據庫文件認證

在vsftpd對應的pam認證模塊中加入數據庫文件認證

vim  /etc/pam.d/vsftpd

# 清空后加入:
auth  sufficient  /lib64/security/pam_userdb.so  db=/etc/vsftpd/loginuser
account  sufficient  /lib64/security/pam_userdb.so  db=/etc/vsftpd/loginuser

# 注意,這里的就是上面創建的文件數據庫, 這里的loginuser不需要加db的后綴

4.5 創建虛擬用戶配置文件

將所有的虛擬用戶的配置文件統統放入這個目錄,且目錄中配置文件的名稱必須與虛擬用戶名一致

mkdir /etc/vsftpd/userconf/

創建各個虛擬用戶的配置文件

vim  /etc/vsftpd/userconf/ftp1
local_root=/home/vsftpd/ftp1/ # 設定主目錄為/home/vsftpd/ftp1 write_enable=YES
anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES

4.6 修改主配置文件

修改/etc/vsftpd/vsftpd.conf

anonymous_enable=NO                  # 禁止匿名用戶登錄
chroot_local_user=YES                # 禁止用戶訪問除主目錄以外的目錄
ascii_upload_enable=YES              # 設定支持ASCII模式的上傳和下載功能
ascII_download_enable=YES

chown_uploads=YES                    # 允許虛擬用戶上傳文件
chown_username=vsftpd                # 注意:這里是創建的Linux本地用戶vsftpd, 不改這里虛擬用戶將不能下載文件

guest_enable=YES                     # 啟動虛擬用戶
guest_username=vsftpd                # 虛擬用戶使用的系統用戶名
user_config_dir=/etc/vsftpd/userconf # 虛擬用戶使用的配置文件目錄
allow_writeable_chroot=YES 
# 最新版的vsftpd為了安全必須用戶主目錄(也就是/home/vsftpd/ftp1)沒有寫權限,才能登陸,
# 或者使用allow_writeable_chroot=YES

4.7 vsftpd創建虛擬用戶的資料

https://blog.csdn.net/make_zhf/article/details/81099184
https://www.cnblogs.com/tssc/p/9582780.html
http://www.myjishu.com/?p=369

5. pam_mysql認證ftp虛擬用戶

總結

以上是生活随笔為你收集整理的ftp&vsftpd详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。