vsftp匿名用户,本地用户,虚拟用户mysql认证详情配置

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

vsftp匿名用户,本地用户,虚拟用户+mysql认证详情配置

一,简介

    vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开发源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征。比如:非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等。注意这个是linux系统上必须掌握的基础服务之一。工作中各种上传下载都要用到它。--松鼠&青蛙



                                      wKiom1ZqP2Cz_tjSAAAtFRP0Vf4912.png

下面数据传输端口计算227*256+73

                            wKiom1ZqP2HwnrbnAAAwKfhqn-I733.png


用户认证分为匿名用户,本地用户,虚拟用户:

nsswitch:network server switch,名称解析框架

配置文件:/etc/nsswitch.conf

模块:/lib64/libnss*,/usr/lib64/libnss*

pam:pluggable authentication module,用户认证框架

模块:/lib64/security

配置文件:/etc/pam.conf,/etc/pam.d/*

  匿名用户:Anonymous

  本地用户:

 虚拟用户:仅用于访问某特定服务中的资源



配置文件

centos 6.5 vsftpd


/etc/logrotate.d/vsftpd   完成日志滚动

/etc/pam.d/vsftpd  用户认证配置文件

/etc/rc.d/init.d/vsftpd 服务脚本

/etc/vsftpd  配置文件

/var/ftp匿名用户共享资源位置 ftp用户家目录就是/var/ftp/  

系统用户通过ftp访问的资源的位置:用户自己的家目录

虚拟用户用过ftp访问的资源的位置:给虚拟用户指定的映射成为的系统用户的家目录


二,匿名用户配置

anonymous_enable=YES   启用匿名用户

anon_upload_enable=YES  匿名用户上传权限

anon_mkdir_write_enable=YES 匿名创建目录权限

anon_other_write_enable=YES 匿名删除文件权限 

    

        

        注意还必须给匿名用户主目录授权

setfacl -m u:ftp:rwx /var/ftp/pub/  给匿名用户目录权限读写权限


三,本地用户配置

local_enable=YES 本地用户上传文件

write_enable=YES

local_umask=022 本地用上传文件默认的文件权限


禁锢所有的ftp本地用户于其家目录中

chroot_local_user=YES


或只锁定指定用户与其家目录中

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list  在此文件中锁定用户



信息验证查看

cat /var/log/secure用户登录验证信息



其他设置

给关键目录添加警告说明提示信息

dirmessage_enable=YES目录消息用户访问目录是反馈的信息

在ftp对应的目录下echo "hello world" > .message


日志:

传输日志put,get的user信息

xferlog_enable=YES

xferlog_file=/var/log/xferlog

xferlog_std_format=YES指定日志格式



用户上传文件属主

chown_uploads=YES 是否改变上传文件的属主

chown_username=whoever  改成哪个系统用户



空闲会话超时时长

idle_session_timeout=600


数据链接超时时长

data_connection_timeout=120



不建议启用:文本格式上传下载;强制如果本来是二进制程序,上传下载会出现问题。

#ascii_upload_enable=YES

#ascii_download_enable=YES




欢迎信息

#ftpd_banner=Welcome to blah FTP service.




黑白名单控制

    vsftpd使用pam完成用户认证,其用到的pam配置文件 /etc/vsftpd/ftpusers黑名单

        

    pam_service_name=vsftpd

    

    [root@localhost pam.d]# cat vsftpd 

    #%PAM-1.0

    会话session    optional     pam_keyinit.so    force revoke

    认证auth       requiredpam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed(终止)黑名单

        auth       requiredpam_shells.so

        auth       includepassword-auth

    账号account    includepassword-auth

        session    required     pam_loginuid.so

        session    includepassword-auth




    vsftpd不使用pam自己控制用户登录的列表文件/etc/vsftpd/user_list

    userlist_enable=YES是否启用这个文件控制用户登录

    userlist_deny=YES|NO   出现在这个文件中的用户就拒绝或允许





速率限制

链接限制:

max_clients:最大并发连接数

max_per_ip:每个ip可同时发起的并发请求数;


传输速率:

anon_max_rate:所有匿名用户的一共最大传输速率,单位是"字节/秒"

local_max_rate:本地用户



四,虚拟用户

所有的虚拟用户会被统一映射为一个指定的系统账号,访问的共享位置即为此系统账号的家目录;各虚拟用户可被赋予不用的访问权限:通过匿名用户的权限控制参数进行指定;


虚拟用户账号的存储方式;

    文件:编辑文件

奇数行为用户

偶数行为密码

此文件需要被编码为hash格式


    关系型数据库中的表中:

计数查询数据库完成用户认证;

mysql库,此时pam要依赖pam_mysql模块

pam_mysql的使用说明



配置文档


一、安装所需要程序


1、安装mysql和pam_mysql


# yum -y install  mysql-server mysql-devel pam_mysql


注意:pam_mysql由epel源提供。


二、创建虚拟用户账号


1.准备数据库及相关表


首先请确保mysql服务已经正常启动。而后,按需要建立存储虚拟用户的数据库即可,这里将其创建为vsftpd数据库。


mysql> create database vsftpd;


mysql> grant select on vsftpd.* to vsftpd@localhost identified by 'www.magedu.com';

mysql> grant select on vsftpd.* to vsftpd@127.0.0.1 identified by 'www.magedu.com';

mysql> flush privileges;


mysql> use vsftpd;

mysql> create table users (

 id int AUTO_INCREMENT NOT NULL,

 name char(20) binary NOT NULL,

password char(48) binary NOT NULL,

 primary key(id)

 );


2、添加测试的虚拟用户


根据需要添加所需要的用户,需要说明的是,这里将其密码为了安全起见应该使用PASSWORD函数加密后存储。


mysql> insert into users(name,password) values('magedu1',password('magedu'));

mysql> insert into users(name,password) values('magedu2',password('magedu'));



三、配置vsftpd


1.建立pam认证所需文件


#vi /etc/pam.d/vsftpd.mysql

添加如下两行

auth required /lib64/security/pam_mysql.so user=vsftpd passwd=www.magedu.com host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

account required /lib64/security/pam_mysql.so user=vsftpd passwd=www.magedu.com host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2



crypt (plain)


    The method to encrypt the user's password:


       0 (or "plain") = No encryption.  Passwords stored in plaintext.

                        HIGHLY DISCOURAGED.  没加密


       1 (or "Y")     = Use crypt(3) function. 加密的


       2 (or "mysql") = Use MySQL PASSWORD() function. It is possible

                        that the encryption function used by PAM-MySQL

                        is different from that of the MySQL server, as

                        PAM-MySQL uses the function defined in MySQL's

                        C-client API instead of using PASSWORD() SQL function

                        in the query.   MySQL PASSWORD()加密的

                        

       3 (or "md5")   = Use plain hex MD5.


       4 (or "sha1")  = Use plain hex SHA



注意:由于mysql的安装方式不同,pam_mysql.so基于unix sock连接mysql服务器时可能会出问题,此时,建议授权一个可远程连接的mysql并访问vsftpd数据库的用户。


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


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

# useradd -s /sbin/nologin -d /var/ftproot vuser     -s为了不让用户登录

# chmod go+rx /var/ftproot   其他用户能读能进入


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

anonymous_enable=NO

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



四、启动vsftpd服务


# service vsftpd start

# chkconfig vsftpd on


查看端口开启情况


# netstat -tnlp |grep :21

tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      23286/vsftpd 


使用虚拟用户登录,验正配置结果,以下为本机的命令方式测试,你也可以在其它Win Box上用IE或者FTP客户端工具登录验正

# ftp localhost




五、配置虚拟用户具有不同的访问权限。本地用户映射到虚拟用户其实是匿名用户权限


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


1、配置vsftpd为虚拟用户使用配置文件目录


# vim vsftpd.conf

添加如下选项

user_config_dir=/etc/vsftpd/vusers_config 


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


# mkdir /etc/vsftpd/vusers_config/

# cd /etc/vsftpd/vusers_config/

# touch tom jerry


3、配置虚拟用户的访问权限


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

anon_upload_enable={YES|NO}

anon_mkdir_write_enable={YES|NO}

anon_other_write_enable={YES|NO}










pam验证

1.生成虚拟用户口令库文件。为了建立此口令库文件,先要生成一个文本文件。该文件的格式如下,单数行为用户名,偶数行为口令:


#vi account.txt

magedu1

magedu

magedu2

magedu



2.生成口令库文件,并修改其权限:


#db_load -T -t hash -f ./account.txt /etc/vsftpd/account.db

#chmod 600 /etc/vsftpd/account.db

 



3.新建一个虚拟用户的PAM文件。加上如下两行内容:


#vi /etc/pam.d/vsftp.pam

auth required /lib/security/pam_userdb.so db=/etc/vsftpd/account

account required /lib/security/pam_userdb.so db=/etc/vsftpd/account


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

# useradd -s /sbin/nologin -d /var/ftproot vuser     -s为了不让用户登录

# chmod go+rx /var/ftproot   其他用户能读能进入



pam_service_name=vsftp.pam





本文转自 吃草的青蛙 51CTO博客,原文链接:http://blog.51cto.com/tlinux/1721981,如需转载请自行联系原作者

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
21天前
|
SQL 关系型数据库 MySQL
mysql主从复制概述和配置
【10月更文挑战第22天】MySQL 主从复制是一种将主服务器的数据复制到一个或多个从服务器的技术,实现读写分离,提高系统性能和可用性。主服务器记录变更日志,从服务器通过 I/O 和 SQL 线程读取并应用这些变更。适用于读写分离、数据备份和恢复、数据分析等场景。配置步骤包括修改配置文件、创建复制用户、配置从服务器连接主服务器并启动复制进程。
|
3月前
|
存储 SQL 关系型数据库
MySQL体系结构与配置
MySQL体系结构与配置
51 0
|
10天前
|
存储 SQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(1)作者——LJS[含MySQL的下载、安装、配置详解步骤及报错对应解决方法]
Mysql And Redis基础与进阶操作系列(1)之[MySQL的下载、安装、配置详解步骤及报错对应解决方法]
|
10天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
49 2
|
17天前
|
存储 关系型数据库 MySQL
基于案例分析 MySQL 权限认证中的具体优先原则
【10月更文挑战第26天】本文通过具体案例分析了MySQL权限认证中的优先原则,包括全局权限、数据库级别权限和表级别权限的设置与优先级。全局权限优先于数据库级别权限,后者又优先于表级别权限。在权限冲突时,更严格的权限将被优先执行,确保数据库的安全性与资源合理分配。
|
15天前
|
SQL 关系型数据库 MySQL
Mysql中搭建主从复制原理和配置
主从复制在数据库管理中广泛应用,主要优点包括提高性能、实现高可用性、数据备份及灾难恢复。通过读写分离、从服务器接管、实时备份和地理分布等机制,有效增强系统的稳定性和数据安全性。主从复制涉及I/O线程和SQL线程,前者负责日志传输,后者负责日志应用,确保数据同步。配置过程中需开启二进制日志、设置唯一服务器ID,并创建复制用户,通过CHANGE MASTER TO命令配置从服务器连接主服务器,实现数据同步。实验部分展示了如何在两台CentOS 7服务器上配置MySQL 5.7主从复制,包括关闭防火墙、配置静态IP、设置域名解析、配置主从服务器、启动复制及验证同步效果。
Mysql中搭建主从复制原理和配置
|
2月前
|
关系型数据库 MySQL 数据安全/隐私保护
docker应用部署---MySQL的部署配置
这篇文章介绍了如何使用Docker部署MySQL数据库,包括搜索和拉取MySQL镜像、创建容器并设置端口映射和目录映射、进入容器操作MySQL,以及如何使用外部机器连接容器中的MySQL。
docker应用部署---MySQL的部署配置
|
26天前
|
关系型数据库 MySQL Java
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
58 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
|
2月前
|
关系型数据库 MySQL Go
go抽取mysql配置到yaml配置文件
go抽取mysql配置到yaml配置文件
|
3月前
|
弹性计算 关系型数据库 MySQL
centos7 mysql安装及配置
本文详细介绍了在阿里云服务器ECS上通过yum源安装MySQL 8.0.12的过程,包括更新yum源、下载并安装MySQL源、解决安装过程中可能遇到的问题等步骤。此外,还介绍了如何启动MySQL服务、设置开机自启、配置登录密码、添加远程登录用户以及处理远程连接异常等问题。适合初学者参考,帮助快速搭建MySQL环境。
384 8
centos7 mysql安装及配置
下一篇
无影云桌面