FTP连接及传输模式

控制连接:TCP 21,用于发送FTP命令信息

数据连接:TCP 20,用于上传、下载数据

 

数据连接的建立类型:

主动模式:服务端从20端口主动向客户端发起连接

被动模式:服务端在指定范围内某个端口被动等待客户端连接

FTP文件服务器_第1张图片

环境准备:(同网段两台虚拟机、一台客户机、一台服务器)

注意:iptables和Selinux对服务的影响:

 

两台虚拟机IP:

FTP文件服务器_第2张图片

FTP文件服务器_第3张图片

服务器搭建:

 

㈠、匿名用户操作:

匿名用户登录实验:(实现匿名用户上传、下载、创建,删除、目录、文件)

 

服务端安装软件(vsftpd)

wKioL1lI3PKgHoRXAAAdeNzUBrk789.png

客户端需要安装FTP软件

wKiom1lI3PLiIBn4AAAm1_hrBuo821.png

服务端修改配置文件(/etc/vsftpd/vsftpd.conf)

FTP文件服务器_第4张图片

客户端登录:

FTP文件服务器_第5张图片

此时客户端登录后上传文件显示的还是失败:

FTP文件服务器_第6张图片

这时,我们先查看一下,FTP服务默认开放目录的权限:

wKioL1lI3PWznzdLAAAwz7M7Zm8287.png

发现,目录并没有权限支持用户上传,这时我们更改目录的权限(更改目录拥有者为FTP)

FTP文件服务器_第7张图片

这时,重启服务后,再登录就可以上传了

上传:

FTP文件服务器_第8张图片

下载:

wKioL1lI3PixjbHzAABv101Kl10338.png

wKiom1lI3Piylah5AAAfiyP72Ok190.png

创建目录:

删除:


㈡、本地用户操作实验:

注意:iptables和Selinux对实验的影响

 

服务器端:

安装软件(vsftpd)

wKioL1lI3Prwlz2fAAA3V3ihJGo665.png

修改配置文件:

FTP文件服务器_第9张图片

创建登录用户:

FTP文件服务器_第10张图片

wKioL1lI3P3QSeTMAAB2rrZQzyk487.png

wKioL1lI3P2CrWI9AAAeprGOpoM672.png

启动服务客户端验证:

 

客户端:

需要安装ftp工具(ftp)

wKiom1lI3P6g-TIOAAAutEjN8k4111.png

FTP文件服务器_第11张图片

测试上传、下载:

FTP文件服务器_第12张图片

由于此时虽然是用户登录,但是用可以任意切换到某个目录下,查看相应文件,这对系统的安全存在很大的隐患,我们需要采取措施来限制用户来禁止离开自己的家目录:

FTP文件服务器_第13张图片

这时我们要引入chroot机制,修改服务器端配置文件:

wKiom1lI3QOT6jEzAABK96-prQU808.png

注意:将配置文件中此三项全部开启之后:效果是:

在/etc/vsftpd/创建chroot_list文件,在此文件中添加的用户将允许离开自己的家目录。

此时我们系统中有三个,测试用户:

wKiom1lI3QPw_2bMAABT_BvUmoE626.png

在chroot_list文件中添加cwy用户,允许cwy用户离开自己的家目录,其他用户则禁止:

wKioL1lI3QTjFP3fAAAfe-8poms899.png

客户端测试:

FTP文件服务器_第14张图片

发现,chroot_list文件中添加的cwy用户可以离开自己的家目录,未被添加进去的用户zhangsan则被禁止离开。

 

此时在服务器端修改第二种情况:

wKioL1lI3Qny3mEMAABGdBHeZ60449.png

wKiom1lI3QnBkFgCAAAcIp4U-9I976.png

开启后面两个,得到的效果是:添加的用户将被禁止离开家目录,未被添加进去的用户,则可以离开

客户端验证:

FTP文件服务器_第15张图片

FTP文件服务器_第16张图片

为了增强ftp服务器的安全性,这里可以禁止特定的恶意用户登陆:

wKioL1lI3TrwSQoLAAAajoeQNA0808.png

这里分为两种情况:userlist_enable=YES&&userlist_deny=YES

                                userlist_enable=YES&&userlist_deny=NO

当userlist_enable=YES&&userlist_deny=YES时:

(/etc/vsftpd/user_list文件中的用户将被禁止登陆)

FTP文件服务器_第17张图片

客户端验证:

FTP文件服务器_第18张图片

当userlist_enable=YES&&userlist_deny=NO时:

(/etc/vsftpd/user_list文件中外的用户将被禁止登陆)

wKioL1lI3T3Sdx6kAAAa0k5yc74151.png

FTP文件服务器_第19张图片

客户端验证:

FTP文件服务器_第20张图片

FTP文件服务器_第21张图片

注意:出现在/etc/vsftpd/ftpusers文件中的用户将被全部禁止登录,不管userlist相关文件做什么设置,ftpusers权限高于其他!


㈢、虚拟用户登录实验:

 

创建用户文件:

在/etc/vsftpd/目录下创建virtual.list

FTP文件服务器_第22张图片

生成用户数据库文件:

FTP文件服务器_第23张图片

FTP文件服务器_第24张图片

进入/etc/pam.d/目录下,创建pam认证模块配置:

wKiom1lI3UOhTPadAABg-ka8eyo192.png

创建虚拟映射用户:

wKioL1lI3UOjoqPPAAA74N0HXVw173.png

修改配置文件,开启虚拟用户模块:

wKiom1lI3UTCSfr_AABaI749is0785.png

创建vsftpd_dir目录,并为不同用户,设置不同权限:

 

u1用户可以上传

u2用户可以创建目录

u3用户可以给文件改名

客户端测试:

FTP文件服务器_第25张图片

FTP文件服务器_第26张图片

注意:为用户所设置的权限,配置文件中必须要添加,与之对应,否则不生效!

Openssl+vsftpd加密验证方式:

由于ftp在传输过程中使用密码明文传输方式,这样用户的密码、账户等信息都暴露在互联网上,极大地增强了服务器的风险:

例如:当用户在登录过程中:

FTP文件服务器_第27张图片

此时密码和账户信息是可以被破解的:

wKiom1lI3UrCrpvKAAAc8ru1ReA497.png

wKioL1lI3UvyqvtsAACVV2jtDro079.png

wKioL1lI3UzSQcbHAACmkg2O7co697.png

这时需要对用户登录过程过程加密:

安装软件

wKiom1lI3UyDyeJNAAAlMyAUJwY894.png

检查vsftpd是否支持ssl

wKioL1lI3U2zyGsuAABSpiW0EcU368.png

生成加密信息:

FTP文件服务器_第28张图片

把证书存放到特定目录:

修改配置文件/etc/vsftpd/vsftpd.conf

客户端验证:

FTP文件服务器_第29张图片