FTP(六)实现基于MYSQL验证的FTP虚拟用户
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,实验准备:本实验在两台CentOS主机上实现,一台做为FTP服务 器,一台做数据库服务器一台CentOS-7当MYSQL服务器一台CentOS-6当FTP服务器注意,这里谁当FTP服务器很关键,因为有
千家信息网最后更新 2025年01月20日FTP(六)实现基于MYSQL验证的FTP虚拟用户
实验准备:本实验在两台CentOS主机上实现,一台做为FTP服务 器,一台做数据库服务器
- 一台CentOS-7当MYSQL服务器
- 一台CentOS-6当FTP服务器
注意,这里谁当FTP服务器很关键,因为有一个PAM模块包是CentOS-7上没有的,需要源码编译,pam_mysql,下面我先演示CentOS-6当FTP服务器的例子
CentOS-6当FTP服务器
一,配置数据库服务器
1,在数据库服务器端安装mariadb-server包
yum -y install mariadb-server systemctl start mariadb # 设为开机自动启动 systemctl enable mariadb
2,为了安全起见可以运行一下mariadb安全脚本
"mysql_secure_installation" 第一项问你:输入root密码 回车即可,因为没有 第二项问你:需要设置root密码么,当然要 敲Y 第三项问你:需要删除空账号用户么,当然要 敲Y 第四项问你:禁止root用户远程登入么,根据你们公司的需要 第五项问你:需要删除test测试数据哭么,我不需要 第六项问你:现在重新加载权限表吗 ,当然
3,在mariadb服务器端建立虚拟用户账号
1,创建存储虚拟用户数据库和连接的数据库用户(带有mysql>的就表示需要连接到数据库执行操作) #创建数据库 mysql> CREATE DATABASE vsftpd; #查看数据库是否创建成功 mysql> SHOW DATABASES; 2,创建管理vsftpd数据库的用户。 mysql> GRANT all ON vsftpd.* TO vsftpd@'192.168.136.6' IDENTIFIED BY 'centos'; 命令解析: GRANT: 创建授权用户关键字 all : 表示拥有对vsftpd这个数据库的所有权限 vsftpd.*: 表示指定vsftpd的所有表 vsftpd@'192.168.136.6': @ 前的vsftpd表示用户名,@ 后面的表示该用户只能在192.168.136.6这个主机登入,如果想表示一个网段可以加百分号:192.168.136.% IDENTIFIED BY 'centos': 作用设置密码,centos就是该用户的密码。
准备存放用户的相关表
#切表 mysql> USE vsftpd; #查看表 Mysql> SHOW TABLES; #创建users表 mysql>create table users (id int auto_increment not null primary key,name varchar(30) binary not null, password varchar(50) binary not null); 命令解析: create table users:创建表名为users子句 口号里的就表结构,用逗号分开的表示字段例如:第一个字段为id,第二个字段为name,第三个字段为password 修饰符: int: 表示该字段为数字, auto_increment:表示该字段是整数自动增长 not null: 表示该字段不能为空 primary key: 表示该字段为主键 varchar(30): 表示该字段可以是任意字符长度为30个 binary: 作用是让字段能够用于登入验证
在user表中添加虚拟用户
根据需要添加所需要的用户,为了安全应该使用PASSWORD 函数加密其密码后存储
#查看表结构 mysql>DESC users; #插入内容 mysql> INSERT INTO users(name,password) values('wang',password('wang')); #插入内容 mysql> INSERT INTO users(name,password) values('li',password('li')); #查看表内容 mysql> SELECT * FROM users;
二,配置FTP服务器
1,在FTP服务器上安装vsftpd和pam_mysql包
centos6:pam_mysql由epel6的源中提供 配置epel源: [epel] name=centos-epel baseurl=http://mirrors.aliyun.com/epel/6/x86_64/ gpgcheck=0 enable=1 #安装模块,以及FTP服务器端包 yum install vsftpd pam_mysql
2,创建FTP所需PAM模块认证文件
因为需要连接数据库所以之前的PAM块已经不能用了,需要自己配置
在/etc/pam.d/目录下创建一个名为vsftpd.mysql存放PAM模块的配置文件 cd /etc/pam.d/ touch vsftpd.mysql vim vsftpd.mysql 添加如下几行: auth required pam_mysql.so user=vsftpd passwd=centos host=数据库IP地址 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2 account required pam_mysql.so user=vsftpd passwd=centos host=数据库IP地址 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2 配置字段说明 • auth 表示认证 • account 验证账号密码正常使用 • required 表示认证要通过 • pam_mysql.so模块是默认的相对路径,是相对/lib64/security/路 径而言,也可以写绝对路径;后面为给此模块传递的参数 • user=vsftpd为登录mysql的用户 • passwd=magedu 登录mysql的的密码 • host=mysqlserver mysql服务器的主机名或ip地址 • db=vsftpd 指定连接msyql的数据库名称 • table=users 指定连接数据库中的表名 • usercolumn=name 当做用户名的字段 • passwdcolumn=password 当做用户名字段的密码 • crypt=2 密码的加密方式为mysql password()函数加密 注意 :crypt是加密方式,0表示不加密,1表示crypt(3)加密,2表示 使用mysql password()函数加密,3表示md5加密,4表示sha1 加密
3,建立系统普通用户,用作于虚拟用户映射的用户
一,创建用户,共享目录
#创建虚拟用户映射的系统用户及对应的目录 useradd -s /sbin/nologin -d /var/ftproot vuser #修改对应的目录权限,因为FTP共享根目录不能有写权限 chmod 555 /var/ftproot #创建可以上传下载的共享目录 mkdir /var/ftproot/{upload,pub} #并给vuser用户ACL权限 setfacl -m u:vuser:rwx /var/ftproot/upload
修改主配置文件
确认/etc/vsftpd.conf中是否已经启用了以下选项 #支持匿名用户登入 anonymous_enable=YES #添加下面两项 ,作用是支持虚拟用户映射为某一个系统用户 guest_enable=YES guest_username=vuser #修改下面一项,原系统用户无法登录 pam_service_name=vsftpd.mysql
4,启动FTP服务
#启动服务 service vsftpd start #开机自动启动 chkconfig vsftpd on #查看端口打开情况 ss -ntlp|grep :21
5,SELinux相关配置
1,restorecon -R /lib64/security 2,setsebool -P ftpd_connect_db 1 3,setsebool -P ftp_home_dir 1 4,chcon -R -t public_content_rw_t /var/ftproot/
最后测试
1,li用户登入测试:成功 [root@ansible-7 ~]# ftp 192.168.136.6 Connected to 192.168.136.6 (192.168.136.6). 220 (vsFTPd 2.2.2) Name (192.168.136.6:root): li 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. 2,wang用户登入测试:成功 [root@ansible-7 ~]# ftp 192.168.136.6 Connected to 192.168.136.6 (192.168.136.6). 220 (vsFTPd 2.2.2) Name (192.168.136.6:root): wang 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files.
三,实现每个虚拟用户具有各自不同的权限
1,修改主配置文件
vim /etc/vsftpd/vsftpd.conf 添加如下选项,作用是让虚拟用户支持独立权限配置文件,可以自定义存放目录。 user_config_dir=/etc/vsftpd/vusers_config/
2,在/etc/vsftpd/vusers_config/目录下创建每个虚拟用户的权限配置文件,文件名对应用户名
mkdir /etc/vsftpd/vusers_config/ cd /etc/vsftpd/vusers_config/ touch wang touch li "注意:虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关 指令进行的。 " 下面的权限都可以添加至文件中,需要什么权限添加什么权限 #是否支持上传功能 anon_upload_enable={YES|NO} #是否支持创建文件功能 anon_mkdir_write_enable={YES|NO} #是否支持删除文件功能 anon_other_write_enable={YES|NO} #指定虚拟账户登入的共享目录 local_root=/ftproot 例如:让wang用户支持上传,下载,删除文件的权限那么只需要在wang的权限配置文件中添加如下几行 "注意:需确保对应的映射用户对于文件系统有写权限" vim wang anon_upload_enable=YES anon_other_write_enable=YES anon_mkdir_write_enable=YES
CentOS-7当FTP服务器只有一个地方不同,就是需要编译安装pam_mysql模块,其他概略相同。
步骤:
# 安装开发包组 yum -y groupinstall "Development Tools" # 安装相关依赖包 yum -y install mariadb-devel pam-devel vsftpd # 去官网下载pam_mysql-0.7RC1.tar.gz源码包 https://sourceforge.net/projects/pam-mysql/ # 解压缩包 tar xvf pam_mysql-0.7RC1.tar.gz # 进入pam_mysql-0.7RC1/目录开始编译 cd pam_mysql-0.7RC1/ # 运行configure脚本 ./configure \ --with-mysql=/usr \ --with-pam=/usr \ --with-pam-mods-dir=/lib64/security # 编译开始 make -j 4 # 安装程序 make install
用户
服务
数据
数据库
权限
服务器
字段
文件
配置
密码
目录
加密
模块
支持
系统
作用
用户名
测试
编译
安全
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
简易网络安全画
武汉医院软件开发公司
网络安全人才培养讲解
网络技术结构与体系论文
春雨网络技术有限公司
数据库软件讲座心得体会
网络安全技术防范对策
电脑服务器怎么切断网线
自建服务器免流
广西大学生网络安全专业
浙南科技城互联网服务中心
现代网络技术基础是什么课程
达融网络技术有限公司
万方数据库英文表示画红线
数据库设计文档模板
停车软件开发报告
陆星润网络安全
慕课网数据库技术及应用作业
地方治理与大数据库
紫光股份网络安全市场规模
密码编码学与网络安全求同余
下拉框的值放入数据库
汉中市网络安全图
淮阴工学院网络安全知识竞赛答案
南通数据网络技术哪家好
大庆市网络安全检查
上海志行合力网络技术公司
大学数据库免费app
战地1为什么总是断开服务器连接
小学五年级网络安全作文