FTP文件共傳輸服務
一,vsftpd服務基礎
(1),FTP服務概述
FTP(File Transfer Protocol,文件傳輸協議)是典型的C/S結構的應用層協議,需要由服務端軟件、客戶端軟件共同實現文件傳達輸功能。
1,FTP連接及傳輸模式
#FTP服務器默認使用TCP協議的“20、21端口”與客戶端進行通信
#20端口用於建立數據連接,並傳輸文件數據
#21端口用於建立控制連接,並傳輸FTP控制命令
【模式】
#主動模式:服務器主動發起數據連接,首先由客戶端向服務端的21端口建立FTP
控制連接,當需要傳輸數據時,客戶端以ROPT命令告知服務器“我打開了某
個端口,你過來連接我“,於是,服務器從20端口向客戶端發送請求並建立
數據連接。
#被動模式:服務器被動等待數據連接,如果客戶機所在網絡的防火牆禁止主動模
式連接,通常會使用被動模式,客戶端向服務器的該端口(非20)發送請求
並建立數據連接。
【端口】
隨機端口 > 1024 周知端口 <= 1024
2,FTP用戶類型
#匿名用戶:ftp或anonymous,空密碼,一般用於提供公共文件的下載。
#本地用戶:本機的系統用戶。
#虛擬用戶:不是直接使用系統用戶,而是位於獨立數據文件中的FTP用戶賬號,通
過使用虛擬用戶,將FTP賬戶與Linux系統賬戶的關聯性降至最低,可以爲系
統提供更好的安全。
3,FTP服務器軟件的分類
#windows:iis serv-u
#Linux:proftpd pureftpd vsftpd
〖vsftpd〗
a)該軟件針對安全特性方面做了大量的設計
b)Vsftpd在速度和穩定性方面的表現也相當突出
c)Vsftpd可以支持15000個用戶併發連接
d)Vsftpd:“very secure FTP daemon”
4,FTP客戶端工具的種類
#windows:cuteFTP FlashFxp LeapFTP Filezilla
#Linux:gftp kuftp
(2),vsftpd的配置
#主程序:/usr/sbin/vsftpd
#配置文件:/etc/vsftpd
#腳本文件:/etc/init.d/vsftpd
1,用戶列表文件“ftpusers和user_list”
#ftpusers:黑名單文件,此文件中列出的用戶將禁止登錄到vsftpd服務
#user_list:黑白名單文件,一般用作白名單。此文件中包含的用戶可能被禁止登錄,
也可能被允許登錄,具體取決於主配置文件vsftpd.conf中的設置
userlist_enable=yes,user_list列表文件才生效
userlist_deny=yes,爲黑白名單,禁止此列表中的用戶登錄
userlist_deny=no,爲白名單,允許此列表中的用戶登錄
2,主配置文件“vsftpd.conf”
格式:配置項=參數
【vsftpd.conf常見配置項及含義說明】
【匿名用戶/適用於虛擬用戶】
anonymous_enable=yes /是否允許匿名訪問
anon_umask=022 /設置匿名用戶所上傳文件的默認權限掩碼值,採用反碼方式表示
anon_root=/var/ftp /設置匿名用戶的FTP根目錄(缺省爲/var/ftp)
anon_upload_enable=yes /是否允許匿名用戶上傳文件
anon_mkdir_write_enable=yes /是否允許匿名用戶有創建目錄的寫入權限
anon_other_write_enable=yes /是否允許匿名用戶有其他寫入權限“改名,刪除”
anon_max_rate=0 /限制匿名用戶的最大傳輸速率(0爲無限制),單位爲字節/秒
【本地用戶】
local_enable=yes /是否允許本地系統用戶訪問
local_umask=022 /設置本地用戶所上傳文件的默認權限
local_root=/var/ftp /設置本地用戶的FTP根目錄,適用於虛擬用戶
local_local_user=yes /是否將FTP本地用記禁錮在宿主目錄中
local_max_rate=0 /限制本地用戶的最大傳輸率(0爲無限制)
【全局配置】
userlist_enable=yes /是否啓用user_list用戶列表文件,啓用黑白名單
userlist_deny=yes /是否禁用user_list列表文件中的用戶賬號,yes爲黑
max_clients=0 /是否允許多個客戶端同時連接(0爲無限制)
max_per_ip=0 /對來自同一個IP地址的客戶端,最多允許多少個併發連接(0爲元限制),控制多進程下載,如“迅雷”
connect_from_port_20=yes /允許服務器主動模式(從20端口建立數據連接)
pasv_enable=yes /允許被動模式連接
pasv_max_port=24600 /設置用於被動模式的服務器最大端口號
pasv_min_port=24500 /設置用於被動模式的服務器最小端口號
pam_service_name=vsftpd /設置用於用戶認證的PAM文件位置(/dev/pam.d/目錄中對應的文件名)
listen=yes /是否以獨立運行的方式監聽服務
listen_address=0.0.0.0 /設置監聽FTP服務的IP地址
listen_port=21 /設置監聽FTP服務的端口號
write_enable=yes /啓用任何形式的寫入權限(如上傳、刪除文件等)要開啓它
download_enable=yes /是否允許下載文件(no爲僅限於瀏覽、上傳)
dirmessage_enable=yes /用戶切換進入目錄時顯示.message文件
xferlog_enable=yes /啓用xferlog日誌,默認記錄到/var/log/xferlog
xferlog_std_format=yes /啓用標準的xferlog日誌格式。如禁用,將使用vsftpd自己的日誌格式
二,基於系統用戶的FTP服務
(1),匿名訪問的FTP服務
1,準備匿名FTP訪問的目錄
#FTP匿名用戶對應的系統用戶爲ftp
#宿主目錄:/var/ftp
2,開放匿名用戶配置,並啓動vsftpd服務
#設置主配置文件:vim /etc/vsftpd/vsftpd.conf
#開啓服務:service vsftpd restart
3,測試匿名FTP服務器
【登錄FTP後,對客戶端操作方法】
Linux | Windows | |
顯示當前路徑 | !pwd | !cd |
改變路徑 | lcd | lcd |
查看目錄內容 | !ls | !dir |
(2),用戶驗證的FTP服務
1,基本的本地用戶驗證
·ftp://用戶名@192.168.1.1
·ftp://用戶名:密碼@192.168.1.1
2,使用user_list用戶列表文件
·編輯“vim /etc/vsftpd/user_list”
添加本地用戶
·編輯 vim /etc/vsftpd/vsftpd.conf
userlist_enable=yes 啓用此項
userlist_deny=no 啓用白名單
·重啓服務:service vsftpd restart
(3),vsftpd服務的其他常用配置
1,修改vsftpd服務的監聽地址、端口
查看vsftpd服務的監聽情況:netstat -anpt | grep “vsftpd”
2,允許使用FTP服務器的被動模式
3,限制FTP連接的併發數、傳輸速度
三,基於虛擬用戶的FTP服務
(1),建立虛擬用戶的賬號數據庫
準備工作:rpm -ivh db4-utils-..rpm /安裝此軟件
1,創建文件格式的用戶名、密碼列表
vim /etc/vsftpd/vusers.list /vusers.list文件名,後綴名自定義
用戶名奇數行
密碼偶數行
2,創建Berkeley DB格式的數據庫文件源文件目標文件
a)先進入/etc/vsftpd/目錄:cd /etc/vsftpd
b)創建轉換:db_load -T -t hash -f vusers.listvusers.db
c)查看轉換後的文件類型:flie vusers.db
d)爲提高虛擬用戶賬號文件的安全性,設置文件權限
chmod 600 /etc/vsftpd/vusers.*
3,添加虛擬用戶的映射賬號、創建FTP根目錄
useradd -d /var/ftproot -s /sbin/nologin virtual
chmod 755 /var/ftproot (ftproot這個目錄會自動創建)
(2),爲vsftpd服務添加虛擬用戶支持
1,爲虛擬用戶建立PAM認證文件
位於:/etc/pam.d/vsftpd
vim /etc/pam.d/vsftpd.vu(vsftpd.vu文件名可自定義)
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers
2,修改vsftpd配置,添加虛擬用戶支持
vim /etc/vsftpd/vsftpd.conf
……//省略部分內容
local_enable=yes /需要映射本地用戶、所以啓用此項
write_enable=yes /啓用上傳寫入支持
anon_umask=022 /指定上傳權限掩碼
guest_enable=yes /啓用用戶映射功能
guest_username=virtual /指定映射的系統用戶名稱
pam_service_name=vsftpd.vu /指定新的PAM認證文件
3,爲不同的虛擬用戶建立獨立的配置文件
a)vim /etc/vsftpd/vsftpd.conf
……//省略部分內容
user_config_dir=/etc/vsftpd/vusers_dir (vusers_dir目錄名自定義)
b)創建用戶配置文件夾
mkdir /etc/vsftpd/vusers_dir
c)進入此文件夾,爲用戶建立獨立的配置文件
cd /etc/vsftpd/vusers_dir
vim 用戶名
anon_upload_enable=yes /上傳權限
anon_mkdir_write_enable=yes /創建、定入權限
anon_other_write_enable=yes /修改權限
d)重新加載配置
service vsftpd reload