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

环境为CentOS7,我是用两台,也可以放在一台做实验

10.10.6.187 ----FTP服务器
10.10.6.189 ----MySQL服务器

FTP是网络协议之一,为系统系统提供了通过网络与远程服务器进行传输的简单方法。vsftpd 是支持FTP协议的程序。选择vsftpd主要是因为可以进行权限的控制,每个vsftpd账户都可以进行对应的配置。

vsftp提供的三种登陆方式:

1.匿名登录
2.本地用户登录
3.虚拟用户登录

首先配置MySQL服务

准备库
MariaDB [(none)]> create database vsftpd;
MariaDB [(none)]> use vsftpd;

准备表
MariaDB [vsftpd]> CREATE TABLE users ( id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,name CHAR(50) BINARY NOT NULL,password CHAR(48) BINARY NOT NULL );
MariaDB [vsftpd]> show tables;
+------------------+
| Tables_in_vsftpd |
+------------------+
| users            |
+------------------+
1 row in set (0.00 sec)

准备虚拟用户
MariaDB [vsftpd]> insert users (name,password) value('ftpuser1',password('123123'));
MariaDB [vsftpd]> insert users (name,password) value('ftpuser2',password('123123'));
MariaDB [vsftpd]> select * from users;
+----+----------+-------------------------------------------+
| id | name     | password                                  |
+----+----------+-------------------------------------------+
|  1 | ftpuser1 | *E56A114692FE0DE073F9A1DD68A00EEB9703F3F1 |
|  2 | ftpuser2 | *E56A114692FE0DE073F9A1DD68A00EEB9703F3F1 |
+----+----------+-------------------------------------------+
2 rows in set (0.00 sec)

授权
MariaDB [vsftpd]> grant select on vsftpd.users to vsftpd@'10.10.6.%' identified by '123123';
MariaDB [vsftpd]> flush privileges;

然后配置FTP服务
pam_mysql需要编译安装,且需要其他依赖包

[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# wget http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz
[root@localhost src]# tar -zxvf pam_mysql-0.7RC1.tar.gz
[root@localhost data]# cd /data/pam_mysql-0.7RC1/
[root@localhost pam_mysql-0.7RC1]# ./configure --with-pam-mods-dir=/lib64/security/
[root@localhost pam_mysql-0.7RC1]# make && make install

建立pam认证所需文件

[root@localhost ~]#vi /etc/pam.d/vsftpd.mysql
auth required /data/pam_mysql-0.7RC1/.libs/pam_mysql.so user=vsftpd passwd=123123 host=10.10.6.187 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required /data/pam_mysql-0.7RC1/.libs/pam_mysql.so user=vsftpd passwd=123123 host=10.10.6.187 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

建立虚拟用户映射的系统用户及对应的目录

[root@localhost pam.d]#useradd -d /data/ftproot -s /sbin/nologin vuser
[root@localhost pam.d]#chmod 555 /data/ftproot/
[root@localhost pam.d]#mkdir /data/ftproot/upload
[root@localhost pam.d]#setfacl -m u:vuser:rwx /data/ftproot/upload/

安装vsftpd

yum -y install vsftpd

修改vsftpd配置文件

[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO				#修改或取消注释
local_enable=YES				#修改或取消注释
write_enable=YES				#修改或取消注释
anon_upload_enable=NO			#修改或取消注释
anon_mkdir_write_enable=NO		#修改或取消注释
chroot_local_user=YES			#修改或取消注释
pam_service_name=vsftpd.mysql	#修改
guest_enable=YES				#添加
guest_username=vuser			#添加
allow_writeable_chroot=YES		#添加

重启服务,查看21端口已经在监听

[root@localhost ~]#systemctl restart vsftpd
[root@localhost ~]#ss -lntp
LISTEN      0      32                     [::]:21                    [::]:*                   users:(("vsftpd",pid=9304,fd=4))

测试使用虚拟用户登录验证
首先安装ftp客户端,或者filezila等客户端都可以

[root@localhost ~]#ftp 10.10.6.189
Connected to 10.10.6.189 (10.10.6.189).
220 (vsFTPd 3.0.2)
Name (10.10.6.189:root): ftpuser1                 
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (10,10,6,189,76,191).
150 Here comes the directory listing.
drwxrwxr-x    2 0        0               6 Jan 26 16:18 upload
226 Directory send OK.
ftp> 

虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关指令进行的。可以通过虚拟用户的配置文件自定义选项精确控制

[root@localhost ~]# mkdir /etc/vsftpd/vuser_config
[root@localhost ~]# touch /etc/vsftpd/vuser_config/ftpser{1,2}
[root@localhost ~]# vim /etc/vsftpd/vuser_config/ftpser1
local_root=/data/ftproot                                                                                                                                                                 
write_enable=YES
download_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_umask=022
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值