实验——基于文件验证和MYSQL验证的vsftpd虚拟用户
实验一、实现基于文件验证的vsftpd虚拟用户
1、创建用户数据库文件
vim /etc/vsftpd/vusers.txt
wang
wangpass
mage
magepass
cd /etc/vsftpd/
db_load -T -t hash -f vusers.txt vusers.db
chmod 600 vusers.db
·实验操作:
db_load -T -t hash -f vusers.txt vusers.db
可以看到变成数据库之后文件变大了很多
修改权限
2、创建用户和访问FTP目录
useradd -d /var/ftproot -s /sbin/nologin vuser
chmod +rx /var/ftproot/
centos7 还需要执行以下操作:
chmod -w /var/ftproot/
mkdir /var/ftproot/upload
setfacl -m u:vuser:rwx /var/ftproot/upload
·实验操作:
chmod +rx /app/ftpsite/ 给目录添加权限
去掉写权限:
创建一个子目录,并改权限
3、创建pam配置文件
vim /etc/pam.d/vsftpd.db
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers
·实验操作:
我们需要建一个pam配置文件
4、指定pam配置文件
vim /etc/vsftpd/vsftpd.conf
guest_enable=YES
guest_username=vuser
pam_service_name=vsftpd.db
·实验操作:
在ftp配置文件中添加刚才的pam配置文件路径
重启服务
5、SELinux设置:
禁用SELinux 或者 setsebool -P ftpd_full_access 1
6、虚拟用户建立独立的配置文件
mdkir /etc/vsftpd/vusers.d/ 创建配置文件存放的路径
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vusers.d/
cd /etc/vsftpd/vusers.d/ 进入此目录
允许wang用户可读写,其它用户只读
vim wang 创建各用户自已的配置文件
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
vim mage 创建各用户自已的配置文件
local_root=/ftproot 登录目录改变至指定的目录
·实验操作:
我们把这个目录建起来,然后进入目录
针对这三个人,创建三个配置文件:
ftp1可以上传,可以建文件夹
测试ftp1上传成功
ftp2由于没有写配置文件,默认不允许上传:
目前设置的三个用户登陆之后看到的目录都是一样的,我们想设置成每个用户的目录不一样
于是我们先建三个目录,分别放不同的文件
然后去掉写权限
接下来我们建ftp2的配置文件
加上这句就可以让看到的目录变成ftpsite2目录了
同理,ftp3也一样
然后重启服务
我们可以查看一下
设置成功
实验二、实现基于MYSQL验证的vsftpd虚拟用户
说明:本实验在两台CentOS主机上实现,一台做为FTP服务器,一台做数据库服务器。我们本次都用centos7来实验。还有一台centos6来当客户端。
一、安装所需要包和包组:
1、在数据库服务器上安装包:
Centos7:在数据库服务器上安装
yum –y install mariadb-server mariadb
systemctl start mariadb.service
systemctl enable mariadb
Centos6:在数据库服务器上安装
yum –y install mysql-server
2、在FTP服务器上安装vsftpd和pam_mysql包
centos6:pam_mysql由epel6的源中提供
yum install vsftpd pam_mysql
centos7:pam无对应rpm包,需手动编译安装
yum -y groupinstall "Development Tools"
yum -y install mariadb-devel pam-devel vsftpd
下载pam_mysql-0.7RC1.tar.gz
ftp://172.16.0.1/pub/Sources/sources/pam/
tar xvf pam_mysql-0.7RC1.tar.gz
cd pam_mysql-0.7RC1/
./configure --with-mysql=/usr --with-pam=/usr --with-pam-mods-dir=/lib64/security
make
make install
·实验操作:
在FTP服务器端(192.168.37.107)装vsftpd
在数据库服务器端(192.168.37.101)上装mariadb包
启动服务,跑安全脚本
二、在数据库服务器上创建虚拟用户账号
1.建立存储虚拟用户数据库和连接的数据库用户
mysql> CREATE DATABASE vsftpd;
mysql> SHOW DATABASES;
ftp服务和mysql不在同一主机:
mysql> GRANT SELECT ON vsftpd.* TO
vsftpd@'172.16.%.%'IDENTIFIED BY 'magedu';
ftp服务和mysql在同一主机:
mysql> GRANT SELECT ON vsftpd.* TO vsftpd@localhost IDENTIFIED BY 'magedu';
mysql> GRANT SELECT ON vsftpd.* TO vsftpd@'127.0.0.1' IDENTIFIED BY 'magedu';
mysql> FLUSH PRIVILEGES;
2.准备相关表
mysql> USE vsftpd;
Mysql> SHOW TABLES;
mysql> CREATE TABLE users (
id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
name CHAR(50) BINARY NOT NULL,
password CHAR(48) BINARY NOT NULL
);
mysql>DESC users;
测试连接
mysql -uvsftpd -h 172.16.200.200 -pmagedu
mysql> SHOW DATABASES;
3.添加虚拟用户
根据需要添加所需要的用户,为了安全应该使用PASSWORD函数加密其密码后存储
mysql>DESC users;
mysql> INSERT INTO users(name,password)
values('wang',password('magedu'));
mysql> INSERT INTO users(name,password)
values('mage',password('magedu'));
mysql> SELECT * FROM users;
·实验操作:
登录数据库
创建新数据库,并进入使用
创建表用来存放虚拟用户的账号和密码
创建拥有查询此表权限的用户
在表中添加两个虚拟账号(password()函数用来加密密码)
可以看到,已经被加密了
ftp想要连接MySQL,需要一个pam_mysql工具。但是7上没有安装包,需要编译安装。
先去官网找安装包
下载安装包:
将安装包导入linux
解压
可以进去查看一下说明文档
安装相关包组
编译(指定路径)
编译安装
三、在FTP服务器上配置vsftpd服务
1.在FTP服务器上建立pam认证所需文件
vi /etc/pam.d/vsftpd.mysql 添加如下两行
auth required pam_mysql.so user=vsftpd passwd=magedu host=mysqlserver db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required pam_mysql.so user=vsftpd passwd=magedu host=mysqlserver db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
注意:参考README文档,选择正确的加密方式
crypt是加密方式,0表示不加密,1表示crypt(3)加密,2表示使用mysql password()函数加密,3表示md5加密,4表示sha1加密
配置字段说明:
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()函数加密
2.建立相应用户和修改vsftpd配置文件,使其适应mysql认证
建立虚拟用户映射的系统用户及对应的目录
useradd -s /sbin/nologin -d /var/ftproot vuser
chmod 555 /var/ftproot centos7 需除去ftp根目录的写权限
mkdir /var/ftproot/{upload,pub}
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
·实验操作:
新建一个配置文件:
添加两行内容:
创建用户,并去掉写权限(拥有写权限会导致用户登陆的时候失败),改成555:
创建个文件,然后还要建个文件夹,并将文件夹所有者改成tfpuser,客户端那边才能上传:
四、启动vsftpd服务
service vsftpd start;systemctl start vsftpd
chkconfig vsftpd on;systemctl enable vsftpd
五、Selinux相关设置:在FTP服务器上执行
setsebool -P ftpd_connect_db 1
chcon -R -t public_content_rw_t /var/ftproot/
六、测试:利用FTP客户端工具,以虚拟用户登录验证结果
七、在FTP服务器上配置虚拟用户具有不同的访问权限
user_config_dir=/etc/vsftpd/vusers_config
mkdir /etc/vsftpd/vusers_config/
修改/etc/vsftpd/vusers_config/wang文件,在里面添加如下
anon_mkdir_write_enable={YES|NO}
转载于:https://blog.51cto.com/tyendless/1977038
实验——基于文件验证和MYSQL验证的vsftpd虚拟用户相关推荐
- FTP服务学习笔记之基于MySQL+PAM的vsftpd虚拟用户
基于mysql+PAM的vsftpd虚拟用户配置 一.实验说明 操作系统:Redhat5.8_X64bit 实验平台:VMware Workstation 所需要的软件包:pam_mysql-0.7R ...
- FTP服务(3)实现基于文件验证的vsftpd虚拟用户
1.虚拟用户 所有虚拟用户会统一映射为一个指定的系统帐号: 访问共享位置,即为此系统帐号的家目录各虚拟用户可被赋予不同的访问权限,通过匿名用户的权限控制参数进行指定虚拟用户 帐号的存储方式: 文件:编 ...
- Linux之Vsftpd虚拟用户、扩展应用tcp_wrapper实验总结
Linux之Vsftpd虚拟用户实验总结 一.vsftpd简介 vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux, BSD, Solaris, HP-UX ...
- vsftpd虚拟用户使用实验报告
1. 按照拓扑图要求建立虚拟机系统并连接网络 2. Gateway上设置route使得Client可以远程连接到Server 3. 所有配置在基本网络配 ...
- mysql 游戏服务器设计_游戏服务器之基于文件数据库和mysql数据库的db服务器设计...
设计上: (1)文件数据库是用于处理游戏逻辑业务请求. (2)mysql数据库是用于处理运营后台查询请求. (3)备份业务是用于定时备份文件数据库文件. 本文目录: 1.角色数据更新请求 2.mysq ...
- 数字插值滤波与数字正交上变频的仿真与实验----基于高速DAC芯片
基于ADI公司的AD9144高速DAC芯片原理,可以对数字基带信号进行插值滤波然后使用NCO(numberically controlled oscillator)进行正交上变频. 关于ADC的可以参 ...
- FTP(文件传输协议)及实验搭建详解(本地认证,虚拟用户,加密传输,限制登陆)
文章目录 FTP传输协议及实验搭建详解 一.引子 二.FTP的原理和基本概念 三.FTP服务器实验构建(基础测试,本地认证,虚拟用户,加密传输,限制登陆) FTP传输协议及实验搭建详解 一.引子 终于 ...
- vsftp虚拟用户无法上传文件,解决办法
vsftp虚拟用户无法上传文件,解决办法 1.打开/etc/vsftpd 目录中的vsftpd.conf文件,查找:guest_username=xxx,这里指的是vsftpd虚拟用户对应的实 际系统 ...
- 基于文件操作的学生信息管理系统(含登录验证)
本人C++大一小白,最近有闲着的时间,就写了个学生信息管理系统,全文件操作,有些地方复杂度太大,还有很大的修改空间. 功能结构图 后期关于成绩修改和信息修改实现没写,思想跟已经实现的修改密码一样,你若 ...
- glassfish hk2_使用GlassFish 3.1.2.2和Primefaces 3.4的JDBC领域和基于表单的身份验证
glassfish hk2 我的博客上最受欢迎的帖子之一是有关JDBC安全领域和带有Primefaces的GlassFish上基于表单的身份验证的简短教程. 在收到有关它不再适用于最新的GlassFi ...
最新文章
- ICML 2021杰出论文奖“临时更换”,上海交大校友田渊栋陆昱成等获提名
- 关于JDBC的一些笔记
- LocalBroadcastManager 的使用
- oracle varchar2转date_5分钟学会精算师常用Oracle语句
- 2020年10月份Github上热门的开源项目
- 【转】vb获得网络时间的函数
- 什么叫侧面指纹识别_屏幕指纹技术最强的3款全面屏手机,指纹识别技术手机你喜欢吗?...
- zookeeper资料
- 群晖nas存储系统原理_群晖NAS 创建存储池和存储空间图文教程
- android--手机桌面添加网址链接图标(解决方式)
- 线性代数 第四章 线性方程组 知识点总结(Jeff自我感悟)
- 图片片转换成位深度为1的单色bmp照片
- 如何卸载ultraedit_卸载不掉的软件怎么办(彻底卸载软件方法介绍)
- Stemming and lemmatization
- 找工作笔试面试那些事儿(14)---轻松一下,谈谈面试注意的点
- u盘/U盘启动盘插入电脑后,不显示文件,但有保留占用内存
- 职场暗访:女大学生应聘遭遇性测试
- STM32(八)W25Q(16/32/64/128)芯片学习总结
- SQL SERVER2000 如何打开.MDF、.LDF文件
- (转载)虚幻引擎3--【UnrealScript教程】章节一:11.Struct结构体