您的位置:首页 > 数据库 > SQL

实现基于MYSQL验证的vsftpd虚拟用户

2017-10-26 19:39 741 查看

一、说明

服务器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.测试成功

虚拟用户会默认禁锢根
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息