vSFTP(FTP服務)
概念
vSFTP是Linux上實現FTP(File Transfer Protocol)文件傳輸協議的一款軟件。在企業中,一般用於跨公網的文件共享安全傳輸。它擁有獨立的身份驗證機制以及文件傳輸加密機制,可以讓文件傳輸更安全,但是相對來說傳輸效率則會降低。
vSFTP協議有兩個端口:20和21。21用於會話控制,20用於數據傳輸。
vSFTP使用PAM認證機制進行用戶身份驗證。PAM(Pluggable Authentication Modules)可插拔認證模塊是由Sun互聯網技術服務公司提出的一種用戶密碼認證機制。它通過一些動態鏈接庫和一套統一的API,將系統提供的服務和該服務的認證方式分開。
vSFTP支持三種用戶訪問方式:匿名訪問、用戶訪問、虛擬用戶訪問。
匿名:無需要用戶名和密碼,使用默認匿名用戶訪問文件服務。
用戶:基於系統用戶名和密碼才可訪問文件服務。
虛擬用戶:將一個真實用戶可以映射成多個虛擬用戶,使用虛擬用戶身份訪問文件服務。
vSFTP的數據傳輸模式:主動模式和被動模式。
主動模式:服務端20端口主動連接客戶端20號端口,相同端口連接傳輸效率高。
被動模式:服務端20端口被動連接客戶端非20號端口,不同端口連接傳輸可增加安全性。
服務端:搭建FTP服務
一、安裝vsftpd軟件包
# yum -y install vsftpd
二、修改配置文件
# unalias cp (臨時取消CP命令彈出提示
# cp -f /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak (備份主配置文件
# cat /etc/vsftpd/vsftpd.conf.bak |grep -Ev "^#|^$|^;" >/etc/vsftpd/vsftpd.conf(過濾#;空格開頭的行到vsftpd.conf文件中
# vi /etc/vsftpd/vsftpd.conf (修改主配置文件
listen=YES #開啟vSFTP服務以獨立進程運行
listen_port=21 #設置監聽端口
listen_address=0.0.0.0 #設置監聽地址
pasv_enable=YES #設置數據傳輸模式為被動模式
pam_service_name=vsftpd #設置PAM認證文件位置,對應/etc/pam.d/vsftpd文件。此項為必須。
xferlog_enable=YES ` #開啟Xferlog日誌功能
xferlog_file=/var/log/xferlog #指定Xferlog日誌文件位置
xferlog_std_format=YES #指定日誌文件的存檔格式為Xferlog日誌格式
tcp_wrappers=NO #禁用TCP_wrappers主機訪問控制功能
userlist_enable=NO #禁用用戶列表控制功能
anonymous_enable=NO #禁用匿名用戶訪問
write_enable=YES #允許用戶擁有可寫權限
download_enable=YES #允許用戶擁有下載權限
local_enable=YES #開啟本地用戶訪問
local_root=/var/ftp #設置本地用戶訪問的家目錄位置
local_umask=077 #開啟本地用戶寫入文件權限(反掩碼),777-077=700
chroot_local_user=YES #開啟將本地用戶禁錮在家目錄
三、創建一個登錄用戶
# useradd tom -M -s /sbin/nologin (創建用戶,不允許創建家目錄和登錄系統
# echo "123" |passwd zhangsan --stdin (密碼
# chown tom.tom /var/ftp (訪問目錄所屬用戶
# chmod 555 /var/ftp (設置主目錄只允許讀和執行的權限,主目錄不允許有寫的權限
四、開啟服務
# systemctl start vsftpd
客戶端:安裝FTP客戶端
一、安裝FTP客戶端並訪問
# yum -y install ftp (安裝FTP客戶端
# ftp 192.168.116.131 (訪問FTP服務
常用配置解讀
配置文件路徑:/etc/vsftpd/vsftpd.conf
PAM認證配置文件路經:/etc/pam.d/vsftpd
配置格式:
選項=YES/NO
選項=文件路徑
選項=數值
配置說明
一、全局配置
listen=YES #設置監聽進程的方式,YES為獨立進程運行,NO則以Xined進程的方式運行,服務則由Xined管理工具控制。Xined是一種服務管理工具,類似於Redhat中的service命令。一般設置為YES。
listen_port=2 #設置監聽端口號。默認為21。
listen_address=0.0.0.0 #設置監聽地址。如果不配置,默認監聽所有IP。
connect_from_port_20=NO #設置服務器數據傳輸是否為主動模式。如果為YES,則服務器主動從客戶端的20端口建立數據連接,傳輸數據。
pasv_enable=YES #設置服務器數據傳輸是否為被動模式。默認開啟,當服務端被動傳輸數據。
pasv_max_port=0 #設置被動模式下客戶端開啟的最大端口號。
pasv_min_port=0 #設置被動模式下客戶端開啟的最小端口號。
tcp_wrappers=NO #設置是否開啟TCP_wrappers主機訪問控制功能。如果為YES,則由TCP_wrappers網絡防火墻控制,允許或拒絕那些主機才能訪問FTP服務。
pam_service_name=vsftpd #設置用於用戶認證的PAM文件位置。此項必須存在。對應/etc/pam.d/vsftpd文件。
max_clients=2000 #設置客戶端最大連接數。
max_per_ip=50 #設置相同IP同時連接的數量。0表示無限制。
ascii_download_enable=NO #是否啟用下載時采用ASCII方式傳輸文件。加密傳輸。
ascii_upload_enable=NO #是否啟用上傳時采用ASCII方式傳輸文件。加密傳輸。
xferlog_enable=NO #控制開啟xferlog日誌功能。
xferlog_file=/var/log/xferlog #指定日誌記錄位置。
xferlog_std_format=NO #是否將日誌記錄的格式轉換成xferlog格式。
write_enable=NO #控制所有用戶登錄是否可寫。
download_enable=YES #控制所有用戶是否允許下載操作。
user_config_dir=/etc/vsftpd/user #針對每個用戶創建不同的配置文件。這裏指定存放用戶配置文件的目錄位置。每個用戶的配置文件名與用戶名必須相同。
userlist_enable=YES #是否開啟用戶列表控制功能。創建一個用戶列表文件,每個用戶名為一行。
userlist_file=/etc/vsftpd/user_list #指定用戶列表文件位置。
userlist_deny=YES #設置是否拒絕這個用戶列表文件中的用戶訪問登錄。如果為YES則為拒絕,如果為NO則為允許。
二、匿名用戶配置
anonymous_enable=YES #控制匿名登錄是否啟用。如果啟用則默認使用ftp和anonymous為匿名用戶。
ftp_username=ftp #設置匿名用戶名。默認為ftp。
anon_root=/var/ftp #設置匿名用戶的主目錄位置。默認是/var/ftp目錄。
anon_mkdir_write_enable=NO #如果為YES,則匿名用戶允許創建、刪除目錄的權限,前提是開啟write_enable=YES。
anon_other_write_enable=NO #如果為YES,則匿名用戶允許執行寫入操作,除了上傳和創建目錄,如刪除和重命名。
anon_upload_enable=NO #如果為YES,則允許匿名用戶上傳文件,前提是開啟write_enable=YES。
anon_world_readable_only=YES #如果為YES,則匿名用戶只擁有只讀權限,只可以下載文件,不可修改和寫入。
anon_max_rate0 #設置匿名傳輸最大速率(以字節為單位)。0表示無限制。
anon_umask=077 #設置匿名用戶創建文件時的文件權限。為反掩碼,轉換成正掩碼:777-077=700。
no_anon_password=NO #如果為YES,則匿名登錄時不用要求輸入密碼直接登錄。
三、本地用戶配置
local_enable=NO #本地用戶啟用開關,如果啟用的話則訪問文件服務需要輸入用戶名和密碼,默認讀取系統中/etc/passwd文件中的用戶賬戶。說白了就是使用系統用戶登錄。
local_root=/var/ftp #設置本地用戶的主目錄位置。
local_umask=077 #設置本地用戶創建文件時的文件權限。為反掩碼,轉換成正掩碼:777-077=700。
chroot_local_user=NO #設置是否將用戶限制在自己的用戶主目錄中,不允許切換到上級目錄。
chroot_list_enable=NO #如果為YES,則你需要提供一個本地用戶列表的文件。在該列表中的用戶都不允許切換到上級目錄,將其限制在家目錄(共享目錄)中。你需要指定一個本地用戶列表的文件。
chroot_list_file=/etc/vsftpd/chroot_list #設置一個本地用戶列表文件。
local_max_rate=0 #設置本地用戶傳輸最大速率(以字節為單位)。
userlist_enable=NO #設置使用一個本地用戶列表控制用戶訪問登錄,只允許此列表中的用戶訪問文件服務。
userlist_deny=NO #設置使用一個本地用戶列表控制用戶訪問登錄,在此列表中的用戶禁止訪問文件服務。
userlist_file=/etc/vsftpd/user_list #本地用戶列表文件位置。
四、虛擬用戶配置
guest_enable=NO #如果開啟此項則所有非匿名登錄用戶都將被視為“訪客”登錄。開啟虛擬用戶映射功能。
guest_username=ftp #設置虛擬用戶對應的真實系統用戶名。
vSFTP(FTP服務)