vsftp配置詳解
前言
FTP(File Transfer Protocol)是文件傳輸協議的簡稱。它能讓用戶 連接上一個遠程計算機(運行著 FTP 服務器程序)查看遠程 計算機上有哪些文件,然后把文件從遠程計算機上下載到 本地計算機,或把本地計算機文件上傳到遠程計算機。但是ftp是一種古老的文件傳輸協議,是明文傳輸,特別的不安全所以就有了vsftp。
一、vsftp相關概念梳理
1、vsftp用戶
訪問FTP服務器時都需要經過驗證,只有經過FTP服務器的驗證,用戶才能進行訪問和傳輸文件等操作,Vsftpd提供三種驗證 登錄方式,分別是匿名用戶、本地用戶、虛擬用戶:
匿名用戶(anonymous):在默認情況下,系統只提供匿名用戶訪問。 本地用戶(local user):又稱為真實賬號,本身就是系統用戶,它是以真實的用戶名和口令進行登錄,以/etc/passwd中的用戶名進行驗證,本地用戶既可以登錄FTP服務器,又可以登錄系統使用其他系統資源,對系統安全有極大的威脅,所以應盡量避免用戶使用本地賬號訪問FTP服務器。 虛擬用戶(guest)形式:Vsftpd虛擬用戶與系統賬號(passwdshadow)是分離的,采用單獨的用戶名/口令方式進行保存,通過這樣的處理來提高系統的安全。Vsftpd用戶驗證采用PAM方式,由于用戶名/口令被單獨保存,因此實際驗證時Vsftpd需要用一個本地用戶的身份讀取數據庫文件來完成驗證,通常由guest_username選項指定本地用戶,正如同匿名用戶也需要有一個本地用戶ftp來映射一樣。
相對于本地用戶來說,虛擬用戶只能訪問FTP服務器所提供的資源,這大大增強了系統安全性。相對于匿名用戶而言,虛擬用 戶需要驗證用戶名和密碼,同時增加了對用戶訪問權限的可管理性。對于需要提供FTP服務,又要考慮主機安全和管理方便的系 統來說,采用虛擬用戶方式是最適合的。
2、VSFTP 的主要功能
從此名稱上可以看出,開發者的初衷是將系統的安全性放在 首要位置。除了這個與生俱來的安全特性以外,高速傳 輸與運行的穩定性也是 VSFTP 的 2 個顯著特點。在速 度方面,使用 ASCII 代碼模式下載數據時,VSFTP 的速 度是 Wu- FTP(另一種比較流行的類 Unix 平臺的 FTP 軟件)的 2 倍,如果 Linux 主機使用 2.4.* 的內核,在千 兆以太網上的下載速度可達 86 Mbit/s;在穩定性方面 更加出色,VSFTP 在單機模式下支持 4 000 個以上的并 發用戶同時連接。
二、安裝配置
1、vsftp安裝
(1)查詢是否安裝vsftp: rpm -q vsftp
(2)沒有安裝則使用rpm包安裝或其他安裝方式安裝,這里我直接rpm包安裝:先掛載,然后找到vsftp包,再安裝:
(3)啟動:systemctl start vsftpd.service
(4)查看狀態:systemctl status vsftpd.service
2、文件配置 :vsftp 配置文件為 /etc/vsftpd/vsftpd.conf,含義如下:
local_enable=YES 設定為NO的情況下(本地用戶禁止訪問)導致虛擬用戶將無法訪問。 guest_enable=YES 啟用虛擬用戶登錄功能 guest_username= virtualuser 虛擬用戶登錄后,其宿主用戶為virtualuser pam_service_name=ftp 指定PAM認證文件/etc/pam.d/ftp virtual_use_local_privs=NO 為了提高系統安全,我們應該首先設置FTP宿主目錄/home/virtualuser屬性與權限: # chown virtualuser:virtualuser /home/virtualuser設置virtualuser目錄的擁有者、組。 # chmod 700 /home/virtualuser將目錄/home/virtualuser的權限設為擁有者可讀寫執行; 當virtual_use_local_privs= YES時,虛擬用戶的權限與本地用戶相同,此時只需設置write_enable=YES,虛擬用戶就可以和本地 用戶一樣就擁有寫權限。 默認情況下virtual_use_local_privs取值為NO,此時虛擬用戶的權限與匿名用戶權限相同,可參考匿名用戶的配置對虛擬用戶 的訪問權限進行配置 舉例如下: 1、控制虛擬用戶不能瀏覽目錄但仍可以對文件進行操作 anon_world_readable_only=YES 2、允許虛擬用戶上傳文件 write_enable=YES全局性設置,打開寫權限 anon_upload_enable=YES 3、允許虛擬用戶修改文件名和刪除文件 (write_enable=YES) anon_other_write_enable=YES 4、允許匿名用戶創建目錄 (write_enable=YES) anon_mkdir_write_enable=YES 考慮到以上選項的設置對匿名用戶也同樣會生效。配置時一定要慎之又慎,如果不想匿名用戶趁機擁有同樣的權限,配置時 最好關閉匿名用戶登錄功能。 可以通過配置chroot相關參數,限定本地用戶對其他目錄的訪問。將用戶限制在自家目錄的做法: 限制所有的本地用戶在自家目錄 chroot_local_user=YES 系統默認值為NO
三、具體實例:(配置虛擬用戶vsftpd服務器)
1、創建虛擬用戶口令庫文件
(1)創建/root/virtual文件
wangwu 虛擬用戶名 redhat 虛擬用戶名wangwu的口令 zhaoliu 虛擬用戶名 linux 虛擬用戶名zhaoliu的口令
(2)生成虛擬用戶口令文件
db_load -T -t hash -f /root/virtual /etc/vsftpd/virtual.db
(3)修改虛擬用戶口令文件/etc/vsftpd/virtual.db的設置權限為600
chmod 600 /etc/vsftpd/virtual.db
(4)創建/etc/pam.d/vsftpd.vu文件,該文件是PAM配置文件,內容如下:
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/virtual account required /lib64/security/pam_userdb.so db=/etc/vsftpd/virtual
(5)創建用戶virtualuser,該用戶主目錄為編輯?/home/ftpuser,并為該主目錄設置權限為700.
useradd -d /home/ftpuser virtualuser chmod 700 /home/ftpuser su - virtualuser -c "echo Hello Linux">/home/ftpuser/testfile 以用戶virtualuser身份創建/home/ftpuser/testfile文件
(6)編輯/etc/vsftpd/vsftpd.conf文件
anonymous_enable=NO 是否允許匿名用戶登錄 local_enable=YES 是否允許本地用戶登錄 write_enable=NO 是否允許用戶有寫入權限 anon_upload_enable=NO 是否允許匿名用戶上傳文件 anon_mkdir_write_enable=NO 是否允許匿名用戶創建目錄權限 anon_other_write_enable=NO 是否允許匿名用戶有更改權限 chroot_local_user=YES 是否將本地用戶鎖定在自己的主目錄中 ftpd_banner=Welcome to FTP service. 開場白 guest_enable=YES 是否啟用虛擬用戶 guest_username=virtualuser 虛擬用戶在系統中的真實用戶名 local_umask=022 設置本地用戶新建文件時的umask值 xferlog_enable=YES 是否啟用傳輸日志文件系統記錄下載和上傳信息 connet_from_port_20=YES 連接20號端口 xfer_std_format=YES 設置傳輸日志文件是否寫入標準xferlog格式 listen=NO 是否啟用獨立進程控制vsftpd,no表示啟用xinetd進程 pam_service_name=vsftpd.vu userlist_enable=YES tcp_wrappers=YES
(7)重啟vsftpd服務
systectl restart vsftpd.service
(8)測試:ftp 192.168.1.109
如果啟用chroot,必須保證ftp根目錄不可寫,這樣對于ftp根直接為網站根目錄的用戶不方便,所以建議假如ftp根目錄是/home/ftpuser/,則將訪問權限改寫如下:chmod a-w /home/ftpuser/
如果出現如下情況,也是/home/ftpuser/權限問題,可以該成777后,a-w。
都改好后,測試結果如下
原創文章,作者:N24_yezi,如若轉載,請注明出處:http://www.www58058.com/64009
贊,過程寫的比較詳細,可以再擴展一下,比如如何限制用戶的存儲空間~繼續加油~