什么是FTP
FTP(File Transfer Protocol)是文件传输协议,使用TCP来传输。
基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。
FTP使用中的两个概念:上传和下载。
“下载”文件就是从远程主机拷贝文件至自己的计算机上;”上传”文件就是将文件从自己的计算机中拷贝至远程主机上。简单的来说就是“上传”和“下载”文件。
FTP的运行机制
FTP是一个C/S(Client/Server)架构的网络服务。
FTP的运行顺序:
用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。
用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。
客户机程序代表用户接收到这个文件,将其存放在用户目录中。
FTP会话属于复合TCP连接,主动模式中开放20和21端口。
控制连接: TCP port 21 ,负责发送FTP的命令信息(比如说登陆的指定,用户名和密码等)。
数据连接: TCP port 20 ,负责上传/下载数据。
FTP的连接模式和传输模式
数据的连接模式,分为主动模式和被动模式。
数据的传输模式,分别为ASCII模式(文本序列)和Binary(二进制)模式。
FTP的主动模式和被动模式
主动模式(Standard,PORT):
主动模式的工作顺序:
- Client先和Server通过21端口建立连接;
- Client向Server发送指令,指令中包含了Client要通过 N 号端口来传输什么数据;
- Server打开自己的20端口,去 主动连接 Client的 N 号端口来传输数据。
缺点: - 主动FTP 对FTP服务器的管理有利,但 对客户端的管理不利。
- 因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。
为了解决服务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式。当客户端通知服务器它处于被动模式时才启用。
被动模式(Passive,PASV):
被动模式的工作顺序:
- 建立连接的方式和主动模式相同;
- 建立连接后,与主动方式不同,Client不会提交PORT命令并允许Server来回连它的数据端口,而是提交 PASV命令。
- Server会开启一个任意的非特权端口(P > 1024),并发送PORT P命令给Client。
- Client发起从本地端口到Server的端口 P 的连接用来传送数据。
缺点: - 被动FTP 对FTP服务器的管理不利,但对客户端的管理有利。
- 因为客户端要与服务器端建立两个连接,其中一个连到一个大于1024的随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。
既然我们是做服务的,就要有一种原则,就是麻烦自己,服务客户。
关于如何配置被动模式的防火墙规则,以后关于iptables的文章会提及。(博文更新后,我会来附一条连接)
FTP的用户类型
匿名用户
“ftp”或者“anonymous”。
这类用户是指在FTP服务器中没有指定帐户,但是其仍然可以进行匿名访问某些公开的资源。
为什么要用匿名用户?
- 默认情况下,FTP服务器会把建立的所有帐户都归属为真实用户。
- 但是,这往往不符合企业安全的需要。给其他用户所在的空间带来一定的安全隐患。
值得注意的是,匿名FTP不适用于所有FTP服务器,它只适用于那些提供了这项服务的服务器。
本地(真实)用户
是FTP服务器本机的系统用户账号。
当这类用户登录FTP服务器的时候,其默认的主目录就是其帐号命名的目录。
但是,其还可以变更到其他目录中去。如系统的主目录等等。
当开放本地账户的时候,我们往往会做chroot(禁锢家目录)来保证安全。具体的配置在接下来的文章有讲解。
虚拟用户
账号信息存放在独立的文件或者数据库内。
不是本地账号,不能登陆操作系统,安全性比较高。
虚拟用户的特点: - 只能访问服务器为其提供的FTP服务,而不能访问系统的其它资源。
- 所以,如果想让用户对FTP服务器站内具有写权限(可以上传数据到服务器),但又不允许访问系统其它资源,可以使用虚拟用户来提高系统的安全性。
- 创建虚拟用户需要使用pam,等我的博文更新到pam的时候,会做一个链接。