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端口进行数据传输
被动模式特性为:
1.Client端以一个大于1024的随机端口向FTP服务器的21号端口发出建立连接请求
2.Server端会通过21号端口给Client端发送一个类似(xyz,ab)的数值来告诉Client端打开的随机端口,同时打开xyz*256+ab端口
3.Client端再通过一个随机端口连接Server端的xyz*256+ab端口进行数据传输
而现实环境中无论是Client端还是Server端都是在防火墙后面,在主动模式下VSFTP会链接Client端的随机+1号端口,Client端显然不会将防火墙上所有随机端口开放;而在被动下问题同样的问题仍然会摆在Server端的防火墙面前,这就需要Server端的防火墙开启连接追踪功能,即放行与21号端口有关联的端口访问请求,这也就是为什么大部分情况下VSFTP是以被动模式工作
安装VSFTP
了解了VSFTP的工作原理后,下面就来介绍下VSFTP的搭建,使用命令
yum -y install vsftpd 安装VSFTP服务
使用rpm -qc vsftp 查看VSFTP的配置文件
/etc/logrotate.d/vsftpd 滚动日志配置文件
/etc/pam.d/vsftpd 认证文件,pam全称为Plugable Authentication
Module 插件式认证模块,该文件名必须和/etc/vsftpd/vsftpd.conf中
pam_service_name后的文件名保持一致
/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文件并且禁止该文件中的用户登录
/etc/vsftpd/vsftpd.conf VSFTP主配置文件,所有的配置选项必须顶格写,配置文件中#后带空格的是说明,不带空格的是注释掉的配置选项
VSFTP的登陆类型
VSFTP提供了系统用户、匿名用户、和虚拟用户三种不同的登陆方式。所有的虚拟用户会映射成一个系统用户,访问时的文件目录是为此系统用户的家目录;匿名用户也是虚拟用户,映射的系统用户为ftp,详细信息可以通过man nsftpd.conf查看
匿名用户登陆配置