1. 程式人生 > >FTP 文件共享服務

FTP 文件共享服務

ftp 文件共享服務

FTP 文件共享服務 基於tcp協議 端口:tcp 21(三次握手建立連接);tcp 20(數據傳輸)

工作模式 應用層

根據客戶端的角度劃分的:

[主動模式]

客戶端開啟一個1024以上的動態端口如:(2000)

--》連接服務器21號端口進行三次握手建立連接,三次握手的過程中會有延遲,延遲過程中:

客戶端再次開啟一個比上一個端口大1的端口(2001),監聽

--》客戶端給服務器發送命令Port2001,告知服務器,客戶端的數據傳輸端口的2001

--》服務器端開啟20端口與客戶端的2001號端口建立連接進行數據通信


[被動模式]

客戶端開啟一個動態端口(2000)

--》連接服務器21號端口進行三次握手建立連接,三次握手的過程中會有延遲,延遲過程中:

客戶端再次開啟一個比上一個端口大1的端口(2001),監聽

--》客服端給服務器端發送pasv命令,告知服務器,客戶端現在處於被動模式,等待服務器端主動連接客戶端

--》服務器端給客戶端發送Port3000命令,告知給客戶端,服務器端的數據傳輸端口的3000

--》客戶端拿著2001號端口與服務器端的3000號端口建立連接進行數據通信


實驗準備

兩臺服務器linux系統 centos 7.1

關閉防火墻

systemctl stop firewalld 臨時關閉

systemctl disable firewalld 永久關閉

關閉selinux

setenforce 0 臨時關閉

sed -i ‘/SELINUX/s/enforcing/disabled/g‘ /etc/selinux/config 永久關閉

yum -y install ftp 客戶端安裝FTP服務

yum -y install vsftpd 服務端安裝vsftp服務

啟動服務

systemctl enable vsftpd 開啟自動啟動服務

systemctl restart vsftpd 重啟服務

systemctl stop vsftpd 停止服務



主配置文件 /etc/vsftpd/vsftpd.conf


#12 開啟匿名訪問

#16 允許本地的實體賬戶登陸

#19 允許實體賬戶有寫權限

#23 創建文件的權限644(實體用戶)

#29 允許匿名用戶上傳(只能上傳文件不能上傳目錄)

#33 匿名創建目錄的權限

#37 記錄訪問開啟

#40 開啟日誌記錄功能

#43 開啟20號端口數據傳輸

#48、49 改變上傳文件的屬主

#53 日誌所在的路徑及文件名

#57 日誌記錄時是否采用標準格式

#60 會話連接超時時間600s

#63 數據傳輸超時時間120s

#82 上傳數據傳輸模式

#90 不允許匿名用戶的郵箱地址作為其密碼

#92 記錄文件的郵箱地址

#100 實體賬戶只讓其在默認登錄的位置活動

#101 開啟其列表功能

#103 列表的存放位置及路徑

#114 拒絕監聽(ipv4)

#123 ipv6監聽,能幫助監聽ipv4

#125 用戶認證 映射認證列表

#126 只要在用戶列表中的用戶都不能登錄ftp


實驗一

在配置文件中的特殊設置(實體用戶切換目錄限制)

【不允許實體用戶切換路徑,只能在默認訪問位置活動】

vim /etc/vsftpd/vsftpd.conf


100行 解註釋(即將#號去掉) 開啟實體用戶切換目錄功能

chroot_local_user = yes

手動添加

allow_writeable_chroot = yes 允許用戶進行登陸


101行 解註釋

chroot_list_enable = YES 開啟用戶列表功能,在該列表中的用戶可以切換路徑


103行 解註釋

chroot_list_file = /etc/vsftpd/chroot_list

指定用戶列表所在路徑及文件名,手動創建

vim /etc/vsftpd/chroot_list

加入到列表中的用戶可以切換路徑,列表外的用戶不可以


重啟服務驗證



實驗二

vim etc/vsftpd/vsftpd.conf

在配置文件中特殊權限設置 (允許匿名用戶使用權限)

【實現匿名用戶上傳、創建目錄、刪除等權限】

29行 解註釋

anon_upload_enable = YES 開啟匿名用戶上傳功能,只能上傳文件


33行 解註釋

anon_mkdir_write_enable = YES 創建目錄權限


34行 解註釋

anon_other_write_enable = YES 手動添加,開啟匿名用戶的其他寫權限


重啟服務驗證


客戶端驗證

用戶名:ftp

密碼:任意


修改匿名用戶默認登陸位置的安全權限(屬主、屬組)

chown -R ftp.ftp /var/ftp/pub


重啟服務驗證

客戶端:可以上傳、創建目錄、刪除等




實驗三

用戶限制配置文件 /etc/vsftpd

【限制實體系統用戶的登陸】

用戶列表文件:ftpusers、user_list


ftpusers:

只要在給列表中的用戶都拒絕訪問


user_list:

在主配置文件中設置

userlist_enable = yes/no

若該項值為YES -》 開啟用戶列表功能,在user_list中用戶拒絕登錄

若該項值為NO -》 user_list列表失效


userlist_enable = yes

若userlist_deny = YES 表示列表內用戶不允許登陸,列表外用戶只能命令行登陸

若userlist_deny = NO 只有在列表中用戶可以登錄



實驗四

虛擬用戶:w


思想:客戶端需要通過賬號和密碼登錄,但是該賬戶不是系統中的實體賬號,而是一個虛擬賬號

在服務器端創建一個實體賬戶,將該賬戶映射到多個虛擬賬號上


1.新創建虛擬賬號文本文件 /etc/vsftpd

vim vftpuser (奇數行寫用戶名,偶數行寫密碼)

snow

123

lisa

321

不能有多余的空行

保存退出


2.將文本文件制作數據庫文件

命令:db_load -T -t hash -f /vftpuser /etc/vsftpd/vftpuser.db

-T :將文本文件中內容導入到數據庫文件中

-t :指定加密算法為hash

-f :指定文本文件,生成的庫文件所在路徑及文件名


3.配置驗證文件 /etc/pam.d/vsftpd

將原驗證文件備份

cp /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/vsftpd.pam /etc/pam.d/vsftpd 拷貝模板驗證文件


vim /etc/pam.d/vsftpd

auth required pam_userdb.so db = /etc/vsftpd/vftpuser

account required pam_userdb.so db = /etc/vsftpd/vftpuser

執行數據庫文件的位置及文件名,註意不需要加.db


4.創建實體賬戶,將其映射到多個虛擬賬戶

#useradd -d /var/ftp/vftp test 創建新賬戶test 並指定家目錄路徑

#chmod 777 /var/ftp/vftp


修改主配置文件 vim /etc/vsftpd/vsftpd.conf

在最下面一行添加

guest_enable = yes 開啟虛擬用戶

guest_username = test 映射的實體賬號



5.重啟服務驗證

[註]開啟虛擬用戶功能後,所有實體賬戶都不能登錄

若要實體賬戶登錄,需將實體用戶加入到~/vftpuser中

systemctl status vsftpd -l 顯示詳細狀態


實驗五:


限制虛擬用戶的權限

vim /etc/vsftpd/vsftpd.conf

【將所有的匿名功能關閉】

在最下一行添加

user_config_dir = /etc/vsftpd/vftp


【設置所有虛擬用戶的權限限制文件的路徑】

#cd /etc/vsftpd/vftp

vim snow

anon_world_readable_only = yes 開啟讀權限

write_enable = yes 開啟寫權限

anon_upload_enable = yes 上傳

anon_mkdir_write_enable = yes 創建目錄

anon_other_write_enable = yes 其它寫權限

保存退出,重啟服務驗證










FTP 文件共享服務