首页 > 数据库 >mysql管理多服务器ftp虚拟用户

mysql管理多服务器ftp虚拟用户

时间:2023-06-09 16:02:33浏览次数:48  
标签:ftp 用户 vsftpd 虚拟 mysql 服务器 pam

前言

  • 1.FTP虚拟用户:FTP虚拟用户由ftp服务器提供,依赖于一个服务器本地账号,可以同时设置多个虚拟账号。vsftpd分辨虚拟用户,由可插入认证模块(PAM)认证,该模块的账号信息可用文件或者数据库存储。

FTP虚拟用户是FTP服务器的专有用户,使用虚拟用户账号可以提供集中管理的FTP根目录,方便了管理员的管理,同时将用于FTP登录的用户名、密码与系统用户账号区别开,进一步增强了FTP服务器的安全性。

使用虚拟用户登录FTP服务器,可以避免使用操作系统帐号作为FTP用户带来的一些安全问题,也便于通过数据库或其它程序来进行管理。虚拟用户的特点是只能访问服务器为其提供的FTP服务,而不能访问系统的其它资源。

  • 2.数据库存储:服务器的ftp功能使用vsftpd,配合pam-mysql模块来访问数据库进行虚拟用户认证。其中数据库只负责存储用户信息。
  • 3.基本流程:FTP用户访问->PAM配置文件(由vsftpd.conf中pam_service_name指定)->PAM认证->区别用户读取配置文件(由vsftpd.conf中user_config_dir指定配置文件路径,文件名即用户名)

1、环境

ftp服务器x2:centos7,分ip1、ip2。需要使用pam-mysql模块
数据库服务器x1:mysql
pam-mysql模块:该模块项目较久远,支持centos6和7,不支持centos8,且centos7需要用源码编译安装,最后版本的附件如下:
pam_mysql-0.7RC1.tar.gz
链接:https://pan.baidu.com/s/15l6M36lDJPOTspA6KXHcaw
提取码:njdx

2、配置数据库

1. 建库和表

新建vsftpd库,并创建users表:

// 创建数据库
CREATE DATABASE vsftpd;

// 创建虚拟用户表
CREATE TABLE `users`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户名',
  `password` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '密码,需要password函数加密',
  `service_ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '服务器ip',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

2. 新增虚拟用户信息

// 密码需要使用password函数进行加密
INSERT INTO users(name,password,service_ip) values('test01',password('test'),'服务器ip1');
INSERT INTO users(name,password,service_ip) values('test02',password('test'),'服务器ip2');

3. 授权访问

// 创建数据库用户,并授权该用户可访问。用户名:vsftpd,密码:123456
GRANT SELECT,INSERT,UPDATE ON vsftpd.* TO vsftpd@'%'  IDENTIFIED BY '123456';

// 也可以限制使用的ip网段,例如
GRANT SELECT,INSERT,UPDATE ON vsftpd.* TO vsftpd@'10.0.0.%'  IDENTIFIED BY '123456';

3、安装pam-mysql模块

1.安装对应的依赖

安装对应的依赖:
yum install vsftpd gcc gcc-c++ make mariadb-devel pam-devel -y

2.ftp服务器下载pam-mysql模块

wget http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz

3.解压并进入对应目录

tar xvf pam_mysql-0.7RC1.tar.gz && cd pam_mysql-0.7RC1/

4. 编译

# 设置编译参数
./configure --with-pam-mods-dir=/lib64/security

# 编译
make install

# 查看是否成功生成对应模块
ll /lib64/security/pam_mysql*

## 结果应包含如下文件:
# /lib64/security/pam_mysql.la
#  /lib64/security/pam_mysql.so

5.设置pam_mysql认证配置

新建文件/etc/pam.d/vsftpd.mysql,在其中设置以下内容:

auth required pam_mysql.so user=vsftpd passwd=123456 host=数据库ip db=vsftpd table=users usercolumn=name passwdcolumn=password where=`service_ip`='当前服务器ip' crypt=2
account required pam_mysql.so user=vsftpd passwd=123456 host=数据库ip db=vsftpd table=users usercolumn=name passwdcolumn=password where=`service_ip`='当前服务器ip' crypt=2

4、设置vsftpd的ftp虚拟用户

1. ftp服务器安装vsftpd

yum install vsftpd

2.设置vsftpd支持虚拟用户

  1. 复制一份vsftpd设置文件做备份:/etc/vsftpd/vsftpd.conf
  2. 然后修改以下设置:
# 关闭匿名登录
anonymous_enable=NO

# 锁定本地用户在主目录,不允许切换到上一级目录中
chroot_local_user=YES

# 将pam文件指定为vsftpd.mysql,不启用原设置
pam_service_name=vsftpd.mysql

  1. 然后新增以下设置:
# 允许禁锢的FTP根目录可写
allow_writeable_chroot=YES

# 将虚拟用户映射为本地vuser用户(前提是local_enable=YES)
guest_enable=YES
guest_username=vuser

# 设置虚拟用户使用的配置文件目录
user_config_dir=/etc/vsftpd/vusers.d/

# 这个参数表示虚拟用户和本地用户有相同的权限,可不设置
# virtual_use_local_privs=YES
  1. 重启vsftpd服务service vsftpd restart
  2. 设置每个虚拟用户的权限与目录
    1. 在/etc/vsftpd/vusers.d目录下新建虚拟用户配置文件。例如test01的用户,对应配置文件:/etc/vsftpd/vusers.d/test01
    2. 在test01文件内配置对应权限:
    #设定允许写操作
    // write_enable=YES
    
    #设定权限:可以上传文件
    //anon_upload_enable=YES
    
    #设定权限:不能新建目录
    //anon_mkdir_write_enable=NO
    
    #设定权限:不能删除/重命名文件
    //anon_other_write_enable=NO
    
    #设定权限:可以浏览目录下的文件
    // anon_world_readable_only=NO
    
    #设定上传文件权限掩码,022对应:新建的目录权限是755,文件的权限是 644
    // anon_umask=022
    
    #指定虚拟用户的具体主路径
    // local_root=/var/ftp/virtual/username
    
    #设定空闲连接超时时间
    // idle_session_timeout=600
    
    #设定单次连续传输最大时间
    // data_connection_timeout=120
    
    #设定并发客户端访问个数
    // max_clients=10
    
    #设定单个客户端的最大线程数,这个配置主要来照顾Flashget、迅雷等多线程下载软件
    // max_per_ip=5
    
    #设定该用户的最大传输速率,单位b/s" >> /etc/vsftpd/vconf/vconf.tmp
    // #local_max_rate=50000
    
    
    

5、测试

如果有遇到登录失败的情况,可以看下登录日志文件/var/log/secure

7、步骤脚本包

在自己尝试过程中,将以上步骤整理成脚本和配置文件,内含说明,有需要可取用。建议先自己实践过1-4步骤后,再使用脚本包的文件,便于理解和根据需要调整
百度链接 提取码: 6mai
1.png
2.png

6、参考引用

mysql管理ftp账号设置1:https://blog.51cto.com/johnnyfang/5213966
mysql管理ftp账号设置2:https://www.cnblogs.com/lvzhenjiang/p/14406450.html
ftp账号理解:https://cloud.tencent.com/developer/article/1025979
vsftpd选项设置:https://developer.aliyun.com/article/294506
vsftpd选项设置说明和自动化脚本:https://www.cnblogs.com/UG9527/p/11409703.html
pam-mysql原github:https://github.com/NigelCunningham/pam-MySQL

标签:ftp,用户,vsftpd,虚拟,mysql,服务器,pam
From: https://www.cnblogs.com/inkqx/p/17469428.html

相关文章

  • 提升云服务器安全应该从哪几个方面下手?
    在如今这个互联网时代,云服务器作为现代互联网的产物,给人们带来了极大的便利,使用云设备的人和企业越来越多,云服务安全也逐渐被大众所重视,以下是详细的内容:1、账号和密码保护账号和密码保护可以说是服务器系统的第一道防线,目前网上大部分对服务器系统的攻击都是从截获或......
  • MySql必知必会教程--排序检索数据
    重点关键字:orderby排序单列数据:selectprod_namefromproductsorderbyprod_name;输出结果:+----------------+|prod_name|+----------------+|.5tonanvil||1tonanvil||2tonanvil||Birdseed||Carrots||Detonator......
  • MySQL事务日志
    事务的四种特性:原子性、一致性、隔离性和持久性。事务的隔离性由锁机制实现。事务的原子性、一致性和持久性由事务的redo日志和undo日志来保证。redolog:重做日志,提供再写入操作,恢复提交事务修改过的页操作,用来保证事务的持久性undolog:回滚日志,回滚行记录到某个特定版本,用来......
  • Linux服务器上替换jar包文件内容
    一、替换依赖rocketmq-namesrv-5.1.1.jar包1.查看jar包的目录结构与文件jartfrocketmq-dashboard.jar|greprocketmq-namesrv-4.9.3.jar2.解压jar包jar-xvfrocketmq-dashboard.jar3.替换依赖的jar包下载依赖包:wgethttps://repo1.maven.org/maven2/org/apache/rocketmq/rocket......
  • 利用云服务器实现内网穿透(frp),开启个人电脑(windows)可远程桌面访问
     前言:利用微软自带的远程桌面进行访问,但无奈没有固定的公网地址,使用其他三方软件免费使用会有网络延迟等问题,因此需要一个相对稳妥的方式,那便是配合frp内网穿透实现远程访问个人电脑前提:有一台云服务器(需要公网ip,最好是国内的,延迟会较低) 教程步骤:1.下载frpfrp分为客......
  • hncloud:租用美国服务器如何选择CPU?
    租用美国服务器用于企业服务时,如何选择美国服务器CPU,CPU会影响美国服务器处理性能所以非常关键,过大CPU可能造成资源闲置过小CPU资源会出现负载过高等,选择合适CPU应该从以下几点入手!处理器性能:根据您的需求和预算,选择具有足够处理能力的CPU。主流的服务器CPU品牌包括Intel和AMD,它们......
  • binlog_parse_clickhouse.py(ETL抽数据工具)将MySQL8.0迁移至ClickHouse
    binlog_parse_clickhouse.py(ETL抽数据工具)将MySQL8.0迁移至ClickHouse原理:将解析binlog和执行SQL语句两个过程由两个线程来执行。其中,解析binlog的线程每次解析完一个事件后通过队列将SQL语句传给SQL执行线程,SQL执行线程从队列中取出SQL语句并按顺序依次执行,这样就保......
  • Jtti:香港服务器IP段4c和8c的区别,SEO如何选
    香港服务器的IP段中的4c和8c表示不同的IP地址范围,其中:4c:表示IPv4地址段,范围为以"4c"开头的IPv4地址。例如,4c开头的IP地址可以是如下形式:4c.01.02.03、4c.11.22.33等。8c:表示IPv6地址段,范围为以"8c"开头的IPv6地址。IPv6地址是下一代互联网协议,用于替代IPv4地址空间不足的问题。关于......
  • MySQL中查询第2-5条记录的语句为
    查询第m行到第n行记录,注意表中的记录下标是从0开始的,就像数组一样select*fromstudentlimitm,n;返回m+1到m+n行记录,m代表开始的下标,n代表查找的结果数,将返回n行结果select*fromstudentlimit2,8;返回3到10行记录 ......
  • mysql复合索引、普通索引总结
         去面试被问到了关于“复合索引”的问题,发现自己了解的还不是太全面,特搜索资料,找到下面一篇不错的文章。 对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是keyindex(a,b,c).可以支持a|a,b|a,b,c3种......