实现基于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.测试成功

虚拟用户会默认禁锢根

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