VSFTPD實現基於虛擬用戶的認證

本文旨在複習vsftpd的高級應用配置mysql


實驗要求算法


1.FTP的身份認證要實現基於虛擬用戶的身份認證,並建立2個虛擬用戶lance和rednanjingsql

2.PAM認證模塊基於本地的MySQL數據庫,即安裝Pam_MySQL模塊數據庫

3.虛擬用戶lance能夠在目錄/test中擁有至高無上的權限,讀寫刪;vim

4.虛擬用戶rednanjing在目錄/test僅僅能夠讀,而無其餘權限;bash


實驗環境、拓撲服務器


  1. 本實驗中yum源都是Aliyun Yum源框架

  2. 拓撲以下ide


wKiom1YwexriQ0eVAAJpUOP6D4A450.bmp


部署步驟1.安裝MySQL數據庫、建立認證表函數


說明:VSFTP認證方式能夠分爲3種:

    1.基於系統帳戶[即宿主機的/etc/passwd文件]; 

    2.基於指定的存放帳號密碼的文件[須要建立];

    3.基於虛擬用戶的,如和MySQL結合;

不管是哪種認證方式,VSFTPD程序自身是沒有認證功能的,是調用了Linux的PAM認證框架完成認證的,任何須要調用PAM認證框架的程序須要在/etc/pam.d建立相關的pam配置文件。這裏咱們使用基於MySQL的虛擬用戶認證,那麼須要作什麼呢?

    1.首先要讓PAM認證框架可以基於MySQL來認證,即安裝好Pam_MySQL模塊;

    2.要在/etc/pam.d爲vsftpd程序建立好配置文件,同時配置好vsftpd認證方式。


1.1 通用二進制安裝Mariadb

以前已經安裝過Mariadb,參考《MariaDB二進制安裝及基本管理》,此處再也不重複安裝。

固然也可以使用yum -y install mysql mysql-server mysql-devel安裝也可!

1.2 安裝Pam_MySQL模塊包[EPEL源]

yum -y install mysql_mysql

1.3 建立虛擬用戶認證所須要的MySQL數據庫

service mysqld start
mysql  -h  localhost -u root -p

wKiom1Ywf7fQePoPAAT1SDxjB5k293.bmp


#建立存放虛擬用戶帳號密碼等信息的表,能夠參考以下

wKioL1Ywg3CA72akAASJOE_rH0E212.bmp


#表結構以下

wKiom1Ywg0nhszmUAAThSOvEUpo892.bmp


值得說明的是:這裏爲何定義密碼爲48位?

爲了保護密碼不直接明文存儲在數據庫中,因此這裏咱們加密的方式,而即將採用的加密算法生成的長度就是48位,因此你懂的!


1.4 按照要求建立lance和rednanjing用戶,填寫相關的表字段

#在認證表ftp_auth_user中插入兩條用戶記錄

wKioL1Ywg42gjuwvAAMLJMiCeYU180.bmp


#查詢表數據,能夠看到password函數對zxczxc密碼進行了加密

wKioL1Ywg5zRvzHjAAO1QKLbAd8016.bmp


#建立完成後,可使用mysql -h localhost -u vsftpd -pzxczxc來驗證是否配置正確


部署步驟2.建立VSFTPD用到的PAM認證配置文件


2.1 任何程序要想使用PAM認證框架有2個步驟,首先在/etc/pam.d/下建立一個pam配置文件,其次該程序中要指明調用pam認證,並使用剛纔建立的pam配置文件。這裏咱們來建立一個pam配置文件:

vi /etc/pam.d/vsftp.mysql 這個配置文件是VSFTP調用PAM認證框架的基礎

wKiom1Ywg3jRPTyjAAZl5NXvXLM762.bmp


部署步驟3.安裝配置VSFTPD,並指明要調用的PAM完成虛擬用戶認證


3.1 安裝VSFTP服務器端,直接使用yum便可

yum -y install vsftpd

3.2 創建虛擬用戶映射的系統用戶及其對應目錄

useradd -s /sbin/nologin -d /var/virtualftp virtualuser
chmod go+rx /var/virtualftp/

說明:不管是匿名、虛擬用戶認證,其實本質都必須映射爲Linux系統上的一個用戶。這很好理解,由於不管是上傳、下載等都是在Linux上的文件系統上操做的,而文件系統不認識MySQL數據庫,也不認識匿名用戶,它只認識/etc/passwd中的系統用戶,因此本質都是映射到一個/etc/passwd的用戶!

3.3 編輯VSFTPD主配置文件

useradd -s /sbin/nologin -d /var/virtualftp virtualuser
chmod go+rx /var/virtualftp/
  
anonymous_enable=yes    [必須YES]
chroot_local_user=yes   [建議YES,讓用戶登陸後的根路徑鎖定,不越權進入/etc等]
guest_enable=yes        [必須YES]
guest_username=virtualuser    [指爲剛纔建立的虛擬用戶映射的系統用戶]
pam_service_name=vsftp.mysql  [指明調用步驟2建立的pam配置文件]


部署步驟4.爲不一樣虛擬用戶配置不一樣權限


剛纔說了其實全部的虛擬用戶經過PAM_MySQL認證後,都被映射爲virtualuser這個系統用戶,那麼全部虛擬用戶權限不都同樣了嗎?其實VSFTPD自有妙計。

4.1 繼續編輯VSFTPD配置文件

vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/virtualusers_config 添加該行

wKioL1Ywg8GinAj6AAO4kPrKlz8919.bmp

4.2 爲lance用戶指派上傳、下載、刪除權限

vim /etc/vsftpd/virtualusers_config/lance
固然了在這以前請建立好相關目錄/etc/vsftpd/virtualusers_config和文件lance、rednanjing,這裏我直接演示權限賦予

wKiom1Ywg56hFYFOAALF_GgI914096.bmp

4.3 同理,爲rednanjing指派權限

vim /etc/vsftpd/virtualusers_config/rednanjing

wKioL1Ywg-PyZyelAAK6kPH5vxM210.bmp

至此,全部配置已經完成,接下來進行測試吧!


部署步驟5.VSFTP驗證虛擬用戶認證


5.1 啓動vsftpd服務

service vsftpd strat

5.2 客戶端鏈接,以lance身份進行,分別測試上傳、刪除、建立目錄等

ftp 10.134.140.63 輸入用戶名lance 密碼zxczxc

測試上傳

wKiom1Ywg9PRFDy5AANhpORhYtQ150.bmp

測試新建目錄

wKioL1YwhBbylm49AAR6OJ9EuT0532.bmp

測試刪除

wKioL1YwhCDTYcP9AAPwZK7Bqv4527.bmp


5.3 測試rednanjing是否權限被成功禁止呢!

wKiom1Ywg_WxRIkhAAJ4kCTAocg418.bmp

相關文章
相關標籤/搜索