1. 程式人生 > >vSFTP(FTP服務)

vSFTP(FTP服務)

linuxvsftp

系統版本:CentOS7.X

概念


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服務)