实现基于MYSQL验证的vsftpd虚拟用户
实验环境
准备两台主机,129作为FTP服务器,140作为数据库服务器
140配置
安装数据库
yum install mariadb-server -y
创建数据库vsftpd
create database vsftpd;
创建表
use vsftpd
CREATE TABLE users (
id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
name CHAR(50) BINARY NOT NULL,
password CHAR(48) BINARY NOT NULL
);
创建两个虚拟用户,为了安全应该使用PASSWORD函数加密
insert users (name,password) value('ftpuser1',password('centos'));
insert users (name,password) value('ftpuser2',password('centos'));
建立存储虚拟用户数据库和连接的数据库用户
grant select on vsftpd.users to vsftpd@'192.168.160.%' identified by 'centos';
129配置
安装初始环境
yum install gcc pam-devel mariadb-devel gcc-c++ -y
把下载好的pam_mysql解压到data目录下
tar vxf pam_mysql-0.7RC1.tar.gz -C /data/
编译安装
cd /data/pam_mysql-0.7RC1/
./configure --with-pam-mods-dir=/lib64/security/
make && make install
在FTP服务器上建立pam认证所需文件
cd /etc/pam.d/
vim vsftpd.mysql
auth required pam_mysql.so user=vsftpd passwd=centos
host=192.168.160.140 db=vsftpd table=users usercolumn=name
passwdcolumn=password crypt=2
account required pam_mysql.so user=vsftpd passwd=centos
host=192.168.160.140 db=vsftpd table=users usercolumn=name
passwdcolumn=password crypt=2
安装vsftpd
yum install vsftpd -y
建立虚拟用户映射的系统用户及对应的目录
useradd -d /data/ftproot -s /sbin/nologin vuser
除去ftp根目录的写权限
chmod 555 /data/ftproot/
创建文件用于上传
mkdir /data/ftproot/upload
给upload文件精确的针对vuser用户的读写执行权限
setfacl -m u:vuser:rwx /data/ftproot/upload/
把虚拟用户映射成vuser,并修改pam路径指向之前创建的vsftpd.mysql
vim /etc/vsftpd/vsftpd.conf
pam_service_name=vsftpd.mysql
guest_enable=YES
guest_username=vuser
systemctl restart vsftpd
配置虚拟用户具有不同的访问权限
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vusers_config
创建所需要目录,并为虚拟用户提供配置文件
mkdir /etc/vsftpd/vusers_config/
cd /etc/vsftpd/vusers_config/
vim ftpuser1
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
登录目录改变至指定的目录
vim ftpuser1
local_root=/data/ftproot2