VSFTPD实现基于虚拟用户的认证

本文旨在复习vsftpd的高级应用配置mysql


实验要求算法


1.FTP的身份认证要实现基于虚拟用户的身份认证,并建立2个虚拟用户lance和rednanjingsql

2.PAM认证模块基于本地的MySQL数据库,即安装Pam_MySQL模块数据库

3.虚拟用户lance能够在目录/test中拥有至高无上的权限,读写删;vim

4.虚拟用户rednanjing在目录/test仅仅能够读,而无其余权限;bash


实验环境、拓扑服务器


  1. 本实验中yum源都是Aliyun Yum源框架

  2. 拓扑以下ide


wKiom1YwexriQ0eVAAJpUOP6D4A450.bmp


部署步骤1.安装MySQL数据库、建立认证表函数


说明:VSFTP认证方式能够分为3种:

    1.基于系统帐户[即宿主机的/etc/passwd文件]; 

    2.基于指定的存放帐号密码的文件[须要建立];

    3.基于虚拟用户的,如和MySQL结合;

不管是哪种认证方式,VSFTPD程序自身是没有认证功能的,是调用了Linux的PAM认证框架完成认证的,任何须要调用PAM认证框架的程序须要在/etc/pam.d建立相关的pam配置文件。这里咱们使用基于MySQL的虚拟用户认证,那么须要作什么呢?

    1.首先要让PAM认证框架可以基于MySQL来认证,即安装好Pam_MySQL模块;

    2.要在/etc/pam.d为vsftpd程序建立好配置文件,同时配置好vsftpd认证方式。


1.1 通用二进制安装Mariadb

以前已经安装过Mariadb,参考《MariaDB二进制安装及基本管理》,此处再也不重复安装。

固然也可以使用yum -y install mysql mysql-server mysql-devel安装也可!

1.2 安装Pam_MySQL模块包[EPEL源]

yum -y install mysql_mysql

1.3 建立虚拟用户认证所须要的MySQL数据库

service mysqld start
mysql  -h  localhost -u root -p

wKiom1Ywf7fQePoPAAT1SDxjB5k293.bmp


#建立存放虚拟用户帐号密码等信息的表,能够参考以下

wKioL1Ywg3CA72akAASJOE_rH0E212.bmp


#表结构以下

wKiom1Ywg0nhszmUAAThSOvEUpo892.bmp


值得说明的是:这里为何定义密码为48位?

为了保护密码不直接明文存储在数据库中,因此这里咱们加密的方式,而即将采用的加密算法生成的长度就是48位,因此你懂的!


1.4 按照要求建立lance和rednanjing用户,填写相关的表字段

#在认证表ftp_auth_user中插入两条用户记录

wKioL1Ywg42gjuwvAAMLJMiCeYU180.bmp


#查询表数据,能够看到password函数对zxczxc密码进行了加密

wKioL1Ywg5zRvzHjAAO1QKLbAd8016.bmp


#建立完成后,可使用mysql -h localhost -u vsftpd -pzxczxc来验证是否配置正确


部署步骤2.建立VSFTPD用到的PAM认证配置文件


2.1 任何程序要想使用PAM认证框架有2个步骤,首先在/etc/pam.d/下建立一个pam配置文件,其次该程序中要指明调用pam认证,并使用刚才建立的pam配置文件。这里咱们来建立一个pam配置文件:

vi /etc/pam.d/vsftp.mysql 这个配置文件是VSFTP调用PAM认证框架的基础

wKiom1Ywg3jRPTyjAAZl5NXvXLM762.bmp


部署步骤3.安装配置VSFTPD,并指明要调用的PAM完成虚拟用户认证


3.1 安装VSFTP服务器端,直接使用yum便可

yum -y install vsftpd

3.2 创建虚拟用户映射的系统用户及其对应目录

useradd -s /sbin/nologin -d /var/virtualftp virtualuser
chmod go+rx /var/virtualftp/

说明:不管是匿名、虚拟用户认证,其实本质都必须映射为Linux系统上的一个用户。这很好理解,由于不管是上传、下载等都是在Linux上的文件系统上操做的,而文件系统不认识MySQL数据库,也不认识匿名用户,它只认识/etc/passwd中的系统用户,因此本质都是映射到一个/etc/passwd的用户!

3.3 编辑VSFTPD主配置文件

useradd -s /sbin/nologin -d /var/virtualftp virtualuser
chmod go+rx /var/virtualftp/
  
anonymous_enable=yes    [必须YES]
chroot_local_user=yes   [建议YES,让用户登陆后的根路径锁定,不越权进入/etc等]
guest_enable=yes        [必须YES]
guest_username=virtualuser    [指为刚才建立的虚拟用户映射的系统用户]
pam_service_name=vsftp.mysql  [指明调用步骤2建立的pam配置文件]


部署步骤4.为不一样虚拟用户配置不一样权限


刚才说了其实全部的虚拟用户经过PAM_MySQL认证后,都被映射为virtualuser这个系统用户,那么全部虚拟用户权限不都同样了吗?其实VSFTPD自有妙计。

4.1 继续编辑VSFTPD配置文件

vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/virtualusers_config 添加该行

wKioL1Ywg8GinAj6AAO4kPrKlz8919.bmp

4.2 为lance用户指派上传、下载、删除权限

vim /etc/vsftpd/virtualusers_config/lance
固然了在这以前请建立好相关目录/etc/vsftpd/virtualusers_config和文件lance、rednanjing,这里我直接演示权限赋予

wKiom1Ywg56hFYFOAALF_GgI914096.bmp

4.3 同理,为rednanjing指派权限

vim /etc/vsftpd/virtualusers_config/rednanjing

wKioL1Ywg-PyZyelAAK6kPH5vxM210.bmp

至此,全部配置已经完成,接下来进行测试吧!


部署步骤5.VSFTP验证虚拟用户认证


5.1 启动vsftpd服务

service vsftpd strat

5.2 客户端链接,以lance身份进行,分别测试上传、删除、建立目录等

ftp 10.134.140.63 输入用户名lance 密码zxczxc

测试上传

wKiom1Ywg9PRFDy5AANhpORhYtQ150.bmp

测试新建目录

wKioL1YwhBbylm49AAR6OJ9EuT0532.bmp

测试删除

wKioL1YwhCDTYcP9AAPwZK7Bqv4527.bmp


5.3 测试rednanjing是否权限被成功禁止呢!

wKiom1Ywg_WxRIkhAAJ4kCTAocg418.bmp

相关文章
相关标签/搜索