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

[经验分享] vsftpd虚拟用户

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-9-22 09:22:08 | 显示全部楼层 |阅读模式
FTP 的数据链路原理
FTP 是相当古老的传输协议之一,他最主要的功能是在服务器与客户端之间进行档案的传输。 FTP 其实是以 TCP 封包的模式进行服务器与客户端计算机之间的联机,当联机建立后,使用者可以在客户端端连上 FTP 服务器来进行档案的下载与上传,此外,也可以直接管理用户在 FTP 服务器上面的档案呢,相当的方便!而这个古老的协议是使用明码传输,且过去有相当多的安全危机历史。为了更安全的使用 FTP 协议,我们主要介绍较为安全但功能较少的 vsftpd 这个软件吶。
FTP 功能简介
FTP 服务器的功能除了单纯的进行档案的传输与管理之外,依据服务器软件的设定架构,他还可以提供几个主要的功能,底下我们约略的来谈一谈:
·        不同等级的用户身份:
FTP 服务器在预设的情况下,依据使用者登入的情况而分为三种不同的身份,分别是 (1)实体账号,realuser;(2)访客, guest;(3)匿名登录者, anonymous 这三种。这三种身份的用户在系统上面的权限差异很大喔!例如实体用户取得系统的权限比较完整,所以可以进行比较多的动作;至于匿名登录者,大概我们就仅提供他下载一下资源而已,并不许匿名者使用太多主机的资源啊!当然,这三种人物能够使用的『在线指令』自然也就不相同啰! ^_^
·        命令记录与登录文件记录:
FTP 可以利用系统的 syslogd 这个daemon 来进行数据的纪录,而记录的数据报括了用户曾经下达过的命令与用户传输数据(传输时间、档案大小等等)的纪录呢!所以你可以很轻松的在/var/log/ 里面找到各项登录信息喔!
·        限制或解除用户家目录所在(change root, 简称 chroot):
为了避免用户在您的 Linux系统当中随意逛大街 (意指离开用户自己的家目录而进入到Linux 系统的其他目录去),所以将使用者的工作范围『局限』在用户的家目录底下,嗯!实在是个不错的好主意!FTP 可以限制用户仅能在自己的家目录当中活动喔!如此一来,由于使用者无法离开自己的家目录,而且登入 FTP 后,显示的『根目录』就是自己家目录的内容,这种环境称之为 change root ,简称chroot ,改变根目录的意思啦!

这有什么好处呢?当一个恶意的使用者以 FTP 登入您的系统当中,如果没有chroot 的环境下,他可以到 /etc, /usr/local, /home 等其他重要目录底下去察看档案数据,尤其是很重要的 /etc/ 底下的配置文件,如/etc/passwd 等等。如果您没有做好一些档案权限的管理与保护,那他就有办法取得系统的某些重要信息,用来『入侵』您的系统呢!所以在 chroot的环境下,当然就比较安全一些咯!
FTP 的运作流程与使用到的端口
FTP 的传输使用的是较为可靠的 TCP 封包协议,在前几章的网络基础当中我们谈过, TCP 这种封包格式在建立联机前会先进行三向交握的。不过 FTP 服务器是比较麻烦一些,因为 FTP 服务器使用了两个联机,分别是命令信道与数据流通道 (ftp-data) 。这两个联机都需要经过三向交握,因为是 TCP 封包嘛!那么这两个联机通道的关系是如何呢?底下我们先以 FTP预设的主动式 (active) 联机来作个简略的说明啰:
wKioL1X_dDzyJLlYAAB97t-NUzQ560.jpg
图一、FTP 服务器的主动式联机示意图

简单的联机就如上图所示,至于联机的步骤是这样的:
1.   建立命令通道的联机
如上图一所示,客户端会随机取一个大于 1024 以上的埠口 (portAA) 来与 FTP 服务器端的 port21 达成联机,这个过程当然需要三向交握了!达成联机后客户端便可以透过这个联机来对 FTP 服务器下达指令,包括查询档名、下载、上传等等指令都是利用这个通道来下达的;

2.   通知 FTP 服务器端使用 active 且告知连接的埠号
FTP 服务器的 21 埠号主要用在命令的下达,但是当牵涉到数据流时,就不是使用这个联机了。客户端在需要数据的情况下,会告知服务器端要用什么方式来联机,如果是主动式 (active) 联机时,客户端会先随机启用一个埠口 (图一当中的 portBB) ,且透过命令通道告知 FTP 服务器这两个信息,并等待 FTP 服务器的联机;

3.   FTP服务器『主动』向客户端联机
FTP 服务器由命令通道了解客户端的需求后,会主动的由 20 这个埠号向客户端的 portBB 联机,这个联机当然也会经过三向交握啦!此时FTP 的客户端与服务器端共会建立两条联机,分别用在命令的下达与数据的传递。而预设 FTP 服务器端使用的主动联机埠号就是 port 20 啰!
如此一来则成功的建立起『命令』与『数据传输』两个信道!不过,要注意的是,『数据传输信道』是在有数据传输的行为时才会建立的通道喔!并不是一开始连接到 FTP 服务器就立刻建立的通道呢!留意一下啰!


以上是vsftpd的功能和原理,下面我给大家做一个小小的实验

实验环境
一:Linux6.4一台(192.168.10.199)
测试二:win7(物理机,IP:192.168.10.113)

环境建设起来了,我们想一想要做什么呢!平时企业中用的最多的就是vsftpd虚拟用户。如果要是用本地用户的话,那管理员的工作量有多大!我们可以想想一下,最好的方法就是用vsftpd的强大功能虚拟用户。
下面我来给大家演示:
Linux一:
wKiom1X_cY7xLZcfAAK0JrDp05Y664.jpg
物理机
wKioL1X_dOGTfO5sAADHW3y5EVw756.jpg
接下来我们在Linux上安装vsftpd

这里我为了加快进程就安装好了
wKiom1X_cqTTWjFQAAA6iwHjWTQ303.jpg
我们查看一下vsftpd产生哪些配置文件
wKiom1X_cqSzx7VzAAB-MiSqAm4449.jpg
第一个是日记文件
第二个是虚拟用户认证配置文件
第三个是限制
第四个是黑白名单
第五个是vsftpd的配置文件(核心)

下面我开始配置虚拟用户,看我操作。
Ⅰ:我在/etc/vsftpd/下创建了一个名字为vuser.txt的文本
wKioL1X_dOLw3ZsEAAA0-arhx9Q677.jpg
里面添加了三个用户(奇数为用户,偶数为密码)
wKioL1X_dOKARPPsAAAkrZbeKGE225.jpg
Ⅱ:建立访问者的口令库文件,然后修改其权限(如果系统提示找不到db_load命令,则需先安装yum –y install db4 (pam*是否需安装没经过测试) wKiom1X_cqWj-TkIAABP5eH59so527.jpg
Ⅲ:进入/etc/pam.d/中创建vsftpd.vuser
在其中添加如下信息:
auth required /lib64/security/pam_userdb.sodb=/etc/vsftpd/vuser (32位系统是/lib/目录)
account required/lib64/security/pam_userdb.so db=/etc/vsftpd/vuser(32位系统是/lib/目录)
Ⅳ:创建虚拟用户映射的系统账号
Useradd –d /home/vsftpd –s /sbin/nologinvuser (创建系统账号,但不能登录系统)
Chmod 700 /home/vsftpdⅤ:修改主配置文件(/etc/vsftpd/vsftpd.conf)
wKioL1X_dOKCBe3BAABYrgX9Fy0222.jpg
在里面添加如下几行信息
Guest_enable=yes  开启虚拟用户
User_config_dir=/etc/vsftpd/vsftpd_vuser_conf  虚拟用户配置文件存放目录
Guest_username=vuser 虚拟用户映射到系统账号
Pam_service_name=vsftpd.vuser   PAM认证文件
wKiom1X_cqWAaZeGAABuFXjIXZ0016.jpg
Ⅵ:进入/etc/vsftpd/vsftpd_vuser_conf目录,创建与虚拟用户名相同名称的文件(虚拟用户名即vuser.txt中的用户名名),比如创建test1。这个目录是手工创建出来的,默认没有的。
wKioL1X_dOPj0KWsAAB5TsXpTsE647.jpg
Ⅶ: 在test1中填写如下信息
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/usr/local/amp/apache/htdocs/test1(此路径根据虚拟用户要访问的目录对应修改)全部
wKiom1X_cqawuLO7AABiy5S91zQ104.jpg
弄好之后不要忘记重新启动服务器


测试:我在物理机上!
先来互拼一下,看看网络到底通不通.(如果不通关闭防火墙iptables -F)
wKioL1X_dOOTIHoxAAFKvTxMiTA573.jpg
此时我们就开始测试了。
wKiom1X_cqbjXhVFAAEJqeaUY9k553.jpg
如果一开始访问不了的话,我们把防火墙和selinux全部关掉在试我们发现此时是可以访问了,但是不要用户和密码,那就说明我们的主配置文件内的匿名用户还开启中。我们去把他关掉在试试看。还有没有同样的错误。看,我们修改了主配置内的匿名,不允许登录了,测试成功了。
wKioL1X_dOTCl_VhAAP9AK8T4B4319.jpg
总结:客户端根据创建的虚拟用户连接服务器,虚拟用户映射到系统账号vuser登录ftp,然后FTP根据配置文件vsftpd.conf的设置(user_config_dir=/etc/vsftpd/vsftpd_vuser_conf)找到虚拟用户配置文件的存放目录,然后根据虚拟用户的配置文件指定的目录路径(local_root=/usr/local/amp/apache/htdocs/demo)访问到指定的目录。(注:虚拟用户访问到的文件根目录属主需要改成vuser)
百度云附件:vsftpd虚拟用户.docx   


运维网声明 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-117048-1-1.html 上篇帖子: 源码编译安装vsftpd3.0.2 下篇帖子: vsftp虚拟不同用户配置不同目录访问实现 用户
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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