搭建FTP-----实现基于mysql验证的虚拟用户

前言:

在上一篇博客中,我们已经实现了基于文件认证的ftp服务,不过此方法也存在不少问题,比如过用户数据不好管理呀,以明文存储不安全呀。不能把用户数据单独存放在其他服务器呀等等。所以此次我们把用户数据放在mysql中,然后通过pam模块去mysql中找用户数据来实现认证。主体的过程和上篇区别不大~那我们就开始把~

正文:

此次,我们的环境是centos6,因为centos7中的pam_mysql模块得自己手动编译,所以就先使用centos6,不过两者区别也不大,而且编译pam_mysql模块也不难。老规矩,第一步先安装要使用到的程序:

yum install vsftpd mysql-server pam_mysql

此次我们依然使用系统的ftp用户来作为虚拟用户登录后的guest。当然,也可以自行创建新的用户,此处就不再演示啦~在centos7中记住一点,用户的家目录,用户不可以有写权限哟。好吧,我们先在mysql中创建认证需要的数据库和表~先启动mysql服务

#service mysqld start
#mysql                    #用mysql命令以匿名的方式连接到数据库
#mysql>CREATE DATABASE vsftpd; #创建名为vsftpd的数据库
mysql> GRANT SELECT ON vsftpd.* TO [email protected] IDENTIFIED BY ‘1234‘;  #给mysql用户 vsftpd权限,让其有查询权限,且密码为1234,因为我们的mysqld和vsftpd在同一服务器,所以host填写的是localhost,如果你们的mysql在单独的服务器就添服务器的地址啦~
mysql>FLUSH PRIVILEGES;   
mysql>USE vsftpd;  #进入我们的数据库,开始创建表啦~~
mysql>CREATE TABLE users (id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,name CHAR(50)
BINARY NOT NULL,password CHAR(48) BINARY NOT NULL);  #创建一个名为users的表,有三个字段分别是id为整型,主键,并且可以自增,name字段 是有50位的字符串,不能为空,password字段,因为我们还要对密码进行加密处理,处理后的长度是48位,所以长度是48 且不能为空
mysql> INSERT INTO users(name,password) values(‘xiaofengfeng‘,password(‘1234‘));
mysql> INSERT INTO users(name,password) values(‘xiaofengfeng2‘,password(‘1234‘));
#添加两个用户,密码都为1234

好啦~我们用于验证的数据库这边已经创建完毕,接下就开始配置ftp服务器啦,和上篇博客没太大区别,主要就是用了不同的pam模块,此处用到的是pam_mysql.so模块,首先我们先修改ftp的配置文件,只列出修改过的配置哈~

#/etc/vsftpd/vsftpd.conf
anonymous_enable=NO               #进制匿名登录
guest_enable=YES 
guest_username=ftp                 #所有登录的用户在服务端都当作ftp用户
pam_service_name=vsftpd.mysql      #pam的配置文件在/etc/pam.d目录下需要 自己创建

然后我们来创建pam模块需要的配置,在/etc/pam.d目录下新建文件vsftpd.mysql

#/etc/pam.d/vsftpd.mysql
auth required  pam_mysql.so user=vsftpd passwd=1234 host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required  pam_mysql.so user=vsftpd passwd=1234 host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

#此处用到pam_mysql.so模块,数据库的用户名为vsftpd 密码为1234 因为mysql数据库在本地所以host为localhost,如果在远端就写ip地址,数据库名为 vsftpd 表名为users 且要是用的用户名在name字段,用到的密码在password字段,因为密码字段是用musql的password()函数加密的,标号为2的加密算法可以就是与mysql的password()函数对应,所以此处crypt为2

还是老规矩,检查selinux是否关闭,iptables是否放行ftp服务。如果没有问题我们就可以用数据库的两个帐号登录了。如果需要哪个用户有上传数据的功能可以参考上篇博客,建立单独的用户配置文件,开启匿名上传功能。特别要注意的一点是,能让ftp用户对/var/ftp/pub有写权限,可以用acl也可以直接开放所有权限,或者建一个属主为ftp的目录upload专门用来让用户ftp上传文件。

时间: 2024-12-15 06:51:44

搭建FTP-----实现基于mysql验证的虚拟用户的相关文章

Centos6下vsftpd基于mysql认证创建虚拟用户

一,安装环境以及安装的软件: 1,CentOS release 6.4 (Final) [IP:192.168.1.110] 2,vsftpd-2.2.2-13.el6_6.1.x86_64 3,pam_mysql-0.7-0.12.rc1.el6.x86_64 4,mysql-5.6.16(编译安装) 二,在数据库上创建登录ftp的账号和密码 1,创建对应的database,远程授权登录账号并创建表用来存储登录ftp账号密码. mysql> create database vsftpd; my

搭建FTP-----基于文件验证的虚拟用户

前言: 以vsftpd搭建的ftp服务有三种认证模式,分别是匿名,本地用户和虚拟用户,本次我们就来一起实现基于文件验证的虚拟用户.(博主基本上所有的环境都是centos7,一般来讲和centos6没太多区别) 正文 虽然,我们可以在linux上新建不同的用户来进行认证,但是此方法对用户的管理不方便且还得注意不少安全问题,本次我们直接把虚拟用户的用户名和密码保存到文件中,登陆时再通过pam模块进行认证,并且同一转为本地的ftp用户,并且给不同的两个用户以不同的权限,一个可以上传文件,一个只能下载.

实现基于mysql验证的vsftpd虚拟用户 (centos6)

实现基于mysql验证的vsftpd虚拟用户 (centos6) 说明:本实验在两台Cento主机上实现,一台作为FTP服务器,一台作为数据库服务器 FTP服务器ip:172.16.250.90 Mysql服务器ip:172.16.252.16 一.安装ftp服务器安装包 yum install vsftpd pam_mysql 二.数据库服务器创建虚拟用户帐号   1.建立虚拟用户数据库      mysql> create database vsftpd;     mysql> show 

FTP基于PAM和MySQL/MariaDB实现虚拟用户访问控制

前言 vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序,特点是小巧轻快,安全易用,目前在开源操作系统中常用的FTP套件主要有proftpd.pureftp.ServU和wu-ftpd等.本文将讲解vsftpd的基本功能和如何基于PAM和MySQL/MariaDB实现虚拟用户访问控制. 基础配置介绍 工作原理 状态响应码 1xx:信息码 2xx:成功状态码 3xx:进一步提示补全信息的状态码 4xx:客户端错误 5xx:服务器端错误 用户认证 虚拟用户:仅用于访问某特定服务中的资源

mysql实现vsftp虚拟用户访问

使用MYSQL实现VSFTP虚拟用户访问 1.查看是否安装 mysql 安装包,没有就使用yum安装一下 2.查看是否安装vsftpd 软件包 如果没有就是用yum安装一下 3.查看mysql和ftp 服务是否为开机自启动如果不是就使用chkconfig 设置一下 4.登陆数据库 5.创建数据库名字vsftp 注意是后面使用分号 6.使用数据库vsftp并创建ftpuser 表 7.查看创建的ftpuser 是否成功,已经创建成功 8.插入数据名字为 yuri  和 kebo  密码为 1234

安装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

vsftpd基于数据库文件实现虚拟用户管理站点目录

vsftpd基于数据库文件来实现虚拟用户管理站点目录: ftp授权单个系统用户管理(此用户要禁止登陆服务器),虚拟出多个虚拟用户来管理不同的站点目录 一环境:(1)关闭selinux,centos6.8 x_86_64开启防火墙,放开ftp的端口 (2).存放虚拟用户的密码文件[[email protected] vsftpd]# cat /etc/vsftpd/vsftpd_logindrxiaowu ##账户ZkJxu55rt9 ##密码yanyonGZk&aO=+w09xiaowuZk&am

实现验证的vsftpd虚拟用户

实现基于文件验证的vsftpd虚拟用户--(一台) 一.创建用户数据库文件 vim /etc/vsftpd/vuser cd /etc/vsftpd/ db_load -T -t hash -f vusers.txt vusers.db //利用文本生成虚拟用户的数据库文件 chmod 600 vusers.db //实现基于文件验证的vsftpd虚拟用户 二.创建用户和访问FTP目录 useradd -d /var/ftproot -s /sbin/nologin vuser chmod +r

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并