未加星标

vsftpd基于mysql进行虚拟用户管理

字体大小 | |
[数据库(mysql) 所属分类 数据库(mysql) | 发布者 店小二04 | 时间 2016 | 作者 红领巾 ] 0人收藏点击收藏

FTP是我们日常工作中经常用到的一个服务,但是FTP对用户的管理却比较薄弱,默认状态下,FTP利用pam机制进行账号管理,默认情况下使用的是系统账号,如何提升FTP对用户管理的有效性,针对不同的用户设定不同的上传权限,这就要基于虚拟账号来管理了,本篇就介绍下在vsftpd利用pam机制,结合mysql实现FTP虚拟账号的管理

具体包含:

1、vsftpd的日常配置使用

2、利用mysql实现虚拟账号管理

环境:

CentOS7.2 系统,IP为10.1.32.72

第一章vsftpd的日常配置使用 1、vsftpd服务器端的安装

yum install vsftpd


vsftpd基于mysql进行虚拟用户管理
2、vsftpd的配置文件介绍 [[email protected] ~]# grep -E "^(#[^[:space:]]+|[[:alpha:]]+)" /etc/vsftpd/vsftpd.conf
anonymous_enable=YES ##### 是否启用匿名账户 #####
local_enable=YES ##### 是否启用本地系统账户 #####
write_enable=YES ##### 本地系统用户是否具有写权限 #####
local_umask=022 ##### 本地系统账户上传文件时,文件默认的umask #####
#anon_upload_enable=YES ##### 匿名账户是否允许上传 #####
#anon_mkdir_write_enable=YES ##### 匿名账户是否可以创建目录 #####
#anon_other_write_enable=NO ##### 匿名账户是否具有其他写操作的权限,如删除操作 #####
dirmessage_enable=YES ##### 目录的欢迎信息,要在目录下创建.message的文件 #####
xferlog_enable=YES ##### 是否启用传输日志 #####
connect_from_port_20=YES ##### 是否允许从20端口进行连接 #####
#chown_uploads=YES ##### 当上传文件时,是否更改文件的属主 #####
#chown_username=whoever ##### 更改文件属主为哪个用户 #####
#xferlog_file=/var/log/xferlog ##### 传输日志存储位置 #####
xferlog_std_format=YES ##### 传输日志格式是否为std标准格式 #####
#idle_session_timeout=600 ##### 空闲命令连接的超时时长 #####
#data_connection_timeout=120 ##### 数据连接的超时时长 #####
#ftpd_banner=Welcome to blah FTP service. ##### 登录ftp的欢迎信息 #####
#chroot_local_user=YES ##### 是否禁锢系统用户在其家目录 #####
#chroot_list_enable=YES ##### 是否对在/etc/vsftpd/chroot_list中的用户执行禁锢其在家目录 #####
#chroot_list_file=/etc/vsftpd/chroot_list ##### chroot_list文件路径 #####
pam_service_name=vsftpd ##### 基于pam认证使用到的pam认证的文件名称 #####
userlist_enable=YES ##### 是否启用user_list文件中的用户列表功能 #####
[[email protected] ~]#

禁锢用户于其家目录的说明:

如果不禁锢用户于其家目录,那么在用户登录到FTP服务器时,可以切换到任意其具有权限的文件系统路径,可以操作文件系统路径上其具有权限的任意文件,但单纯的禁锢用户于其家目录也会存在风险,因此,如果要禁锢用户到其家目录,一般情况下会要求用户对自己的家目录不能有写权限,这样一来,该系统用户就只能作为FTP的账号登录了,而如果该用户也希望能登录系统,则就不能让其对其家目录只有写权限,故形成了对立的方面

配置选项中禁锢用户于其家目录的几种方式:

<1>禁锢所有用户

chroot_local_user=YES

该选项就是让文件系统的用户,以自身用户名密码登录时,禁锢其职能在其家目录中,而不能切换到别的目录中

注意,设定了chroot后,要将对应用户的家目录的写权限去掉

<2>禁锢部分用户

白名单:

chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

表示启用chroot_list列表,定义在文件中的用户将不被禁锢在其家目录

黑名单:

chroot_local_user=NO

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

表示启用chroot_list列表,定义在文件中的用户将被禁锢在其家目录

3、FTP的用户权限应用模型

FTP的用户的权限,取决于FTP配置文件中其用该具有的权限,和该用户对FTP的文件共享目录的权限的交集

即是:

FTP服务有上传权限,但是其文件系统没有写权限,无法正常上传文件

FTP服务没上传权限,文件系统有写权限,也无法通过FTP登录的方式上传文件

4、配置nwc用户具有写权限示例

默认配置的情况下,匿名用户可查看可下载,但不可上传,删除等写操作,系统用户可进行写相关操作


vsftpd基于mysql进行虚拟用户管理
vsftpd基于mysql进行虚拟用户管理
vsftpd基于mysql进行虚拟用户管理
vsftpd基于mysql进行虚拟用户管理
vsftpd基于mysql进行虚拟用户管理
vsftpd基于mysql进行虚拟用户管理
第二章vsftpd基于mysql实现虚拟账号的管理 1、说明:

通过上述对vsftpd的介绍,我们发现,vsftpd基于系统用户和匿名用户的权限管理是比较粗糙的

由于vsftpd是基于pam认证,pam针对vsftpd的配置文件(/etc/pam.d/vsftpd中,编译安装此文件默认不存在)定义了在/etc/vsftpd/ftpusers文件中定义的文件系统用户都不允许登录FTP服务器,此机制有centos系统提供的

用户是否能登录FTP的机制,还有FTP自身提供的配置:

在/etc/vsftpd/有个文件,是user_list,此文件中定义了受控的用户账号

该文件有两种用法:

一种是黑名单(处理文件中定义的用户,其他用户都能登录),要配合指令:

userlist_deny=YES

一种是白名单(只有文件中的用户能登录),要配合指令

userlist_deny=NO

基于虚拟用户,可对每个虚拟用户设定不同的权限,因此权限管理的颗粒度比较小

所有的虚拟用户都会被映射为一个文件系统用户,因此访问时的文件目录是此系统用户的家目录

虚拟用户存储位置:文件、MySQL、ldap、redis、…

hash编码的文件中:

奇数行为用户名,偶数行为密码

关系型数据库:

vsftpd认证机制是基于pam机制的,故vsftpd是否支持利用关系型数据库进行账户认证,取决于pam,而默认情况下,pam是不支持msql数据库的,要想支持,需要借助第三方pam-mysql模块

2、pam-mysql模块说明

在centos6系统上,epel仓库中有pam-mysql程序,如果在centos6上,直接yum安装即可

在centos7系统上,并没有pam-mysql的程序,只能编译安装pam_mysql

在本实验环境中,采用的是CentOS7的系统,故需要编译安装pam_mysql

3、准备编译环境,确保"Development Tools"和"Server Platform Development"开发工具包组已经安装
vsftpd基于mysql进行虚拟用户管理
4、安装编译安装pam-mysql时,依赖的程序包mariadb-devel和pam-devel
vsftpd基于mysql进行虚拟用户管理
5、下载pam-mysql源码包,编译安装
vsftpd基于mysql进行虚拟用户管理
vsftpd基于mysql进行虚拟用户管理
vsftpd基于mysql进行虚拟用户管理
vsftpd基于mysql进行虚拟用户管理
6、在数据库服务器上,创建vsftpd用到的数据库、创建表、插入具体的用户信息

(本例中数据库服务器就在本机)


vsftpd基于mysql进行虚拟用户管理
vsftpd基于mysql进行虚拟用户管理
7、修改pam的配置文件,让其利用mysql进行虚拟用户认证
vsftpd基于mysql进行虚拟用户管理
8、为虚拟用户添加本地文件系统用户,因为虚拟用户最终是要映射为某个文件系统用户的
vsftpd基于mysql进行虚拟用户管理
9、修改vsftpd的配置文件,让其使用虚拟用户认证
vsftpd基于mysql进行虚拟用户管理
10、修改完配置文件,重启vsftpd服务,验证使用虚拟账户是否能够正常登陆
vsftpd基于mysql进行虚拟用户管理
11、配置每个虚拟账户具有不同的权限
vsftpd基于mysql进行虚拟用户管理
修改vsftpd配置文件,让每个虚拟用户拥有不同的权限的定义
vsftpd基于mysql进行虚拟用户管理
vsftpd基于mysql进行虚拟用户管理
定义完后,重启vsftpd服务,然后进行验证
vsftpd基于mysql进行虚拟用户管理
vsftpd基于mysql进行虚拟用户管理

本文数据库(mysql)相关术语:navicat for mysql mysql workbench mysql数据库 mysql 存储过程 mysql安装图解 mysql教程 mysql 管理工具

分页:12
转载请注明
本文标题:vsftpd基于mysql进行虚拟用户管理
本站链接:http://www.codesec.net/view/485542.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 数据库(mysql) | 评论(0) | 阅读(21)