VSFTP配置<二> ---虚拟用户的搭建

VSFTP 在两台主机上虚拟用户的实现

实验环境
    主机1:    172.16.66.82   【VSFTP服务器】
        OS:        CentOS 6.6
        vsftp:        vsftpd-2.2.2-12.el6_5.1.x86_64    
        pam_mysql:    pam_mysql-0.7-0.12.rc1.el6.x86_64
    主机2:    172.16.66.81    【数据库服务器,存储用户账号密码】
        OS:        CentOS 6.6
        DB:        MariaDB-5.5.40

一、vsftp虚拟用户简介:

虚拟用户的特点是只能访问服务器为其提供的FTP服务,而不能访问系统的其它资源。所以,如果想让用户对FTP服务器站内具有写权限,但又不允许访问系统其它资源,可以使用虚拟用户来提高系统的安全性。
    虚拟用户本身不是系统账号,但所有的虚拟用户会被同意映射为一个指定的系统账号,访问的共享位置即为此系统账号的家目录;

各虚拟用户可被赋予不同的访问权限;
        通过匿名用户的权限控制参数进行指定
    
    虚拟用户账号的存储方式: (此文件需要被编码成hash模式才能被访问)
        文件存储:编辑文件
        关系型数据库存储:(以后新增用户账号,只需要使用insert 就可以添加)
            即时查询数据库完成用户认证           
                (如果使用mysql数据库,pam要依赖于pam-mysql这个模块)
   
二、Vsftpd服务器端配置

1、安装vsftp、pam_mysql
    [[email protected] yum.repos.d]# yum install vsftp -y

[[email protected] yum.repos.d]# yum install pam_mysql -y

[[email protected] yum.repos.d]# yum install pam_mysql -y
Loaded plugins: fastestmirror, refresh-packagekit, security
Setting up Install Process
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package pam_mysql.x86_64 1:0.7-0.12.rc1.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
=========================================================================================================================================
 Package                         Arch                         Version                                   Repository                  Size
=========================================================================================================================================
Installing:
 pam_mysql                       x86_64                       1:0.7-0.12.rc1.el6                        epel                        38 k
Transaction Summary
=========================================================================================================================================
Install       1 Package(s)
Total download size: 38 k
Installed size: 88 k
Downloading Packages:
pam_mysql-0.7-0.12.rc1.el6.x86_64.rpm                                                                             |  38 kB     00:00     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : 1:pam_mysql-0.7-0.12.rc1.el6.x86_64                                                                                   1/1 
  Verifying  : 1:pam_mysql-0.7-0.12.rc1.el6.x86_64                                                                                   1/1 
Installed:
  pam_mysql.x86_64 1:0.7-0.12.rc1.el6                                                                                                    
Complete!

2、查看生成的文件

[[email protected] yum.repos.d]# rpm -ql pam_mysql
/lib64/security/pam_mysql.so
/usr/share/doc/pam_mysql-0.7
/usr/share/doc/pam_mysql-0.7/COPYING
/usr/share/doc/pam_mysql-0.7/CREDITS
/usr/share/doc/pam_mysql-0.7/ChangeLog
/usr/share/doc/pam_mysql-0.7/NEWS
/usr/share/doc/pam_mysql-0.7/README

-------------------------------------------------
三、数据库端配置

1、配置数据库:

[[email protected] ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 5.5.40-MariaDB-log MariaDB Server
Copyright (c) 2000, 2014, Oracle, Monty Program Ab and others.
Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.
MariaDB [(none)]> CREATE DATABASE vsftpd;    //创建数据库
Query OK, 1 row affected (0.03 sec)
MariaDB [(none)]> use vsftpd;        //使用vsftpd数据库
Database changed
MariaDB [vsftpd]> GRANT SELECT ON vsftpd.* TO [email protected]‘172.16.%.%‘ IDENTIFIED BY ‘1inux‘;    //创建用户并授权
Query OK, 0 rows affected (0.08 sec)
MariaDB [vsftpd]> FLUSH PRIVILEGES;        //刷新授权表
Query OK, 0 rows affected (0.04 sec)
MariaDB [vsftpd]> 
MariaDB [vsftpd]> use vsftpd;
Database changed
MariaDB [vsftpd]> CREATE TABLE users (
    -> id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> name VARCHAR(50) BINARY NOT NULL,
    -> password CHAR(48) BINARY NOT NULL);
Query OK, 0 rows affected (0.13 sec)
MariaDB [vsftpd]> 
MariaDB [vsftpd]> DESC users;            //查看表结构
+----------+------------------+------+-----+---------+----------------+
| Field    | Type             | Null | Key | Default | Extra          |
+----------+------------------+------+-----+---------+----------------+
| id       | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| name     | varchar(50)      | NO   |     | NULL    |                |
| password | char(48)         | NO   |     | NULL    |                |
+----------+------------------+------+-----+---------+----------------+
3 rows in set (0.03 sec)
MariaDB [vsftpd]> 
MariaDB [vsftpd]> INSERT INTO users (name,password) VALUES (‘ifeng‘,password(‘1inux‘)),(‘sina‘,password(‘1inux‘));    //插入数据
Query OK, 2 rows affected (0.03 sec)
Records: 2  Duplicates: 0  Warnings: 0
MariaDB [vsftpd]> select * from users;        //查询
+----+-------+-------------------------------------------+
| id | name  | password                                  |
+----+-------+-------------------------------------------+
|  1 | ifeng | *169BFAD5D66C67244E29295DA36B9B1C89731999 |
|  2 | sina  | *169BFAD5D66C67244E29295DA36B9B1C89731999 |
+----+-------+-------------------------------------------+
2 rows in set (0.00 sec)
MariaDB [vsftpd]>

四、在vsftp服务器上配置pam_mysql

1、建立pam认证所需文件
    # vim /etc/pam.d/vsftpd.mysql
    添加如下两行:

auth required pam_mysql.so user=vsftp passwd=1inux host=172.16.66.81 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required pam_mysql.so user=vsftp passwd=1inux host=172.16.66.81 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
[[email protected] vsftpd]# cat /etc/pam.d/vsftpd.mysql 
auth required pam_mysql.so user=vsftp passwd=1inux host=172.16.66.81 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required pam_mysql.so user=vsftp passwd=1inux host=172.16.66.81 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
[[email protected] vsftpd]#

更多详情:参考 /usr/share/doc/pam_mysql-0.7/README

2、修改vsftpd的配置文件,使其适应mysql认证

建立虚拟用户映射的系统用户及对应的目录

[[email protected] vsftpd]# useradd -s /sbin/nologin -d /var/ftproot vuser
[[email protected] vsftpd]# chmod go+rx /var/ftproot
[[email protected] vsftpd]#

3、请确保/etc/vsftpd.conf中已经启用了以下选项

anonymous_enable=YES        //这一项必须有
local_enable=YES
write_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
chroot_local_user=YES

而后添加以下选项

guest_enable=YES
guest_username=vuser

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

pam_service_name=vsftpd.mysql

4、重启vsftpd服务

[[email protected] vsftpd]# service vsftpd restart
Shutting down vsftpd:                                      [  OK  ]
Starting vsftpd for vsftpd:                                [  OK  ]
[[email protected] vsftpd]# netstat -tnlp | grep :21
tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      107395/vsftpd       
[[email protected] vsftpd]#

5、设置开机启动vsftp

[[email protected] vsftpd]#  chkconfig vsftpd on
[[email protected] vsftpd]#  chkconfig --list vsftpd
vsftpd             0:off    1:off    2:on    3:on    4:on    5:on    6:off
[[email protected] vsftpd]#

至此,基于虚拟用户的vsftp已经搭建完成,可以使用客户端进行测试

[[email protected] ~]# ftp 172.16.66.82
Connected to 172.16.66.82 (172.16.66.82).
220 (vsFTPd 2.2.2)
Name (172.16.66.82:root): ifeng        //虚拟账号
331 Please specify the password.
Password:
230 Login successful.            //成功登陆
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

此时虽然基于虚拟用户的服务器已经搭建完成,但此时所有用户都具有相同的权限,并且,此时的虚拟用户权限很小

五、配置虚拟用户具有不同的访问权限

vsftpd可以在配置文件目录中为每个用户提供单独的配置文件以定义其ftp服务访问权限,每个虚拟用户的配置文件名同虚拟用户的用户名。配置文件目录可以是任意未使用目录,只需要在vsftpd.conf指定其路径及名称即可。

1、配置vsftpd所有虚拟用户的配置文件目录

[[email protected] vsftpd]# vim vsftpd.conf
添加如下选项

user_config_dir=/etc/vsftpd/vusers_config

2、创建所需要目录,并为虚拟用户提供配置文件

[[email protected] vsftpd]# mkdir /etc/vsftpd/vusers_config
[[email protected] vsftpd]# cd /etc/vsftpd/vusers_config
[[email protected] vusers_config]# touch ifeng sina

3、若让每个虚拟用户具有不同的权限,可以修改虚拟用户配置文件目录下对应的以用户名定义的文件,

虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关指令进行的。比如,如果需要让ifeng用户具有上传文件、创建删除目录及文件的权限,可以修改/etc/vsftpd/vusers_config/ifeng文件,在里面添加如下选项即可。

anon_upload_enable={YES|NO}
anon_mkdir_write_enable={YES|NO}
anon_other_write_enable={YES|NO}
eg:
[[email protected] vusers_config]# vim /etc/vsftpd/vusers_config/ifeng
[[email protected] vusers_config]# cat !$
cat /etc/vsftpd/vusers_config/ifeng
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
-----------------------------------------------------
验证:
[[email protected] ~]# ftp 172.16.66.82
Connected to 172.16.66.82 (172.16.66.82).
220 (vsFTPd 2.2.2)
Name (172.16.66.82:root): ifeng
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (172,16,66,82,86,176).
150 Here comes the directory listing.
226 Directory send OK.
ftp> mkdir ifengdir        //创建目录
257 "/ifengdir" created        //显示创建目录成功
ftp> lcd /etc
Local directory now /etc
ftp> put fstab
local: fstab remote: fstab    //上传fstab文件
227 Entering Passive Mode (172,16,66,82,72,107).
150 Ok to send data.
226 Transfer complete.
1127 bytes sent in 9.4e-05 secs (11989.36 Kbytes/sec)
ftp> ls                    //通过ls已经可以看到刚才我们创建的目录及上传的文件都已经存在
227 Entering Passive Mode (172,16,66,82,34,156).
150 Here comes the directory listing.
-rw-------    1 504      504          1127 May 02 02:32 fstab
drwx------    2 504      504          4096 May 02 02:31 ifengdir
226 Directory send OK.
ftp> delete fstab        //删除文件
250 Delete operation successful.
ftp> rmdir ifengdir        //删除目录
250 Remove directory operation successful.
ftp> ls                //OK, 文件及目录已经成功删除
227 Entering Passive Mode (172,16,66,82,116,128).
150 Here comes the directory listing.
226 Directory send OK.
ftp>

注:如在配置过程种出现错误,应多参考日志文件:
[[email protected] vsftpd]# tail /var/log/secure
[[email protected] vsftpd]# tail /var/log/message

补充:
*********************************************************
注:在搭建好数据库后应先在另一台主机上尝试是否能连接成功,以便更快速的搭建
[[email protected] ~]# mysql -uvsftp -h172.16.66.81 -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 5.5.40-MariaDB-log MariaDB Server
Copyright (c) 2000, 2014, Oracle, Monty Program Ab and others.
Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| test               |
| vsftpd             |
+--------------------+
3 rows in set (0.01 sec)
MariaDB [vsftpd]> select (‘abc‘);
+-----+
| abc |
+-----+
| abc |
+-----+
1 row in set (0.00 sec)
MariaDB [vsftpd]> select password(‘abc‘);        //password  加密
+-------------------------------------------+
| password(‘abc‘)                           |
+-------------------------------------------+
| *0D3CED9BEC10A777AEC23CCC353A8C08A633045E |
+-------------------------------------------+
1 row in set (0.00 sec)
MariaDB [vsftpd]> 
*********************************************************

不同虚拟用户,拥有自己独立的虚拟目录  待添加.......

时间: 2024-12-22 08:29:58

VSFTP配置<二> ---虚拟用户的搭建的相关文章

VSFTP+MySQL虚拟用户配置

VSFTP+MySQL虚拟用户配置 1. 安装vsftp软件 下载vsftp(最新版本)软件: wget ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.1.0.tar.gz 如果要开始ssl功能的话,安装vsftp之前要先安装openssl-0.9.8g.tar.gz包 [[email protected] ftp]# tar xzvf openssl-0.9.8g.tar.gz [[email protected] ftp]# cd openssl

Linux下vsftpd安装以及配置FTP虚拟用户实践

首选的FTP服务器搭建方式 安装vsftpd #查看当前系统版本 cat /etc/redhat-release  CentOS release 6.6 (Final)  #查看是否已经安装vsftpd rpm -qa | grep vsftpd #如果没有,就安装,并设置开机启动 yum -y install vsftpd chkconfig vsftpd on 基于虚拟用户的配置 所谓虚拟用户就是没有使用真实的帐户,只是通过映射到真实帐户和设置权限的目的.虚拟用户不能登录CentOS系统.

企业级FTP服务器虚拟用户的搭建 ---RHEL6.x

企业级FTP服务器虚拟用户的搭建 ---RHEL6.x 前言: 所谓温故知新,今天在整理之前的学习笔记的时候,无意间看到了VSFTP虚拟用户的字眼,也可能是由于在平时所用的FTP服务器通常是用setfacl来实现安全共享,忽略了系统用户安全的问题,vsftp虚拟用户的实现方式也变得模糊,今天就一起来回顾一下vsftp虚拟用户的搭建. db4-utils+vsftpd 搭建虚拟用户 : 个人认为虚拟用户对于企业级的VSFTP还是很有必要的,如果有人想要恶意破坏服务器系统的话,对方知道了你的系统用户

VSFTP服务器配置之虚拟用户

关于Vsftp服务就不多说了,我们就直接配置了. 目的: 1.为VSFTP服务器配置虚拟用户,所对应的系统用户为ftpuser. 2.虚拟用户如下: 用户名          密码 zhangsan        zhangpass zhaosi          zhaopass aobama          aopass 3.为安全起见,禁锢用户目录. 第一步:安装 yum install vsftpd 第二步:配置 1.创建系统用户 useradd ftpuser -d /FTP -s 

ahjesus配置vsftpd虚拟用户在Ubuntu

网上搜索了很多资料,过时,不全,货不对版 已下步骤亲测有效,不包含匿名用户登录 1.新建/home/loguser.txt 并填充内容,格式如下 用户名密码用户名密码用户名密码 2.生成db文件用于用户验证 执行db_load -T -t hash -f /home/loguser.txt /etc/vsftpd_login.db 如果没有装db会提示你apt-get install,根据提示的内容输入命令安装后再次执行生成db 3.设置数据库文件的访问权限 chmod 600 /etc/vsf

Centos 7安装配置 vsftp服务 (虚拟用户登录)

一.实验环境操作系统: CentOS 7 二.安装 关闭SELINUX: vim /etc/selinux/config SELINUX=disable 临时关闭: setenforce 0 三.安装vsftpd服务: 1.使用安装yum安装vsftp: yum -y install vsftp 2.备份vsftp主配置文件: cp /etc/vsftpd/vsftpd.conf{,.bak} 四.配置虚拟用户访问vsftp服务: 1.创建虚拟用户密码文件: user1 password1 us

vsftp安装与配置(通过虚拟用户登录)

在网上多方查找,并成功运行,归纳以下文档 操作环境: 虚拟机:virtualbox4.3.14 系统:centos6.4 i386 登录用户:root 创建文件夹 mkdir /data 增加ftp虚拟用户对应的宿主账户 groupadd www useradd -g www -d /data/www -s /sbin/nologin www  #注意:www不需要密码,自作多情的我不小心加了个密码,然后一个下午503.....,你知道的. 安装ftp yum -y install vsftpd

Centos 7安装配置 vsftp服务(虚拟用户登录)

1.vim /etc/selinux/config该配置文件为SELINUX=disable2.关闭防火墙setenforce 03.yum -y install vsftpd4.cp /etc/vsftpd/vsftpd.conf{,.bak}备份vsftpd主配置文件5.vim /etc/vsftpd/vir_user创建虚拟用户如:yuxin43436.生成虚拟用户数据库yum -y install libdb-utilsdb_load -T -t hash -f /etc/vsftpd/

[vsftp服务]——ftp虚拟用户、权限设置等的实验

搭建ftp服务器,满足以下要求: 1.允许匿名用户登录服务器并下载文件,下载速度设置为最高2MB/s 2.不允许本地用户登录ftp服务器 3.在服务器添加虚拟用户vuser01.vuser02.vuser03,密码自己设置.其中: (1)vuser01用户的下载速度最高为3MB/s,vuser02为4MB/s,vuser03为5MB/s: (2)vuser01可以进行文件上传,但不能进行其它操作: (3)vuser02可以上传和创建目录: (4)vuser03可以进行上传.创建文件和删除文件: