基于虚拟用户控制的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

相关推荐

  • n28-第二周

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示 cp:copy files and directories 复制文件和目录 -i:交互式复制 默认情况下是别名定义了alias cp=’cp -i’ -f:强制复制 #cp -f /etc/issue /tmp/first.txt -r:递归复制目录 将/etc目录递归复制到/tmp…

    Linux干货 2017-12-10
  • linux的内建命令和外部命令

    摘要:    Linux命令有内部命令(内建命令)和外部命令之分,内部命令和外部命令功能基本相同,但是其工作机制相差很大。本文就内建命令和外部命令做一下介绍。 一、内部命令(内建命令)    内部命令,实际上是shell程序的一部分,其中包含的是一些比较简单的linux系统命令,这些命令由shell程序识别并在shel…

    Linux干货 2016-10-18
  • 基于haproxy实现wordpress动静分离

    环境:centos 6.8 注:此处省略对于各服务器的IP配置。 一:图示讲解      用户访问vip,通过haproxy代理得到服务器的资源。此架构下基于keepalived对haproxy做负载均衡(此种两种软件装在同一台服务器),基于haproxy对Nginx和apache做负载均衡,Nginx和Apache使用共享存储…

    2017-05-18
  • 马哥网络教育班21期+第一周博客作业

    1、描述计算机的组成及其功能。   硬件:     CPU(运算器、控制器、一缓存(L1)、二级缓存(L2)):       运算器主要用来进行算数运算以及逻辑运算。       控制器主要是用来协调       一级缓存和二级缓存主要是用…

    Linux干货 2016-07-12
  • grep和正则表达式

    grep       作用:文本搜索工具,根据用户指定的“模式(过滤条件)”对目标文件逐行进行匹配检查;打印匹配到的行;       模式:由正则表达式的元字符及文本所编写出的过滤条件    语法:【选项】【文件】  &…

    2017-08-04
  • 基于ssl功能实现mysql主从复制

    基于ssl功能实现mysql主从复制         证书准备:                                  CA证书…

    2016-11-22