FTP服务器原理

21.1 FTP服务器原理



 

使用明码传输方式,且有相当多的安全危机历史。因此一般使用功能较少的vsftpd这个软件。

21.1.1 FTP功能简介

有以下功能

  • 文档传输与管理
  • 不同等级的用户身份:user,guest,anonymous
  • 命令记录与登录文件记录
  • 限制用户活动的目录:(change root,简称 chroot)
  • 即将登录用户的家目录变成根目录

21.1.2 FTP的运作流程与使用用的端口号

FTP的传输使用的是TCP封包协议。

FTP服务器使用了两个联机,分别是:

  • 命令信道
  • 数据流通道(ftp-data)

两个联机通道的关系是怎么样的?以FTP预设的主动式(active)联机来做说明:

主动指的是FTP服务器主动联机客户端,作为数据通道;

  • 建立命令通道的联机

    • 客户端会随机取一个大于 1024 以上的端口 (port AA) 来与 FTP服务器端的 port 21 达成联机, 这个过程当然TCP三次握手了!
    • 达成联机后客户端便可以透过这个联机来对 FTP 服务器下达指令, 包括查询文件名、下载、上传等指令
  • 通知 FTP 服务器端,使用 active 且告知连接的端口号
    • 客户端在需要数据的情况下,会告知服务器端要用什么方式来联机,如果是主动式 (active) 联机时, 客户端会先随机启用一个端口号 (图21.1-1 当中的 port BB) ,且透过命令通道告知 FTP 服务器这两个信息,并等待 FTP 服务器的联机;
  • FTP 服务器『主动』向客户端联机
    • FTP 服务器由命令通道了解客户端的需求后,会主动的由 20 这个端口号向客户端的 port BB 联机, 这个联机当然也会经过TCP三次握手!此时 FTP 的客户端与服务器端共会建立两条联机,分别用在命令的下达与数据的传递。 而预设 FTP服务器端使用的主动联机端口号就是 port 20 !

如此一来则成功的建立起『命令』与『数据传输』两个信道!不过,要注意的是,数据传输信道是在有数据传输的行为时才会建立的通道喔!并不是一开始连接到FTP 服务器就立刻建立的通道

由上可见,主动式联机使用到的端口号:

  • 命令通道的 ftp (默认为 port 21)
  • 数据传输的 ftp-data (默认为 port 20)

在主动联机的 FTP 服务器与客户端之间具有防火墙的联机问题

 

一般来说,很多的局域网络都会使用防火墙(iptables) 的 NAT 功能,那么在 NAT 后端的 FTP 用户如何连接到 FTP 服务器呢?

服务器主动连到 NAT 等待转递至客户端的联机问题:

由于透过 NAT 的转换后, FTP 服务器只能得知 NAT 的 IP 而不是客户端的IP , 因此 FTP 服务器会以 port 20 主动的向 NAT 的 port BB 发送主动联机的要求。 但你的 NAT 并没有启动 port BB 来监听 FTP 服务器的联机啊!

解决办法:

  • 使用iptables所提供的FTP侦测模块

    • ip_conntrack_ftp 及 ip_nat_ftp 等模块主动的分析『目标是 port 21 的联机』信息,得到port BB 的资料,
    • 此时若接受到 FTP 服务器的主动联机,就能够将该封包导向正确的后端主机了。
  • 客户端选择被动式(Passive)联机模式
    • 主动式,是指 服务器主动联机客户端。那被动式,就是客户端联机服务器。这里都是指的数据传输联机。

21.1.3 客户端选择被动式联机模式

  • 用户与服务器建立命令信道
  • 客户端发出 PASV 的联机要求
    • 发出联机要求,病等待服务器的回应
  • FTP 服务器启动数据端口口,并通知客户端联机
    • 这个端口号码不是主动式的port 20 ,而是随机的。
    • 告知客户端这个 port PASV;
  • 客户端随机取用大于 1024 的端口号进行连接

21.1.4 FTP的安全性问题与替代方案

ssh,提供较为安全的sftp-server。在上面传输的数据是经过加密的。

 

21.1.5 开放什么身份的使用者登入

 

  • 开放实体用户的情况 (Real user)

    • 系统默认并没有针对实体用户来进行『限制』的,所以他可以针对整个文件系统进行任何他所具有权限的工作。
    • 限制用户能力: chroot 与 /sbin/nologin 等
  • 访客身份(Guest)
    • 访客身份的限制
    • 上传下载档案数目与磁盘容量限制,联机时间,可用指令。
    • 如chmod等就不要允许使用
  • 匿名登录使用者(anonymous)
    • 几乎不要给指令
    • 限制文件传输的数量,尽量不给上传数据的权限
    • 限制匿名者同时登录的最大联机数量。
时间: 2024-10-24 06:50:23

FTP服务器原理的相关文章

FTP服务器原理(转)

本文转自https://www.cnblogs.com/Aiapple/p/5955736.html 感谢作者 21.1 FTP服务器原理   使用明码传输方式,且有相当多的安全危机历史.因此一般使用功能较少的vsftpd这个软件. 21.1.1 FTP功能简介 有以下功能 文档传输与管理 不同等级的用户身份:user,guest,anonymous 命令记录与登录文件记录 限制用户活动的目录:(change root,简称 chroot) 即将登录用户的家目录变成根目录 21.1.2 FTP的

FTP服务器工作原理的及配置详解

FTP服务器工作原理的及配置详解 FTP工作原理概述 FTP:file transfer protocol 它也是一个C/S架构的服务.server:监听在套接字21/tcp端口.按照套接字监听工作状态可以分为两类: 命令连接:发送文件管理类命令,始终处于连接状态,始终监听在21/tcp端口. 数据连接:主要是实现数据传输,这种连接是按需连接的,而且在传输结束会立刻中断. 对于数据连接还有两种不同的工作模式: 主动工作的模式:服务器根据监听在21端口接收到的命令,使用自己的20号端口,将数据传输

Centos FTP服务器的原理以及虚拟用户的配置

前面笔者写过一篇"FTP本地用户"随笔,那只是一个案例,并没有完整的写出来作用.配置文件解析和原理,今天笔者将发布"FTP服务器的原理以及虚拟用户的配置"随笔 FTP服务的原理 FTP(File Transfer Protocol)是一个非常古老并且应用十分广泛的文件传输协议,FTP协议是现今使用最为广泛的网络文件共享协议之一 现在也一直有在用着FTP协议来进行各种文件的传输,FTP为人们提供了一种可靠的方式在网络上进行文件的共享 FTP是C/S架构的服务,拥有一个

FTP文件传输服务器原理

FTP服务器,全称File Transfer Protocol Server,是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务.FTP,文件传输协议(File Transfer Protocol)是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式.FTP是专门用来传输文件的协议. FTP是一个客户机/服务器系统,用户通过使用一个支持FTP协议的客户端,连接到远程主机上的服务器程序上.用户在客户端发出命令,远程主机服务器接收到命令后执行用户所发出的命令,同时将执行

使用递归方法实现,向FTP服务器上传整个目录结构、从FTP服务器下载整个目录到本地的功能

我最近由于在做一个关于FTP文件上传和下载的功能时候,发现Apache FTP jar包没有提供对整个目录结构的上传和下载功能,只能非目录类型的文件进行上传和下载操作,后来我查阅很多网上的实现方法,再结合自己的理解.以及符合自己的需求,完成了我自己的apache FTP jar包补充类. 上面是背景,基本叙述完毕,下面开始介绍实现方法和代码. 一.环境搭建: 1.使用的FileZilla Server开源免费软件,安装过后建立的本地FTP服务器. 2.使用的apache上下载FTP工具包,引用到

FTP工作原理

FTP两种传输方式:1.ASCII传输2.二进制传输 FTP主被动原理: 主动方式:1.用户与服务器建立控制通道2.客户端发出PORT指令,主动告诉服务器端口号3.服务器主动通过20端口发起连接 被动方式原理:1.用户与服务器建立控制通道2.客户端发出PASV的联机要求3.FTP服务器启动一个大于1024的数据端口并通知客户端联接

4步win7下简单FTP服务器搭建(试验成功)

本文介绍通过win7自带的IIS来搭建一个只能实现基本功能的FTP服务器,第一次装好WIN7后我愣是没整出来,后来查了一下网上资料经过试验后搭建成功,其实原理和步骤与windows前期的版本差不多,主要是对新的操作系统还不是很熟悉.相信用过WIN7一段时间的都能独立解决掉.      主要分为4个步骤     1.安装FTP服务     2.在IIS控制面板里添加FTP站点     3.配置FTP站点 4. 测试站点是否正常工作   ftp://192.168.10.13

FTP服务器架设(1)简介

FTP(File Transfer Protocol,文件传输协议)是用于不同操作系统或不同设备之间传输文件的标准规范,可用于pc .服务器.移动终端.路由器等设备之间的文件传输.FTP协议属于TCP/IP协议模型的应用层. FTP工作原理: 采用客户端/服务器(C/S结构)的工作模式,通过TCP建立两条链路:控制链路和数据链路.控制链路用于传送用户名.密码.设置传输方式等控制信息,数据链路用于传送文件数据.默认情况下,控制链路使用TCP/21端口,服务器通过21端口监听客户端的连接请求,此端口

基于多线程多用户的FTP服务器与客户端功能实现

项目介绍: 用户加密认证 允许同时多用户登录 每个用户有自己的家目录 ,且只能访问自己的家目录 对用户进行磁盘配额,每个用户的可用空间不同 允许用户在ftp server上随意切换目录 允许用户查看当前目录下文件 允许上传和下载文件,保证文件一致性 文件传输过程中显示进度条 实现的原理: 服务器端启用端口监听,并对每一连接启用一个线程,对用户登陆密码采用SHA512进行加密并进行匹配,当用户登陆成功后,实例化FTPS,并引导客户端进入主命令模式, 然后实现FTP的上传功能.下载功能.新建目录.删