實現基於MYSQL驗證的vsftpd虛擬用戶

一、說明

服務器A:

系統:centos6
IP:172.17.16.169

服務器B:

系統:centos7
IP:172.17.17.173

二、服務器B配置數據庫

1.安裝數據庫服務

2.安全腳本

3.創建需要的數據庫、表、用戶

create database  vsftpd;

create table vsftpd.ftpusers(name char(20),password char(50));

grant select on vsftpd.ftpusers to ftp@'%' identified by 'password';

4.在表中插入數據

insert vsftpd.ftpusers value ('ftp1',password('ftp1password'));

insert vsftpd.ftpusers value ('ftp2',password('ftp2password'));

insert vsftpd.ftpusers value ('ftp3',password('ftp3password'));

insert vsftpd.ftpusers value ('ftp4',password('ftp4password'));

insert vsftpd.ftpusers value ('ftp5',password('ftp5password'));

三、安裝支持mysql的pam模塊

1.centos6

yum   -y  install pam_mysql

2.centos7——編譯安裝

#開發包/包組
yum -y install mariadb-devel
yum -y groupinstall Development\ Tools 
yum -y install pam-devel   

#config
./configure --with-pam-mods-dir=/lib64/security --with-pam=/usr

#編譯安裝
make && make install

#生成的模塊文件路徑
/usr/lib64/security/pam_mysql.so
/usr/lib64/security/pam_mysql.la 

四、在FTP服務器上配置vsftpd服務

1.在FTP服務器上建立pam認證所需文件

vim /etc/pam.d/vsftpd.mysql
#添加如下兩行
        auth required pam_mysql.so user=ftp passwd=password host=172.17.17.173 db=vsftpd table=ftpusers user column=name passwdcolumn=password  crypt=2

        account required pam_mysql.so user=ftp passwd=password host=172.17.17.173 db=vsftpd table=ftpusers usercolumn=name passwdcolumn=password  crypt=2
加密方式在README中有說明

2.建立相應用戶與目錄

useradd -s /sbin/nologin  -m -d /var/ftproot vuser
#主目錄有w權限,則用戶將被拒絕登陸
chmod 555 /var/ftproot

mkdir -p /var/ftproot/ftp{1,2,3,4,5}/{upload,pub}
chmod 555 /var/ftproot/* 

#對upload設置w權限用來上傳文件
setfacl -R -m d:u:vuser:rwx /var/ftproot/ftp{1,2,3,4,5}/{upload,pub}

3.修改vsftpd配置文件,配合mysql認證

anonymous_enable=YES
guest_enable=YES
guest_username=vuser
pam_service_name=vsftpd.mysql

五、配置虛擬用戶具有不同的訪問權限

vsftpd可以在配置文件目錄中爲每個用戶提供單獨的配置文件以定義其ftp服務訪問權限
每個虛擬用戶的配置文件名同虛擬用戶的用戶名。
配置文件目錄可以是任意未使用目錄,只需要在vsftpd.conf指定其路徑及名稱即可

1.在vsftpd.conf指定其路徑及名稱

vim /etc/vsftpd/vsftpd.conf 
添加下行
    user_config_dir=/etc/vsftpd/conf.d

2.爲每個用戶提供單獨的配置文件

mkdir /etc/vsftpd/conf.d
touch /etc/vsftpd/conf.d/ftp{1,2,3,4,5,6}

3.在上一步驟創建的文件中配置虛擬用戶的訪問權限

有關設置
注意:=兩邊不能有空格

anon_upload_enable=YES
  允許上傳
  要保證對非根且登陸目錄有w權限
anon_mkdir_write_enable=YES
  修改上傳的目錄
anon_other_write_enable=YES
  修改上傳的文件
local_root=/ftproot
  登錄目錄改變至指定的目錄

六、測試

1.各用戶配置文件

conf.d/ftp1
    local_root=/var/ftproot/ftp1/
    anon_upload_enable=YES
    anon_other_write_enable=YES

conf.d/ftp2
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES
    local_root=/var/ftproot/ftp2/

conf.d/ftp3
    local_root=/var/ftproot/

ftp4和ftp5沒寫

2.測試成功

虛擬用戶會默認禁錮根

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