设为首页 收藏本站
查看: 998|回复: 0

[经验分享] VSFTPD实现基于虚拟用户的认证

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-10-29 13:47:56 | 显示全部楼层 |阅读模式
本文旨在复习vsftpd的高级应用配置

实验要求

1.FTP的身份认证要实现基于虚拟用户的身份认证,并创建2个虚拟用户lance和rednanjing
2.PAM认证模块基于本地的MySQL数据库,即安装Pam_MySQL模块
3.虚拟用户lance可以在目录/test中拥有至高无上的权限,读写删;
4.虚拟用户rednanjing在目录/test仅仅可以读,而无其他权限;

实验环境、拓扑

  • 本实验中yum源都是Aliyun Yum源
  • 拓扑如下


wKiom1YwexriQ0eVAAJpUOP6D4A450.jpg

部署步骤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源]
1
yum -y install mysql_mysql



1.3 创建虚拟用户认证所需要的MySQL数据库
1
2
service mysqld start
mysql  -h  localhost -u root -p



wKiom1Ywf7fQePoPAAT1SDxjB5k293.jpg

#创建存放虚拟用户账号密码等信息的表,可以参考如下
wKioL1Ywg3CA72akAASJOE_rH0E212.jpg

#表结构如下
wKiom1Ywg0nhszmUAAThSOvEUpo892.jpg


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

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

1.4 按照要求创建lance和rednanjing用户,填写相关的表字段
#在认证表ftp_auth_user中插入两条用户记录
wKioL1Ywg42gjuwvAAMLJMiCeYU180.jpg

#查询表数据,可以看到password函数对zxczxc密码进行了加密
wKioL1Ywg5zRvzHjAAO1QKLbAd8016.jpg

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


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

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



wKiom1Ywg3jRPTyjAAZl5NXvXLM762.jpg

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

3.1 安装VSFTP服务器端,直接使用yum即可
1
yum -y install vsftpd



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

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



说明:无论是匿名、虚拟用户认证,其实本质都必须映射为Linux系统上的一个用户。这很好理解,因为无论是上传、下载等都是在Linux上的文件系统上操作的,而文件系统不认识MySQL数据库,也不认识匿名用户,它只认识/etc/passwd中的系统用户,所以本质都是映射到一个/etc/passwd的用户!
3.3 编辑VSFTPD主配置文件
1
2
3
4
5
6
7
8
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配置文件
1
2
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/virtualusers_config 添加该行



wKioL1Ywg8GinAj6AAO4kPrKlz8919.jpg
4.2 为lance用户指派上传、下载、删除权限
1
2
vim /etc/vsftpd/virtualusers_config/lance
当然了在这之前请创建好相关目录/etc/vsftpd/virtualusers_config和文件lance、rednanjing,这里我直接演示权限赋予



wKiom1Ywg56hFYFOAALF_GgI914096.jpg
4.3 同理,为rednanjing指派权限

1
vim /etc/vsftpd/virtualusers_config/rednanjing



wKioL1Ywg-PyZyelAAK6kPH5vxM210.jpg
至此,所有配置已经完成,接下来进行测试吧!


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

5.1 启动vsftpd服务
1
service vsftpd strat



5.2 客户端连接,以lance身份进行,分别测试上传、删除、创建目录等
1
ftp 10.134.140.63 输入用户名lance 密码zxczxc



测试上传
wKiom1Ywg9PRFDy5AANhpORhYtQ150.jpg
测试新建目录
wKioL1YwhBbylm49AAR6OJ9EuT0532.jpg
测试删除


wKioL1YwhCDTYcP9AAPwZK7Bqv4527.jpg


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

wKiom1Ywg_WxRIkhAAJ4kCTAocg418.jpg



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-132345-1-1.html 上篇帖子: 为vsftp添加用户 下篇帖子: vsftpd本身不支持软连接 认证 用户
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表