本文转自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的传输使用的是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)
    • 几乎不要给指令
    • 限制文件传输的数量,尽量不给上传数据的权限
    • 限制匿名者同时登录的最大联机数量。

FTP服务器原理(转)的更多相关文章

  1. FTP服务器原理

    21.1 FTP服务器原理   使用明码传输方式,且有相当多的安全危机历史.因此一般使用功能较少的vsftpd这个软件.   21.1.1 FTP功能简介   有以下功能 文档传输与管理 不同等级的用 ...

  2. 外网访问内网的FTP服务器-原理解析

    1. 背景简介 最近研究如何在内网搭架FTP服务器,同时要保证外网(公网)能访问的到.终成正果,但走了一些弯路,在此记下,以飨后人. 2. 基础知识 FTP 使用 2 个端口,一个数据端口和一个命令端 ...

  3. FTP服务器原理及配置

    控制连接 21端口  用于发送ftp命令 数据连接 20端口  用于上传下载数据 数据连接的建立类型: 1主动模式: 服务器主动发起的数据连接 首先由客户端的21 端口建立ftp控制连接 当需要传输数 ...

  4. FTP文件传输服务器原理

    FTP服务器,全称File Transfer Protocol Server,是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务.FTP,文件传输协议(File Transfer ...

  5. 文件服务器:FTP服务器详解

    文件服务器:FTP服务器 数据传输原理 功能简介 文件的传输与管理 不同等级的用户身份:user.guest.anonymous 实体用户.权限较完整 匿名用户.下载资源的能力 命令记录与日志文件记录 ...

  6. [转] Linux学习之CentOS(三十六)--FTP服务原理及vsfptd的安装、配置

    本篇随笔将讲解FTP服务的原理以及vsfptd这个最常用的FTP服务程序的安装与配置... 一.FTP服务原理 FTP(File Transfer Protocol)是一个非常古老并且应用十分广泛的文 ...

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

    我最近由于在做一个关于FTP文件上传和下载的功能时候,发现Apache FTP jar包没有提供对整个目录结构的上传和下载功能,只能非目录类型的文件进行上传和下载操作,后来我查阅很多网上的实现方法,再 ...

  8. linux Centos 6.5 FTP服务原理及vsfptd的安装、配置(转)

    本篇随笔将讲解FTP服务的原理以及vsfptd这个最常用的FTP服务程序的安装与配置... 一.FTP服务原理 FTP(File Transfer Protocol)是一个非常古老并且应用十分广泛的文 ...

  9. 解决使用IIS5.0配置的FTP服务器,客户端浏览器访问时无法获取目录列表的问题。

    我在windows xp sp3下利用iis构架了FTP服务器,允许且只允许匿名用户登陆.但刚开始配置好后,不管是使用命令行模式还是使用浏览器都发现无法访问. 于是怀疑防火墙屏蔽端口所致,果不其然,在 ...

随机推荐

  1. mac 安装gevent报错

    运行pip install gevent报错 错误信息如下 xcrun: error: invalid active developer path (/Library/Developer/Comman ...

  2. python基础-pthon

    1)python 由Guido开发 2)编译(compile)型:通过编译器把代码直接生成一个可执行文件. 比如把英语书一次性翻译成中文书.语言有:c,C++等 解释型:边编译边执行.语言如:java ...

  3. c语言字符串函数大全(转)

    函数名: stpcpy 功 能: 拷贝一个字符串到另一个 用 法: char *stpcpy(char *destin, char *source); 程序例: #include <stdio. ...

  4. Struts2与Spring的Maven依赖冲突

    今天在用Maven集成Struts2+Spring+Hibernate时发现只要不在web模块中声明spring-web的依赖,就会报java.lang.NoClassDefFoundError: [ ...

  5. 基于FPGA dspbuilder的DNLMS滤波器实现

          自适应滤波器一直是信号处理领域的研究热点之一,经过多年的发展,已经被广泛应用于数字通信.回声消除.图像处理等领域.自适应滤波算法的研究始于20世纪50年代末,Widrow和Hoff等人最早 ...

  6. 004.KVM日常管理1

    一 常用命令 1.1 查看虚机列表及状态 [root@kvm-host ~]# virsh list --all 1.2 连接虚机 [root@kvm-host ~]# virsh console v ...

  7. Python3 BP神经网络

    转自麦子学院 """ network.py ~~~~~~~~~~ A module to implement the stochastic gradient descen ...

  8. UICollectionView 常用操作

    1 iOS开发 - UICollectionView点击展开收起

  9. BEM

    BEM代表块(Block),元素(Element),修饰符(Modifier).BEM是由Yandex团队提出的一种CSS Class 命名方法,旨在更好的创建CSS/Sass模块.通过增加前缀的办法 ...

  10. 【BZOJ 4569】 4569: [Scoi2016]萌萌哒 (倍增+并查集)

    4569: [Scoi2016]萌萌哒 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 865  Solved: 414 Description 一个长 ...