本章向讀者介紹企業vsftpd服務器實戰、匿名用戶訪問、系統用戶訪問及虛擬用戶實戰等,
1 vsftpd服務器企業實戰
檔案傳輸協議(File Transfer Protocol,FTP),基于該協議FTP客戶端與服務端可以實作共享檔案、上傳檔案、下載檔案, FTP基于TCP協議生成一個虛擬的連接,主要用于控制FTP連接資訊,同時再生成一個單獨的TCP連接用于FTP資料傳輸,用戶可以通過客戶端向FTP服務器端上傳、下載、洗掉檔案,FTP服務器端可以同時提供給多人共享使用,
FTP服務是Client/Server(簡稱C/S)模式,基于FTP協議實作FTP檔案對外共享及傳輸的軟體稱之為FTP服務器源端,客戶端程式基于FTP協議,則稱之為FTP客戶端,FTP客戶端可以向FTP服務器上傳、下載檔案,
1.1 FTP傳輸模式
FTP基于C/S模式,FTP客戶端與服務器端有兩種傳輸模式,分別是FTP主動模式、FTP被動模式,主被動模式均是以FTP服務器端為參照,主被動模式如圖(a)、(b)所示,主被動模式詳細區別如下:
- FTP主動模式:客戶端從一個任意的埠N(N>1024)連接到FTP服務器的port 21命令埠,客戶端開始監聽埠N+1,并發送FTP命令“port N+1”到FTP服務器,FTP服務器以資料埠(20)連接到客戶端指定的資料埠(N+1),
- FTP被動模式:客戶端從一個任意的埠N(N>1024)連接到FTP服務器的port 21命令埠,客戶端開始監聽埠N+1,客戶端提交 PASV命令,服務器會開啟一個任意的埠(P >1024),并發送PORT P命令給客戶端,客戶端發起從本地埠N+1到服務器的埠P的連接用來傳送資料,
在企業實際環境中,如果FTP客戶端與FTP服務端均開放防火墻,FTP需以主動模式作業,這樣只需要在FTP服務器端防火墻規則中,開放20、21埠即可,關于防火墻配置后面章節會講解,

圖1-1(a) FTP主動模式

圖1-1(b) FTP被動模式
1.2 vsftpd服務器安裝配置
vsftpd服務器端安裝有兩種方法,一是基于YUM方式安裝,而是基于原始碼編譯安裝,最終實作效果完全一致,本文采用yum安裝vsftpd,步驟如下:
1.2.1 yum安裝vsftpd
在命令列執行如下命令
# yum install vsftpd* -y

圖1-2 yum安裝vsftpd
1.2.2 檢查vsftpd安裝后的組態檔路徑
# rpm -ql vsftpd|more

圖1-3 檢查vsftpd安裝后的組態檔路徑
1.2.3 啟動vsftpd服務
# systemctl restart vsftpd.service

圖1-4 啟動vsftpd服務
1.2.4 查看行程是否啟動
# ps -ef |grep vsftpd

圖1-5 查看vsftp行程
1.2.5 vsftpd.conf默認組態檔詳解
anonymous_enable=YES 開啟匿名用戶訪問;
local_enable=YES 啟用本地系統用戶訪問;
write_enable=YES 本地系統用戶寫入權限;
local_umask=022 本地用戶創建檔案及目錄默認權限掩碼;
dirmessage_enable=YES 列印目錄顯示資訊,通常用于用戶第一次訪問目錄時,資訊提示;
xferlog_enable=YES 啟用上傳/下載日志記錄;
connect_from_port_20=YES FTP使用20埠進行資料傳輸;
xferlog_std_format=YES 日志檔案將根據xferlog的標準格式寫入;
listen=NO vsftpd不以獨立的服務啟動,通過xinetd服務管理,建議改成YES;
listen_ipv6=YES 啟用IPV6監聽;
pam_service_name=vsftpd 登錄FTP服務器,依據/etc/pam.d/vsftpd中內容進行認證;
userlist_enable=YES vsftpd.user_list和ftpusers組態檔里用戶禁止訪問FTP;
tcp_wrappers=YES 設定vsftpd與tcp wrapper結合進行主機的訪問控制,vsftpd服務器檢查/etc/hosts.allow 和/etc/hosts.deny中的設定,來決定請求連接的主機,是否允許訪問該FTP服務器,
1.2.6 通過Windows客戶端資源管理器訪問Vsftp服務器端
ftp://192.168.1.181

圖1-6 匿名用戶訪問FTP默認目錄
1.2.7 FTP設定為被動模式使用埠方法
FTP主被動模式,默認為主動模式,設定為被動模式使用埠方法如下:
pasv_enable=YES
pasv_min_port=60000
pasv_max_port=60100
1.3 vsftpd服務器簡介
目前主流的FTP服務器軟體包括:vsftpd、ProFTPD、PureFTPd、Wuftpd、Server-U FTP、 FileZilla Server等軟體,其中Unix/Linux使用較為廣泛的FTP服務器軟體為vsftpd ,
非常安全的FTP服務行程(Very Secure FTP daemon,vsftpd),vsftpd在Unix/Linux發行版中最主流的FTP服務器程式,優點小巧輕快,安全易用、穩定高效、滿足企業跨部門、多用戶的使用(1000用戶)等,
vsftpd基于GPL開源協議發布,在中小企業中得到廣泛的應用,vsftpd可以快速上手,基于vsftpd虛擬用戶方式,訪問驗證更加安全,vsftpd還可以基于MYSQL資料庫做安全驗證,多重安全防護,
1.4 FTP客戶端簡介
windows和Linux系統默認都自帶有ftp命令程式,可以連接到FTP服務器進行互動式的上傳,下載通信,除此以外,還有大量的圖形化FTP客戶端工具,
windows中常用FTP客戶端軟體包括CuteFTP、FlashFXP、LeapFTP、Filezilla等,
1.5 vsftpd匿名用戶配置
vsftpd默認以匿名用戶訪問,匿名用戶默認訪問的FTP服務器路徑為:/var/ftp/pub,匿名用戶只有查看權限,無法創建、洗掉、修改,如需關閉FTP匿名用戶訪問,需修改組態檔/etc/vsftpd/vsftpd.conf,將anonymous_enable=YES修改為anonymous_enable=NO,重啟vsftpd服務即可,
1、設定允許匿名用戶能夠上傳、下載、洗掉檔案
如果允許匿名用戶能夠上傳、下載、洗掉檔案,需在/etc/vsftpd/vsftpd.conf組態檔中加入如下:
anon_upload_enable=YES 允許匿名用戶上傳檔案;
anon_mkdir_write_enable=YES 允許匿名用戶創建目錄;
匿名用戶完整vsftpd.conf組態檔如下:
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
2、修改目錄權限
由于默認vsftpd匿名用戶有兩種:anonymous、ftp,所以匿名用戶如果需要上傳檔案、洗掉及修改等權限,需要ftp用戶對/var/ftp/pub目錄有寫入權限,使用如下chown和chmod任意一種即可,設定命令如下:
方法一:
# chown -R ftp /var/ftp/pub
方法二:
# chmod o+w /var/ftp/pub

圖1-6 (a)更改/var/ftp/pub目錄屬主

圖1-6(b)更改/var/ftp/pub目錄寫入權限
如上vsftpd.conf組態檔配置完畢,同時權限設定完
4、重啟vsftpd服務
# systemctl restart vsftpd.service
5、通過Windows客戶端訪問,能夠上傳檔案、洗掉檔案、創建目錄等操作,如圖1-7所示:

圖1-7 匿名用戶訪問上傳檔案
1.6 vsftpd系統用戶配置
vsftpd匿名用戶設定完畢,匿名用戶,任何人都可以查看FTP服務器的檔案、目錄,甚至可以修改、洗掉,此方案不適合存放私密檔案在FTP服務器,如何保證檔案或者目錄專屬擁有者呢,vsftpd系統用戶可以實作該需求,
實作vsftpd系統用戶方式驗證,只需在Linux系統中創建多個用戶即可,創建用戶使用useradd,同時給用戶設定密碼,即可通過用戶和密碼登錄FTP,進行檔案上傳、下載、洗掉等操作,vsftpd系統用戶實作方法步驟如下:
1、Linux系統中創建系統用戶superman1、superman2,分別設定密碼為123456:
# useradd superman1
# useradd superman2
# echo 123456|passwd --stdin superman1
# echo 123456|passwd --stdin superman2

圖1-8 創建用戶并設定密碼
2、修改vsftpd.conf組態檔如下:
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
3、重啟vsftpd服務
# systemctl restart vsftpd.service

4、通過Windows資源客戶端驗證,使用superman1、superman2用戶登錄FTP服務器,即可上傳檔案、洗掉檔案、下載檔案,superman1、superman2系統用戶上傳檔案的家目錄在/home/superman1、/home/superman2下,如圖1-9(a)、1-9(b)所示:

圖1-9(a) superman1用戶登錄FTP服務器

圖1-9(b) superman1登錄FTP服務器上傳檔案
1.7 vsftpd虛擬用戶配置
注意:當允許虛擬用戶登錄時,就不能實作物體用戶登錄!!兩者不共存!
如果基于vsftpd系統用戶訪問FTP服務器,系統用戶越多越不利于管理,而且不利于系統安全管理,鑒于此,為了能更加的安全使用vsftpd,需使用vsftpd虛擬用戶方式,
vsftpd虛擬用戶原理:虛擬用戶就是沒有實際的真實系統用戶,而是通過映射到其中一個真實用戶以及設定相應的權限來實作訪問驗證,虛擬用戶不能登錄Linux系統,從而讓系統更加的安全可靠,
vsftpd虛擬用戶企業案例配置步驟如下:
1、安裝vsftpd虛擬用戶需用到的軟體及認證模塊;
# yum install pam* libdb-utils libdb* --skip-broken -y

圖1-10 安裝vsftpd虛擬用戶需用到的軟體及認證模塊
2、創建虛擬用戶臨時檔案/etc/vsftpd/ftpusers.txt,新建虛擬用戶和密碼,其中superman001、superman002為虛擬用戶名,123456為密碼,如果有多個用戶,依次格式填寫即可;
# echo "superman001
123456
superman002
123456" > /etc/vsftpd/ftpusers.txt

圖1-11 創建虛擬用戶臨時檔案
3、生成vsftpd虛擬用戶資料庫認證檔案,設定權限700;
# db_load -T -t hash -f /etc/vsftpd/ftpusers.txt /etc/vsftpd/vsftpd_login.db
# chmod 700 /etc/vsftpd/vsftpd_login.db

圖1-12 生成vsftpd虛擬用戶資料庫認證檔案
4、配置PAM認證檔案,/etc/pam.d/vsftpd檔案配置成如下兩行;
# echo "auth required pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required pam_userdb.so db=/etc/vsftpd/vsftpd_login" > /etc/pam.d/vsftpd

圖1-13 配置PAM認證檔案
5、所有vsftpd虛擬用戶需要映射到一個系統用戶,該系統用戶不需要密碼,也不需要登錄,主要用于虛擬用戶映射使用,創建命令如下;
# useradd -s /sbin/nologin ftpuser

圖1-14 創建虛擬用戶需要映射到的一個系統用戶
6、完整vsftpd.conf組態檔如下;
#global config Vsftpd
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
listen=NO
listen_ipv6=YES
userlist_enable=YES
tcp_wrappers=YES
#config virtual user FTP
pam_service_name=vsftpd
guest_enable=YES
guest_username=ftpuser
user_config_dir=/etc/vsftpd/vsftpd_user_conf
virtual_use_local_privs=YES
allow_writeable_chroot=YES
如上vsftpd虛擬用戶組態檔引數詳解:
#config virtual user FTP
pam_service_name=vsftpd 虛擬用戶啟用pam認證;
guest_enable=YES 啟用虛擬用戶;
guest_username=ftpuser 映射虛擬用戶至系統用戶ftpuser;
user_config_dir=/etc/vsftpd/vsftpd_user_conf 設定虛擬用戶組態檔所在的目錄;
virtual_use_local_privs=YES 虛擬用戶使用與本地用戶相同的權限;
allow_writeable_chroot=YES 所有的用戶都將擁有chroot權限,
7、至此,所有虛擬用戶共同基于/home/ftpuser主目錄實作檔案上傳與下載,可以在/etc/vsftpd/vsftpd_user_conf目錄創建虛擬用戶各自的組態檔,創建虛擬用戶組態檔主目錄;
# mkdir -p /etc/vsftpd/vsftpd_user_conf

圖1-15 創建虛擬用戶組態檔主目錄
8、如下分別為虛擬用戶superman001、superman002用戶創建組態檔;
為superman001用戶創建組態檔,同時創建私有的虛擬目錄,配置如下:
# echo "local_root=/home/ftpuser/superman001
write_enable=YES
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES" > /etc/vsftpd/vsftpd_user_conf/superman001

圖1-16 為superman001用戶創建組態檔,同時創建私有的虛擬目錄
為superman002用戶創建組態檔,同時創建私有的虛擬目錄,配置如下:
# echo "local_root=/home/ftpuser/superman002
write_enable=YES
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES" > /etc/vsftpd/vsftpd_user_conf/superman002

圖1-17 為superman002用戶創建組態檔,同時創建私有的虛擬目錄
虛擬用戶組態檔內容詳解:
local_root=/home/ftpuser/superman002 superman002虛擬用戶組態檔路徑;
write_enable=YES 允許登陸用戶有寫權限;
anon_world_readable_only=YES 允許匿名用戶下載,然后讀取檔案;
anon_upload_enable=YES 允許匿名用戶上傳檔案權限,只有在write_enable=YES時該引數才生效;
anon_mkdir_write_enable=YES 允許匿名用戶創建目錄,只有在write_enable=YES時該引數才生效;
anon_other_write_enable=YES 允許匿名用戶其他權限,例如洗掉、重命名等,
9、創建虛擬用戶各自虛擬目錄;
# mkdir -p /home/ftpuser/{superman001,superman002}
# chown -R ftpuser:ftpuser /home/ftpuser

圖1-18 創建虛擬用戶各自虛擬目錄
10、重啟vsftpd服務;
# systemctl restart vsftpd.service

圖1-19 啟動vsftpd服務
11、通過Windows客戶端資源管理器登錄vsftpd服務端,測驗結果如圖1-20(a)、1-20(b)所示:

圖1-20(a) superman001虛擬用戶登錄FTP服務器

圖1-20(b) superman001虛擬用戶上傳下載檔案
歡迎關注我的微信公眾號【超哥的IT私房菜】獲取更多技術干貨!
有什么吐槽或反饋意見,直接告訴我!
我會解決您說的問題,進一步更好的服務您哦!
溫馨提示:如出現二維碼失效也可直接添加微信號:ysc13803862469!
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/289142.html
標籤:其他

