VSftpd使用MySQL存储虚拟用户进行认证

VSftpd使用MySQL存储虚拟用户进行认证

前言

周一的时候做这个实验失败了,当时以为是pam_mysql模块的问题,今天晚上随便试试,没想到竟然成功了,遂写一篇博客来分享一下

实验拓扑

实验环境

主机 IP 作用
server1.anyisalin.com 172.16.1.2 提供ftp服务
server2.anyisalin.com 172.16.1.3 使用存储vsftpd虚拟用户

注意:本实验所有操作都在SElinux和iptables关闭的前提下进行

实验步骤

安装vsftpd并测试

以下操作在server1.anyisalin.com执行

[[email protected] ~]# yum install vsftpd -y --nogpgcheck| tail -n 10   #安装vsftpdRunning Transaction TestTransaction Test SucceededRunning Transaction  Installing : vsftpd-2.2.2-14.el6.x86_64                                   1/1   Verifying  : vsftpd-2.2.2-14.el6.x86_64                                   1/1 

Installed:  vsftpd.x86_64 0:2.2.2-14.el6                                                  

Complete![[email protected] ~]# service vsftpd startStarting vsftpd for vsftpd:                                [  OK  ][[email protected] ~]# yum install -y lftp --nogpgcheck &> /dev/null[[email protected] ~]# lftp localhost   #vsftpd能够正常运行lftp localhost:~> ls                          drwxr-xr-x    2 0        0            4096 Jul 24  2015 pub

安装MySQL并创建对应用户和表

以下操作在server2.anyisalin.com执行

[[email protected] ~]# yum install mysql-server -y --nogpgcheck &> /dev/null #安装MySQL数据库[[email protected] ~]# service mysqld start #启动MySQL数据库[[email protected] ~]# mysql_secure_installation  #初始化安装MySQL数据库,否则后面登录可能会有问题

创建用户并授权,创建对应数据库和表并插入两行数据

[[email protected] ~]# mysql -uroot -ppasswd

mysql>mysql> GRANT ALL ON vsftpd.* TO [email protected]‘%‘ IDENTIFIED BY ‘passwd‘;Query OK, 0 rows affected (0.00 sec)

mysql> CREATE DATABASE vsftpd;Query OK, 1 row affected (0.00 sec)

mysql> use vsftpd;Database changed

mysql> create table users (    -> id int AUTO_INCREMENT NOT NULL,    -> name char(20) binary NOT NULL,    -> password char(48) binary NOT NULL,    -> primary key(id)    -> );Query OK, 0 rows affected (0.01 sec)

mysql> insert into users(name,password) values(‘tom‘,password(‘magedu‘));Query OK, 1 row affected (0.00 sec)

mysql> insert into users(name,password) values(‘anyisalin‘,password(‘anyisalin‘));Query OK, 1 row affected (0.00 sec)

mysql> FLUSH PRIVILEGES;Query OK, 0 rows affected (0.00 sec)

配置vsftpd基于MySQL表的虚拟用户

以下操作在server1.anyisalin.com执行

首先要完成基于MySQL表的认证,需要通过pam_mysql模块实现,我们要先安装pam_mysql

[[email protected] ~]# wget -O /etc/yum.repos.d/epel.repo https://lug.ustc.edu.cn/wiki/_export/code/mirrors/help/epel?codeblock=0 #下载epel源的repo文件[[email protected] ~]# yum install pam_mysql -y --nogpgcheck &> /dev/null

建立pam认证所需的配置文件

[[email protected] ~]# vim /etc/pam.d/vsftpd.mysql  #创建pam配置文件并按照自己的参数配置文件

auth required /lib64/security/pam_mysql.so user=vsftpd passwd=passwd host=172.16.1.3 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2account required /lib64/security/pam_mysql.so user=vsftpd passwd=passwd host=172.16.1.3 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

创建虚拟用户映射的系统用户

[[email protected] ~]# useradd -r -s /sbin/nologin vuser -d /var/ftproot[[email protected] ~]# mkdir /var/ftproot[[email protected] ~]# chmod go+x /var/ftproot

编辑vsftpd配置文件并确保开启以下选项

anonymous_enable=YESlocal_enable=YESwrite_enable=YESanon_upload_enable=NOanon_mkdir_write_enable=NOchroot_local_user=YES

而后添加以下选项

guest_enable=YESguest_username=vuser

并确保pam_service_name选项的值如下所示

pam_service_name=vsftpd.mysql

为每个用户单独提供配置文件

user_config_dir=/etc/vsftpd/vusers_config #在配置文件中添加这个选项
[[email protected] ~]# mkdir /etc/vsftpd/vusers_config[[email protected] ~]# vim /etc/vsftpd/vusers_config/tom        #设置tom用户有所有权限anon_upload_enable=YESanon_mkdir_write_enable=YESanon_other_write_enable=YES[[email protected] ~]# vim /etc/vsftpd/vusers_config/anyisalin    #设置anyisalin用户只有upload权限anon_upload_enable=yes

重启服务

[[email protected] ~]# service vsftpd restartShutting down vsftpd:                                      [  OK  ]Starting vsftpd for vsftpd:                                [  OK  ]

测试

测试tom用户的权限

[[email protected] ~]# lftp -u tom 172.16.1.2   #使用tom用户登录Password: lftp [email protected]172.16.1.2:~> lcd /etclcd ok, local cwd=/etclftp [email protected]172.16.1.2:~> put fstab   #能够上传711 bytes transferred                           lftp [email protected]172.16.1.2:/> ls-rw-------    1 496      492           711 Apr 03 22:34 fstablftp [email protected]172.16.1.2:/> rm fstab     #能够删除rm ok, `fstab‘ removedlftp [email protected]:/> lslftp [email protected]:/> mkdir 1  #能够创建文件夹mkdir ok, `1‘ createdlftp [email protected]172.16.1.2:/> lsdrwx------    2 496      492          4096 Apr 03 22:35 1lftp [email protected]172.16.1.2:/> 

测试anyisalin用户的权限

[[email protected] ~]# lftp -u anyisalin 172.16.1.2 #使用anyisalin用户登录Password: lftp [email protected]172.16.1.2:~> ls    drwx------    2 496      492          4096 Apr 03 22:35 1lftp [email protected]172.16.1.2:/> lcd /etc/lcd ok, local cwd=/etclftp [email protected]172.16.1.2:/> put fstab  #能够上传711 bytes transferredlftp [email protected]172.16.1.2:/> lsdrwx------    2 496      492          4096 Apr 03 22:35 1-rw-------    1 496      492           711 Apr 03 22:36 fstablftp [email protected]172.16.1.2:/> rm fstab   #不能删除rm: Access failed: 550 Permission denied. (fstab)lftp [email protected]172.16.1.2:/> mkdir 2    #不能创建文件夹mkdir: Access failed: 550 Permission denied. (2)lftp [email protected]172.16.1.2:/> 

总结

其实我感觉使用MySQL存储vsftpd虚拟用户的账号密码没有什么实际用户,毕竟用户量也不会太大,还不如用文件的方式存储 
作者:AnyISalIn QQ 1449472454 
感谢:MageEdu

时间: 2024-10-25 15:58:08

VSftpd使用MySQL存储虚拟用户进行认证的相关文章

vsftpd+pam+MySQL—->实现虚拟用户认证

一.安装所需要程序 1.安装vsftpd yum -y install vsftpd 2.安装MySQL yum -y install  mysql-server mysql-devel pam_mysql 二.创建虚拟用户账号 1.准备数据库及相关表 首先请确保mysql服务已经正常启动.而后,按需要建立存储虚拟用户的数据库即可,这里将其创建为vsftpd数据库. mysql> create database vsftpd; mysql> grant select on vsftpd.* t

vsftpd基于mysql做虚拟用户认证

虚拟用户: 用户账号存储于何处? 文件,MySQL,Redis, ... vsftpd的认证功能托管给pam: Pluggable Authencate Module,认证框架,认证库: 通过模块完成认证功能:/usr/lib64/security/ pam_mysql模块: 下载pam_mysql的源码包官方下载http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz (1)准备编译安装环境 [[email pro

vsftpd+pam+mysql实现虚拟用户访问控制

1.安装mysql数据库及开发环境 # yum -y install mysql-server mysql-devel 2.安装pam_mysql-0.7RC1 # tar xf pam_mysql-0.7RC1.tar.gz # cd pam_mysql-0.7RC1 # ./configure --with-mysql=/usr --with-openssl # make # make install # 启动mysql # service mysqld start 3.创建数据库.表及虚拟

安装vsftpd+pam+mysql实现对虚拟用户身份认证功能

安装vsftpd+pam+mysql来实现对虚拟用户身份认证功能 事项说明:在这里vsftpd直接使用yum  -y  install   vsftpd来直接安装的:mysql是使用通用二进制格式安装的,使用的版本为mysql-5.5.28.这里不再介绍安装步骤,前面已经详细介绍过.由于vsftpd需要借助pam模块到mysql数据库中检索用户名和密码,在这里还需要安装pam-mysql模块,才能实现pam到mysql中完成用户名和密码的认证功能. 一.安装所需要程序 1.事先安装好开发环境和m

通过MySQL实现虚拟用户访问vsftpd服务器

声明 作者:昨夜星辰 博客:http://yestreenstars.blog.51cto.com/ 本文由本人创作,如需转载,请注明出处,谢谢合作! 目的 通过MySQL实现虚拟用户访问FTP服务器. 配置 # 安装本次实验所用到的所有软件包 yum -y install vsftpd mysql-server mysql-devel pam-devel gcc-c++ make wget # 启动mysqld服务 service mysqld start # 初始化数据库管理员密码 mysq

vsftpd基于pam_mysql的虚拟用户认证

1.ftp用户 匿名用户:映射到某一个固定的系统用户,例如(ftp,vsftp,/var/ftp) 本地用户:系统用户,root及系统用户(0-999) 虚拟用户:nsswitch: name services switch  名称服务转换 PAM: Plugabl Plugable Authentication Modules  插入式认证模块本文主要讲解vsftpd基于pam_mysql的虚拟用户认证步骤. 2.准备环境 操作系统 主机名 IP地址 环境描述 CentOS 7.1 ch7 1

19、vftpd基于PAM_MYSQL进行虚拟用户的认证且每个用户有自己的独立目录及不同的访问权限

1.vsftp相关介绍FTP 是File Transfer Protocol(文件传输协议)的英文简称 两个连接:命令连接.数据连接(相对服务器来讲)FTP连接支持两种模式:主动模式(Port模式).被动模式(Passive模式)主动模式:服务器端通过20端口主动连接客户端,客户端监听在与服务器端建立命令连接的端口+1上,服务器工作在TCP/20被动模式:客户端使用自己与服务器端建立命令连接的端口+1上连接服务器端的随机端口,该随机端口在建立命令连接的时候已发给客户端 vsftp的用户有三种类型

vsftpd 基于mysql的虚拟账户

Centos7 vsftpd 基于MySQL的虚拟账户认证 实验环境: 两台虚拟机的防火墙和SELinux都已关闭 角色 IP vsftpd 192.168.148.7 mysql 192.168.148.17 系统账户 用户主目录 vuser /data/ftproot 虚拟账户 密码 用户主目录 ftp1 centos /data/ftproot/ftp1 ftp2 redhat /data/ftproot/ftp2 mysql服务器添加用户数据库 [[email protected] ~]

vsftp基于mysql的虚拟用户,iptables的用法

vsftp基于mysql创建虚拟用户 1.首先安装环境 yum groupinstall -y "Development Tools" "Server PlatformDevelopment" yum install -y pam-devel mariadb-devel mariadb-server vsftpd lftp ftp 下载最新的pam-mysql http://pam-mysql.sourceforge.net/ 编译安装pam-mysql tar x