• 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)
      • 几乎不要给指令
      • 限制文件传输的数量,尽量不给上传数据的权限
      • 限制匿名者同时登录的最大联机数量。
     
  • 相关阅读:
    Hadoop2.x环境搭建
    HDFS序列化
    Hadoop2.x介绍
    eclipse(1)----ubuntu下的安装与配置
    hive与hbase
    mysql----启动报错
    序列化+protobuff+redis
    爬虫学习笔记(2)--创建scrapy项目&&css选择器
    日常随笔
    spark学习(2)--hadoop安装、配置
  • 原文地址:https://www.cnblogs.com/Aiapple/p/5955736.html
Copyright © 2020-2023  润新知