9.1.2 虛擬用戶FTP


爲什麼要使用虛擬用戶:

匿名帳戶可以很好的保證FTP服務器的安全性,但是,對匿名用戶的權限管理不夠靈活.如果想對訪問FTP的帳戶給予更多的權限,就可以用本地帳戶來 實現.但是,本地帳戶默認情況下是可以登陸Linux系統的,這樣對Linux系統來說是一個安全隱患.那麼怎麼能在靈活的賦予FTP用戶權限的前提下, 保證FTP服務器乃至整個Linux系統的安全呢?使用虛擬用戶就是一種解決辦法.

FTP虛擬用戶的工作原理:

虛擬用戶,顧名思義,並不是一個合法的Linux系統帳戶,但是他可以用來登陸該系統上運行的FTP服務器.

當用戶在連接上FTP服務器後,會被要求輸入用戶名和密碼.FTP服務器在拿到這個用戶名和密碼後,會調用相應的PAM認證模塊對,和系統中的 FTP認證文件進行相比較.如果該用戶名和密碼與FTP認證文件中的某條記錄相符,就通過認證,然後該帳戶就被映射成一個Linux下的本地帳戶,然後根 據使用該本地帳戶對FTP資源進行訪問.否則則斷開該連接請求.

配置FTP虛擬用戶整個過程可以分這幾個步驟:

1.準備一個虛擬用戶的口令庫文件.該文件中保存的用戶名和密碼是用戶連接FTP服務器時,需要輸入的用戶名和密碼.文件可以自己創建,位置無關緊要,文件格式爲:奇數行爲用戶名,偶數行爲密碼.

例如:

#touch login.txt          //創建一個名爲login.txt的虛擬用戶口令庫文件

# vi login.txt              //編輯該口令庫文件

mike                      //虛擬用戶mike

123                       //虛擬用戶mike的密碼

john                      //虛擬用戶john

321                       //虛擬用戶john的密碼

保存退出.

2.用剛纔建立的虛擬用戶口令庫文件生成FTP服務器的認證文件.該認證文件是一個被加密後的密文.PAM在調用相應的認證模塊後,會對從FTP服務器發來的用戶名和密碼進行加密,然後在跟該文件進行對比,發現相符條目後,登陸用戶纔會被允許登陸.

db_load -T -t hash -f login.txt /etc/vsftpd/vsftpd_login.db

               //在運行該命令前,別忘記安裝libdb-utils軟件包,該包包含有db_load命令等.關於該命令的使用不在本文討論範圍內.其中-f參數後跟的爲剛纔創建的虛擬用戶口令庫文件.最後的路徑爲生成的FTP認證文件的存放位置.

爲了進一步保證安全,可以將該FTP認證文件的權限設置爲600.

3.建立虛擬用戶所需要的PAM配置文件.由於FTP服務器在接受到用戶的用戶名和口令後會調用PAM認證,所以我們還要創建虛擬用戶的PAM配置文件.

我們將該文件保存在/etc/pam.d目錄下,文件名暫時取爲:vsftpd.這裏要注意一點就是,該文件名要與FTP服務主配置文件(/etc/vsftpd/vsftpd.conf)中的pam_service_name=vsftpd選項的選項值相同.

創建好該文件後,將下面的內容加入到該文件中:

auth  required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

改好後,保存退出.注意3個紅色文件的文件名.該3個文件爲1個文件,只不過在使用中寫法不同.

這裏需要注意,把/etc/pam.d/vsftpd文件的原內容全部註釋掉,添加這兩行內容,則本地用戶不可登錄,只有虛擬用戶可以登錄,若不註釋掉原內容,則虛擬用戶和本地用戶都可以登錄。

4.由於用戶在通過PAM的認證後要被映射成一個本地用戶,所以我們還要建立一個本地用戶供虛擬用戶使用.

我們只需要對該本地用戶賦予FTP主目錄的適當訪問權限就行.即使FTP服務器遭到***,這個本地用戶也沒有訪問其他目錄的權限,相對比較安全一些.

useradd -d /home/ftpsite virtual        //用戶名爲virtual,主目錄爲FTP的根

chmod 700 /home/ftpsite                 //將其權限設置爲700,可以根據實際情形進行修改

5.在FTP的主配置文件中,啓用FTP虛擬用戶.增加如下選項即可:

guest_enable=YES

guest_username=virtual             //將虛擬用戶映射成本地的哪個用戶.這裏用的是virtual,剛纔建立的那個用戶.

pam_service_name=/etc/vsftpd/vsftpd    //切記要查看該項的值

配置到這裏就完成了,別忘記重啓FTP服務進行測試.

6.爲不同的虛擬用戶分配權限

默認情況下,虛擬用戶擁有相同的權限,就是virtual的權限,我們可以根據實際需求對不同的虛擬用戶分配權限.

首先在FTP的主配置文件中加一個選項:

user_config_dir=/etc/vsftpd_user_conf             //文件名和路徑都可以自己定義

然後創建該目錄.

mkdir /etc/vsftpd_user_conf

下面就可以在該目錄下編輯不同虛擬用戶的權限配置文件了,比如要對mike編輯其權限.

touch mike                  //建立mike的權限文件.文件名要與虛擬用戶名相同

可以根據實際需求爲該文件添加下面的選項和值:

anon_world_readable_only=NO               //表示用戶可以瀏覽FTP目錄和下載文件

anon_upload_enable=YES                    //表示用戶可以上傳文件

anon_mkdir_write_enable=YES               //表示用戶有創建和刪除目錄的權限

anon_other_write_enable=YES               //表示用戶具有文件改名和刪除文件的權限

下面我們通過兩個案例來測試一下虛擬用戶的配置:

案例1:

配置使用虛擬用戶的ftp服務器

說明:

共兩個虛擬用戶:vuser1,vuser2

vuser1:家目錄爲/home/virtual/vuser1,可以上傳下載、創建目錄、修改目錄,刪除文件。

vuser2:家目錄爲/home/virtual/vuser2,只能上傳。

服務器配置:

image

image

修改主配置文件:

image

image

image

客戶端測試:

image

image

image

案例2:

匿名用戶、本地用戶、虛擬用戶均可訪問ftp服務器

修改/etc/pam.d/vsftpd文件:

image

修改主配置文件/etc/vsftpd/vsftpd.conf

image

image

image

客戶端測試:

image

image

image



資料來源:

https://blog.csdn.net/mm624531604/article/details/8960531

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章