基于虚拟用户控制的ftp服务

FTP作为最常见的文件共享服务,可提供文件的上传,下载等服务;其用户可分为三类:

匿名用户:即不需要用户账号与密码即可登录FTP服务器,此时登录用户将会被映射为系统上的ftp用户。

系统用户:即用FTP服务器上的用户账号与密码登录FTP服务器。此种方法虽然在一定程度上对登录做出了限制,但由于系统账号的相关权限,则增大了FTP服务器的系统风险;

虚拟用户:用户需要利用专为FTP服务创建的用户账号与密码进行登录;如此,既能限制FTP的登录用户,又尽量保证了FTP服务器的系统安全;

下面我们就以CentOS7为例来实现基于mysqlFTP服务设置虚拟用户登录。

1、环境搭建;

首先,我们需要在系统上安装vsftpdmariadb-server,由于需要实现虚拟用户认证,所以我们还需要安装pam

yum –y install vsftpd mariadb-server pam

由于基于mysql数据库实现虚拟用户认证,所以我们需要将虚拟用户的相关数据存放在mysql中,如此一来,我们还需要安装pam_mysql。由于CentOS7上没有pam_mysqlrpm包,所以我们需要编译安装。具体步骤如下:

yum –y groupinstall “Development Tools” “Server Platform Development”      #安装开发包组    
yum –y install –y pam-devel mairadb-devel                                               #安装所需开发包
./configure –with-pam=/usr –with-mysql=/usr –with-pam-mods-dir=/usr/lib64/security
make
mke install

至此,我们需要的环境搭建完成。

2vsftpd常用选项;

vsftpd的配置文件主要为/etc/vsftpd/vsftpd.conf,我们以用户相关作为分类来了解一下其常见配置;

匿名用户相关配置:

anonymous_enable=YES|NO                #是否允许匿名用户登录;    
anon_upload_enable=YES|NO               #是否允许匿名用户上传;
anon_mkdir_write_enable=YES|NO            #是否允许匿名用户创建文件夹;
anon_other_write_enable=YES|NO            #是否允许匿名用户拥有其他写权限,如删除、新建文件等;

系统用户相关配置:

local_enable=YES|NO             #是否允许系统用户登录;    
write_enable=YES|NO             #是否允许系统用户具有写权限;

3mysql相关配置;

我们需要在mysql中配置vsftpd服务所需的一些数据库及内容;

a、启动mysql服务;

systemctl start mariadb.service

b、初始化mysql

mysql_secure_installation

c、创建所需数据库及表格;

mysql> create database vsftpd;        
mysql> use vsftpd;
mysql> create table user (id int unsigned not null auto_increment primary key,name char(10) not null,password char(48));
mysql> insert into user (name,password) values (‘tom’,password(‘mageedu’)),(‘jerry’,password(‘mageedu’));
mysql> grant all on vsftpd.* to ‘vsftpd’@’localhost’ identified by ‘mageedu’;
mysql> grant all on vsftpd.* to ‘vsftpd’@’127.0.0.1’ identified by ‘mageedu’;
mysql> flush privileges;

可以看到,我们创建了tomjerry两个用户,且密码都为mageedu,如此,我们在mysql中需要创建的相关数据已经完成;

4、创建所需用户与目录;

由于FTP的虚拟用户机制是将虚拟用户映射为本机的一个来宾用户,因此我们先在本机新建一个用户作为虚拟用户的映射用户;

ueradd –d /ftproot vuser        
chown root:root /ftproot
mkdir /ftproot/{upload,pub}
setfacl –m u:vuser:rwx /ftproot/upload

5、配置pamvsftpd

首先我们需要修改vsftpd的几项配置选项如下:

pam_server_name=vsftpd.mysql                 #指定pam的相关配置文件;        
guest_enable=YES                       #启用来宾账户;
guest_username=vuser                     #指定虚拟用户映射的来宾账户名;
user_config_dir=/etc/vsftpd/user_conf             #指定虚拟用户配置文件目录;

然后我们在/etc/pam.d/目录下新建文件vsftpd.myslq,内容如下:

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

下面即为此文件中一些字段的意义:

    user:连接mysql服务器的用户名,此用户要有权限访问认证vsftpd服务的数据库;

    passwd:连接mysql服务器用户的密码;

    hostmysql服务器主机地址;

    db:认证vsftpd服务的数据库名称;

    table:存放了用户和密码的表;

    usercolumn:用户名对应的字段;

    passwdcolumn:密码对应的字段;

    crypt:密码加密方法

6、创建各虚拟用户配置文件

首先我们新建vsftpd.conf配置文件中指定的用户配置文件存放目录。

mkdir /etc/vsftpd/user_conf

然后在此目录下创建tomjerry两个虚拟用户同名的权限配置文件。对于权限配置文件我们可根据需要给予相应的权限,在此,我们为两位用户给予相同的权限,内容如下:

vim –o /etc/vsftpd/user_conf/{tom,jerry}        
anon_upload=YES
anon_mkdir_enable=YES
anon_other_enable=YES

至此,我们所需的服务以配置完毕。

设置好防火墙与SELinux后,启动服务即可。

iptables –F        
setenforce 0
systemctl start vsftpd

 

原创文章,作者:luoliumeng,如若转载,请注明出处:http://www.178linux.com/53777

(0)
luoliumengluoliumeng
上一篇 2016-10-23 19:53
下一篇 2016-10-23 19:58

相关推荐

  • N25期第七周作业

    创建一个10G分区,并格式为ext4文件系统   要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳 fdisk /dev/sdb # size 10G type 83 mke2fs -t ext4 -b 20…

    Linux干货 2017-02-28
  • 浅谈DNS基本原理以及实现方法(二)

             DNS作为互联网服务的一个基础型服务,了解和掌握DNS服务的原理和配置将是每一个运维人员必备的技能,这就如同闯荡江湖的侠客不但要有的招式,还要懂的运用这些招式的心法一样,接下来我将从DNS的正反向解析、主从同步、子域授权以及Bind view这四个方面来揭开它神…

    Linux干货 2015-12-19
  • Linux网络属性管理(二)

    Linux网络属性(二) Linux 网络属性管理(二) ip命令 ip – show / manipulate routing, devices, policy routing and tunnels ip [ OPTIONS …

    Linux干货 2016-07-07
  • linux三剑客之awk

    awk             简介:是一个优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一。这种编程及数据操作语言的最大功能         &n…

    Linux干货 2016-12-05
  • linux发展简史

    前言 为什么要写这么一篇文章呢?我发现我虽然知道linux的一些知识,却不知道linux方面的历史,所以今天写一篇关于linux方面历史的文章,用来总结这段时间自己所学习到的关于linux的历史与linux的知识。关于说起linux的历史,就不得不介绍计算机的历史,与其他相关操作系统的一些历史,所以本文中的会简单介绍Linux与其他操作系统的关系。主要讲li…

    Linux干货 2017-02-16
  • GOPS 2016全球运维大会 上海站

    GOPS 2016全球运维大会 • 上海站已经圆满落幕,最新GOPS大会推荐:GOPS2017全球运维大会 • 深圳站 基本信息: GOPS2017全球运维大会 • 深圳站 时间:2017-04-21 08:00:00 至 2017-04-22 18:00:00结束 地点:深圳    会议规模:5000人 会议详情:http://www.…

    系统运维 2016-09-07