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

[经验分享] VSFTP通讯原理与搭建详解

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-10-13 08:39:14 | 显示全部楼层 |阅读模式
VSFTP介绍
ftp是一种古老的明文传输协议,因为其明文传输的特性,也出现过很多重大的危机,进而逐渐演变为支持加密传输的VSFTP(very security FTP),而CentOS默认自带的FTP就为VSFTP。本文主要介绍下VFSTP的传输原理与搭建。为了避免干扰,实验前请关闭Selinux和IPtables。
FTP传输机制
FTP通过21端口与Client端进行指令传输,通过20端口进行数据传输,根据工作模式的不同VSFTP分为主动模式和被动模式2种,大多是情况VSFTP是工作在被动模式下。
主动模特性为:
1.Client端以一个大于1024的随机端口向FTP服务器的21号端口发出建立连接请求
2.Server端收到请求后,会以20端口主动去链接Client端的随机端口+1号端口,如果该端口被占用,则回去找随机端口+2号端口以此类推,直到找Client端空闲的端口
3.Client端与Server端通过20端口进行数据传输
wKiom1f9jA_hlafxAABGllXPYKI043.jpg
被动模式特性为:
1.Client端以一个大于1024的随机端口向FTP服务器的21号端口发出建立连接请求
2.Server端会通过21号端口给Client端发送一个类似(xyz,ab)的数值来告诉Client端打开的随机端口,同时打开xyz*256+ab端口
3.Client端再通过一个随机端口连接Server端的xyz*256+ab端口进行数据传输
wKiom1f9jBCgEWkLAABNgtonmQI876.jpg
而现实环境中无论是Client端还是Server端都是在防火墙后面,在主动模式下VSFTP会链接Client端的随机+1号端口,Client端显然不会将防火墙上所有随机端口开放;而在被动下问题同样的问题仍然会摆在Server端的防火墙面前,这就需要Server端的防火墙开启连接追踪功能,即放行与21号端口有关联的端口访问请求,这也就是为什么大部分情况下VSFTP是以被动模式工作
wKioL1f9jBCBcDX0AABn8tBOEJw973.jpg
安装VSFTP
了解了VSFTP的工作原理后,下面就来介绍下VSFTP的搭建,使用命令
yum -y install vsftpd 安装VSFTP服务
使用rpm -qc vsftp        查看VSFTP的配置文件
wKiom1f9jBDz9MIQAAAdWoHWxi0215.jpg
/etc/logrotate.d/vsftpd                滚动日志配置文件
/etc/pam.d/vsftpd        认证文件,pam全称为Plugable Authentication
Module 插件式认证模块,该文件名必须和/etc/vsftpd/vsftpd.conf中
pam_service_name后的文件名保持一致 wKioL1f9jBHTXbjgAABDYQSl9qg688.jpg
/etc/vsftpd/ftpusers        控制登陆系统用户的机制,出现在该文件中的用户不允许使用ftp服务器,这是在/etc/pam.d/vsftpd中定义的
/etc/vsftpd/user_list        配合/etc/vsftpd/vsftpd.conf中的userlist_enable=YES和userlist_deny=YES|NO实现黑白名单此处需要注意的是:黑白名单的前提是/etc/vsftpd/vsftpd.conf配置文件中userlist_enable=YES,userlist_deny选项默认为YES(黑名单),即该文件中出现的用户不允许登陆VSFTP,就算手动添加userlist_deny=NO(白名单)即只允许该文件中出现的用户允许登陆VSFTP,在VSFTP启动时依然会去检查/etc/vsftpd/ftpusers文件并且禁止该文件中的用户登录
wKioL1f9jBKxdEi9AAA7eaLm2wY863.jpg
/etc/vsftpd/vsftpd.conf                VSFTP主配置文件,所有的配置选项必须顶格写,配置文件中#后带空格的是说明,不带空格的是注释掉的配置选项 wKiom1f9jBKCEAX0AAAv6IaDJIc628.jpg
VSFTP的登陆类型
VSFTP提供了系统用户、匿名用户、和虚拟用户三种不同的登陆方式。所有的虚拟用户会映射成一个系统用户,访问时的文件目录是为此系统用户的家目录;匿名用户也是虚拟用户,映射的系统用户为ftp,详细信息可以通过man nsftpd.conf查看 wKiom1f9jBPDhTQNAAAwhqQCXM0717.jpg wKioL1f9jBTTzbeeAACtrOpPKsA669.jpg
匿名用户登陆配置
在/etc/vsftpd/vsftpd.conf配置文件中设置anonymous_enable=YES,就可以允许虚拟用户登陆,即使系统用户的设置为local_enable=NO也可以登陆,但除了查看和下载到本地外,无任何其他操作权限 wKioL1f9jBfxY8-GAADgKvveYBQ104.jpg

此时还需要在配置文件中设置其他四个选项:
anonymous_enable=YES                启动虚拟用户登录
anon_upload_enable=YES         允许虚拟用户有写权限
anon_other_write_enable=YES         允许虚拟用户有删除权限
anon_mkdir_write_enable=YES         允许虚拟用户创建文件夹权限
添加完后重启VSFTP服务,再次尝试发现结果和上次一样,原因是系统用户ftp对pub目录没有写入权限
wKiom1f9jBfT7zkwAAAnDs3rMfM040.jpg
更改pub目录权限后一切正常,所以最终生效的权限取决于服务权限与系统权限的交集
wKioL1f9jBnxl6fqAACs2H4xN34376.jpg 通过上面知道匿名用户访问的文件目录为/var/ftp/pub,但是匿名用户自己却认为在/目录下,说明默认情况下匿名用户就是被chroot的
wKiom1f9jBmCsdzBAAAQpUk9_TA114.jpg
另外需要注意的一点是:更改系统权限的时候只能针对var/ftp/下的pub目录,如果更改的是/var下的ftp目录权限,此时就算配置文件中允许匿名用户登录,访问时依然会提示你输入用户名和密码
wKiom1f9jBuhEE0qAABmfNdhpEI072.jpg
wKioL1f9jB3QOyOjAADMhtDP9zk878.jpg

系统用户登录配置
系统用户即为存在于/etc/passwd中的用户,在/etc/vsftpd/vsftpd.conf文件中设置项为local_enable=YES,使用系统用户登录后文件夹为该用户的家目录,默认不做其他设置时用户可以从自己的家目录切换到其他任意目录下,会有一定的安全隐患
wKioL1f9jB3Qp9qpAAAd2etLOfM302.jpg
所以在使用系统用户作为VSFTP的登录用户时,推荐执行以下2个步骤:
1.添加用户时使用命令useradd -s /sbin/nologin  userName 禁止该用户登录系统
2.启用chroot_local_user=YES 选项,这样该用户登录FTP后就会禁锢在自己的家目录
wKiom1f9jB6z7hiwAAA4MRA_vto554.jpg
wKioL1f9jB7hSVLLAAAWSB2U2vI053.jpg
需要说明的一点是,我们看到/etc/vsftpd/vsftpd.conf配置文件中chroot_list_enable=YES和chroot_list_file=/etc/vsftpd/chroot_list两项默认也是被注销的,它的功能是指定一个chroot_list文件,只有写在该文件中的用户会被chroot,其他用户不会被chroot,该功能和chroot_local_user选项不能同时存在

wKiom1f9jB-CtUhJAAA1mJCS1vE456.jpg 显然,无论是匿名用户还是系统用户,安全性上都存在一定隐患,所以对于安全性要求较高的场景还可以使用虚拟用户的方式,它是对一个文件中存放的用户及密码进行认证,认证通过后再将其重映射为一个虚拟用户,存放用户及密码的文件可以是hash编码的文件,也可以是关系型数据库
虚拟用户登陆配置
首先在/etc/vsftpd/vsftpd.conf配置文件中添加guest_enable=YES选项,它的作用是将一个非匿名用户重映射为系统用户,默认为ftp,或者可以指定映射的系统用户名,被指定的系统用户必须存在,且在/home/下有和该用户同名的目录
wKioL1f9jCDQUOzIAAAkh3ObYQM629.jpg
wKiom1f9jCDRcEu8AAAmoYfEVOo875.jpg 以vsftp作为重映射的系统用户举例来说:
1.输入useradd -s /sbin/nologin vsftp 创建用户且不允许登录系统
2.mkdir /home/vsftp        创建vsftp用户家目录
3.chown vsftp:vsftp /home/vsftp        修改目录所有权
4.在/etc/vsftpd/vsftp.conf        主配置文件中启用下面两个配置项
wKiom1f9jCGwS8U3AAAZJrHHF20538.jpg
在/home/vsftp目录下创建一个hahaha文件,再使用系统用户登录,会发现已经被重映像到vsftp的用户家目录中
wKioL1f9jCGzIHA4AAAiymez_Rk954.jpg
关于虚拟用户登陆配置需要注意的2点是:
1.虚拟用户默认继承主配置文件中匿名用户的权限,只有在开启匿名用户权限情况下虚拟用户才有修改权限
wKioL1f9jCKyaGuuAABIuUuKrUk612.jpg
2.虚拟用户是映射为一个系统用户,必须设置为 local_enable=YES,否则当anonymous_enable=NO时将无法登陆,这点和当local_enable=NO时匿名用户仍可登录不一样,虽然匿名用户是映射为系统的ftp用户
wKiom1f9jCLzIY1cAAAQjddntd0021.jpg
在生产环境中推荐使用安全性更高的虚拟用户登陆,但有时我们有希望对虚拟用户的权限可以进行划分,允许某些用户有特定权限,这就需要用到user_config_dir配置项了
spacer.jpg wKioL1f9jCOiD6hEAACDEtwQH9c014.jpg
通过该选项说明,可以知道如果需要对虚拟用户进行权限划分的步骤为:
1.关闭主配置文件中匿名用户的更改权限
wKiom1f9jCSh3D_gAABNsRT7xUc444.jpg
2.在主配置文件添加启该选项并指明该选项所在的目录位置
wKioL1f9jCTwyP9RAAAgtUeQJsM078.jpg
3.使用命令 mkdir  /etc/vsftpd/user_conf  创建该目录
4.在/etc/vsftpd/user_conf  中为每个虚拟用户创建一个与用户名相同的配置文件,此处以asd和qwe用户为例
wKiom1f9jCXC6e6-AAAg4W5RiZs418.jpg
验证虚拟用户权限
分别设置每个用户的操作权限,空白表示没有任何权限,此处仅对asd用户添加权限,用户qwe的文件中保持空白
wKioL1f9jCWzGrC3AAAMhITLYeU232.jpg
分别使用asd和qwe虚拟用户登录,可以看到虽然都是被重映射到同一目录内,但是只有asd用户有权限进行修改操作,至此测试完成
wKiom1f9jCbDDWqPAAAqE50xAqU213.jpg
wKiom1f9jCaRS8HHAAArtlSd5W0469.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-285173-1-1.html 上篇帖子: VSFTP搭建与概述 下篇帖子: 简单的vsftpd的配置匿名用户可以上传文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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