FTP服务器的配置和使用

  • 第一部分 原理
    • FTP协议
    • FTP的两种模式
      • FTP控制连接
      • FTP数据连接(PORT模式)
      • FTP数据连接(PASV模式)
    • 匿名FTP
    • NAT
      • NAT简介
      • NAT的功能
      • NAT的实现方式
    • 外网映射软件的原理
  • FTP服务器的搭建与配置
    • FileZilla Server的下载与安装
    • FileZilla Server的配置
    • 配置用户
  • 内网访问FTP服务器
    • 通过cmd访问FTP服务器
    • 通过浏览器和资源管理器登录FTP服务器
    • 抓包结果分析
  • 外网登录FTP服务器
    • Sakura Frp的安装
    • 创建隧道并映射服务器
    • 外网映射之后的一些额外设置
    • 外网通过cmd访问FTP
  • 被动模式浏览器和资源管理器外网访问FTP服务器
    • 访问结果
    • 抓包结果分析
  • 主动模式下资源管理器和浏览器外网访问FTP服务器
    • 资源管理器在主动模式下访问FTP服务器结果
    • 浏览器主动模式下访问FTP服务器结果
    • 主动模式报文分析
  • 通过配套客户端登录服务器
    • 客户端的设置与使用
    • 报文分析
  • 使用不同的权限用户登录FTP服务器
    • 使用匿名账户登录服务器
    • 匿名用户抓包分析
    • 使用权限不全用户登录FTP服务器
    • 权限不全用户访问FTP服务器抓包结果
  • 额外的抓包结果
  • 出现的问题以及合理推测

这是个人的课程设计课程的研究成果,虽然还有很多问题,但是希望能帮助到看到这篇文章的各位
看这篇文章之前,希望大家能有一些FTP的基础,不至于基础的内容都看不懂
FTP基础内容
windows 10系统
使用软件:FileZilla Server(FTP服务器)、Sakura frp(外网映射软件)、FileZilla Client(FTP客户端)、wireshark(抓包软件)

第一部分 原理

FTP协议

FTP(文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。

默认情况下FTP协议使用TCP端口中的 20和21这两个端口,其中20用于传输数据,21用于传输控制信息。但是,是否使用20作为传输数据的端口与FTP使用的传输模式有关,如果采用主动模式,那么数据传输端口就是20;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定。

FTP的两种模式

FTP控制连接

传输FTP命令(包括:发送用户名、口令、查询目录命令、传输文件命令等)

FTP数据连接(PORT模式)

FTP服务器从控制连接上收到一个传输文件命令后,使用20端口与FTP客户建立一个数据连接

PORT命令:由FTP客户发送,把用于数据连接的临时端口号告诉服务器

FTP数据连接(PASV模式)

FTP服务器从控制连接上收到一个传输文件命令后,使用临时端口与FTP客户建立一个数据连接

PASV命令:由FTP客户发送,要求FTP服务器返回一个端口号

PASV响应:由FTP服务器发送,把用于数据连接的临时端口号告诉客户

匿名FTP

默认状态下,FTP 站点允许匿名访问,FTP 服务器接受对该资源的所有请求,并且不提示用户输入用户名或密码。如果站点中存储有重要的或敏感的信息,只允许授权用户访问,应禁止匿名访问。 使用FTP时必须首先登录,在远程主机上获得相应的权限以后,方可下载或上传文件。也就是说,要想同哪一台计算机传送文件,就必须具有哪一台计算机的适当授权。换言之,除非有用户ID和口令,否则便无法传送文件。这种情况违背了Internet的开放性,Internet上的FTP主机何止千万,不可能要求每个用户在每一台主机上都拥有帐号。匿名FTP就是为解决这个问题而产生的。

匿名FTP是这样一种机制,用户可通过它连接到远程主机上,并从其下载文件,而无需成为其注册用户。系统管理员建立了一个特殊的用户ID,名为anonymous, Internet上的任何人在任何地方都可使用该用户ID。通过FTP程序连接匿名FTP主机的方式同连接普通FTP主机的方式差不多,只是在要求提供用户标识ID时必须输入anonymous,该用户ID的口令可以是任意的字符串。习惯上,用自己的E-mail地址作为口令,使系统维护程序能够记录下来谁在存取这些文件。值得注意的是,匿名FTP不适用于所有Internet主机,它只适用于那些提供了这项服务的主机。

当远程主机提供匿名FTP服务时,会指定某些目录向公众开放,允许匿名存取。系统中的其余目录则处于隐匿状态。作为一种安全措施,大多数匿名FTP主机都允许用户从其下载文件,而不允许用户向其上传文件,也就是说,用户可将匿名FTP主机上的所有文件全部拷贝到自己的机器上,但不能将自己机器上的任何一个文件拷贝至匿名FTP主机上。即使有些匿名FTP主机确实允许用户上传文件,用户也只能将文件上传至某一指定上传目录中。随后,系统管理员会去检查这些文件,他会将这些文件移至另一个公共下载目录中,供其他用户下载,利用这种方式,远程主机的用户得到了保护,避免了有人上传有问题的文件,如带病毒的文件。

NAT

NAT简介

NAT(Network Address Translation,网络地址转换)是1994年提出的。当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和因特网上的主机通信(并不需要加密)时,可使用NAT方法。

这种方法需要在专用网(私网IP)连接到因特网(公网IP)的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址(公网IP地址)。这样,所有使用本地地址(私网IP地址)的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和因特网连接。

另外,这种通过使用少量的全球IP地址(公网IP地址)代表较多的私有IP地址的方式,将有助于减缓可用的IP地址空间的枯竭。在RFC 2663中有对NAT的说明。

NAT的功能

NAT不仅能解决IP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。

  1. 宽带分享:这是 NAT 主机的最大功能。
  2. 安全防护:NAT 之内的 PC 联机到 Internet 上面时,他所显示的 IP 是 NAT 主机的公共 IP,所以 Client 端的 PC 当然就具有一定程度的安全了,外界在进行 portscan(端口扫描) 的时候,就侦测不到源Client 端的 PC 。

NAT的实现方式

NAT的实现方式有三种,即静态转换Static Nat、动态转换Dynamic Nat和端口多路复用OverLoad。

静态转换是指将内部网络的私有IP地址转换为公有IP地址,IP地址对是一对一的,是一成不变的,某个私有IP地址只转换为某个公有IP地址。借助于静态转换,可以实现外部网络对内部网络中某些特定设备(如服务器)的访问。

动态转换是指将内部网络的私有IP地址转换为公用IP地址时,IP地址是不确定的,是随机的,所有被授权访问上Internet的私有IP地址可随机转换为任何指定的合法IP地址。也就是说,只要指定哪些内部地址可以进行转换,以及用哪些合法地址作为外部地址时,就可以进行动态转换。动态转换可以使用多个合法外部地址集。当ISP提供的合法IP地址略少于网络内部的计算机数量时。可以采用动态转换的方式。

端口多路复用(Port address Translation,PAT)是指改变外出数据包的源端口并进行端口转换,即端口地址转换(PAT,Port Address Translation).采用端口多路复用方式。内部网络的所有主机均可共享一个合法外部IP地址实现对Internet的访问,从而可以最大限度地节约IP地址资源。同时,又可隐藏网络内部的所有主机,有效避免来自internet的攻击。因此,目前网络中应用最多的就是端口多路复用方式。

ALG(Application Level Gateway),即应用程序级网关技术:传统的NAT技术只对IP层和传输层头部进行转换处理,但是一些应用层协议,在协议数据报文中包含了地址信息。为了使得这些应用也能透明地完成NAT转换,NAT使用一种称作ALG的技术,它能对这些应用程序在通信时所包含的地址信息也进行相应的NAT转换。例如:对于FTP协议的PORT/PASV命令、DNS协议的 “A” 和 “PTR” queries命令和部分ICMP消息类型等都需要相应的ALG来支持。

外网映射软件的原理

FRP DDNS是将用户的动态IP 地址映射到一个固定的域名上,用户每次连接网络的时候客户端程序就会通过信息传递把该主机的动态IP 地址传送给位于服务商主机上的服务器程序,服务项目器程序负责提供 DNS 服务并实现动态域名解析。DDNS 的主要作用就是捕获用户每次变化的 IP 地址,然后将其与域名相对应,这样其他上网用户就可以通过域名来与用户交流了。

DSL每次拨号上网所获得的IP地址每次都是不同的,这样就需要我们每次访问服务器都输入新的ip地址,而映射软件起到的作用就是方便用户访问我们的服务器(只需要输入域名便可),而不用每次都输入IP地址那么麻烦。也就是说,具体的服务器,是要我们自己去设置完成的。而不同的上网方式,建立服务器的方式是不同的.还可以通过DSL直接拨号上网(不经过路由器等路由设备)和通过路由器共享上网(也就是处于局域网内部)。

FTP服务器的搭建与配置

我们采用的FTP服务器软件是FileZilla

FileZilla Server的下载与安装



FileZilla Server的配置


在你关闭FileZilla后,再次启动,可能会碰到一直报错连接不上服务器的情况,这可能是因为电脑中对FileZilla的服务是手动状态,可是他并没有请求你是否打开,于是我们需要在服务中将该服务改成自动

在设置中,将服务器设置使用被动模式,且使用的端口范围必须是连续的端口,这里将访问端口设置为两个连续的端口17855~17856,。同时这个界面可以设置访问IP,如果不设置则默认使用127.0.0.1

需要在安全设置中完全禁用IP限制,因为FileZilla服务器会限制数据端口的连接,这里需要配置这个安全策略来确保客户端可以正常传输数据

配置用户

在电脑中先选好用户要访问的路径,这里我专门创建了两个文件夹供不同用户访问

添加新的用户,并设置用户的名称与密码

设定用户能访问的文件夹范围和权限

不同的用户可以使用不同的路径,拥有不同的权限

内网访问FTP服务器

通过cmd访问FTP服务器

访问结果

这时服务器后台的响应数据

通过浏览器和资源管理器登录FTP服务器

资源管理器登录FTP服务器

浏览器登录

通过资源管理器和浏览器登录时,不询问账号,会直接进入匿名账号的权限地址,如果没有设置匿名账号会报错

抓包结果分析

内网的访问抓包,尤其是服务器端我根本抓不到,无论是本电脑和本电脑通信,还是两台电脑通信,服务器端都抓不到包,不知道是为什么

外网登录FTP服务器

我们使用的内网穿透软件是Sakura Frp,平常玩Minecraft的时候用的也是这个,有时间的话也考虑出一期MC联机的教程

Sakura Frp的安装

登录官网

注册账号

登录账号

通过签到获得流量

下载系统相应版本的软件,并解压安装

在用户信息界面获取访问密钥,登录自己的账号后输入访问密钥,即可成功登录

创建隧道并映射服务器

监听隧道的创建,本地端口为21,分配的端口随机

数据隧道的创建,数据隧道的映射端口必须和映射前的端口一模一样才能成功映射

开启端口

通过后台给出的IP来连接服务器

外网映射之后的一些额外设置

在防火墙—高级安全设置—入站规则—添加规则—将21号端口,映射端口,以及数据连接的端口添加到其中,这里的设置是为了后面客户端的成功通信

在防火墙—允许的应用中添加Filezilla server 和FileZilla Server Interface,将通信权限给服务器

外网通过cmd访问FTP

cmd访问结果

因为cmd访问FTP服务器,只会访问默认的21号端口,经过映射之后,监听端口已经不是21了,所以无法访问

被动模式浏览器和资源管理器外网访问FTP服务器

访问结果

资源管理器访问结果

浏览器访问结果

抓包结果分析

这是客户端浏览器连接时的抓包,其他抓包结果类似或与其有对应

Tcp建立连接三握手

欢迎信息

登录账户,为匿名账户

询问密码

发送密码

登录成功

定位到根目录

定位到根目录成功

文件传输模式设置为ASCII码

设置成功

被动模式

被动模式回报端口与IP

结束连接

主动模式下资源管理器和浏览器外网访问FTP服务器

资源管理器和浏览器想要调整为主动模式,需要打开旧版IE浏览器,将Internet选项中的使用被动FTP选项取消打钩

资源管理器在主动模式下访问FTP服务器结果

这时因为是主动登录,所以会询问用户名和密码

这时资源管理器登录成功,并开始加载,进度条加载缓慢,且加载完报错超时,通过FileZilla后台可以看到是无法获取目录,这步无法解决

浏览器主动模式下访问FTP服务器结果

这里并没有响应

主动模式报文分析

这里的依然是采用客户端浏览器的抓包,但是浏览器只会登录匿名账户,所以如果采用资源管理器的话,抓包中登录用户和密码那几块会变成相应的内容

三握手建立连接

欢迎信息

输入用户名

请求密码

输入密码

登录成功

定位到根目录

定位成功

文件传输形式设置为ASCII码

设置成功

开启主动端口

开启成功

请求目录

请求目录失败,请求超时

结束连接

通过配套客户端登录服务器

客户端的设置与使用

打开客户端

新建站点

将站点设置为被动模式(虽然我在测试中主动模式也能登录上服务器)

登录站点

登录成功

此时可以在客户端上,利用用户的相应权限来对目标地址做出相应指令,如:新建文件夹

报文分析

这里采用的是服务器端的抓包

在这个流的开头出现了一种奇怪的协议,这种协议即没见过,也没法百度到

用户登录

请求密码

给出密码

登录成功

请求服务器的操作系统

回答

请求服务器的特征

回答

请求根目录

请求成功

文件传输类型设置为二进制传输

设置成功

被动模式连接

进入被动模式,打开端口

请求文件目录,这里用的是MLSD命令

新的服务器提供的MLSD命令通过FTP客户端发送MLSD命令,服务器收集文件信息,如文件创建时间,修改时间,文件大小及文件所有用,向用户返回一个标准,详细且可读格式的目录列表。由于MLSD目录列表包含UTC格式的文件修改时间,因此这对于FTP客户端非常有用,当需要同步目录时,它可转换远程文件的时间戳到你的本地时间。同时,MLST命令也被用于获得单个远程文件的时间戳。

打开数据通道获取目录

获取目录成功

新建一个目录,目录名称ykw

新建成功

使用不同的权限用户登录FTP服务器

使用匿名账户登录服务器

访问结果,我们使用该用户登录后,断开,再次连接,并下载了匿名用户权限路径下的文件

匿名用户抓包分析

这里采用的是服务器端的抓包分析

欢迎信息

询问是否打开TLS

并未打开

询问是否打开SSL

并未打开

匿名账户

请求密码

输入密码

登录成功

询问服务器的操作系统

回答

询问服务器的特征

回答

设置为二进制传输

设置成功

用PWD命令请求根目录

请求成功

被动模式

开启被动模式和端口

请求目录

开始建立数据连接传输目录

传输成功

这时断开连接后,重新连接服务器,产生了不一样的变化
前面的连接都一样,直到登录成功后
使用CWD命令请求了一次根目录

又使用PWD命令请求了一次根目录

两次请求都成功,以下是两个命令的区别

打印工作目录(PWD)
在响应是返回当前工作目录。

改变工作目录(CWD)
此命令使用户可以在不同的目录或数据集下工作而不用改变它的登录或帐户信息。传输参数也不变。参数一般是目录名或与系统相关的文件集合。

且这时设置文件传输类型为ASCII码模式

下载文件what.txt

打开数据通道传输该文件

成功传输

使用权限不全用户登录FTP服务器

我们分配给该用户的权限为只读,权限地址和我们之前的普通用户一样

访问结果:我们使用该用户做了一些超出该用户权限的事,并得到了想要的答案

权限不全用户访问FTP服务器抓包结果

我采用的是服务器端的抓包结果,前面的抓包与正常用户抓包没什么区别
也都有访问是否为TSL,SSL,启动的文件传输类型也为ASCII码,也收到了PWD和CWD两个命令

请求下载233.txt

打开数据通道开始传输文件

文件传输成功

请求创建文件夹cgf

没有权限,创建失败

删除文件233.txt

没有权限,删除失败

额外的抓包结果

这是个没见过的协议

内网穿透软件还会发送一些报文用来保活



在每一个内容报文之前,会有一个定长的空白报文

出现的问题以及合理推测

:出现了一个从未见过的协议Gryphon,且只出现在服务器端与映射服务器的交互上
推测:协议Gryphon应该是一种类似TCP的、来自内网映射软件的协议,可能含有保持连接等的功能,在一条连接中,他只会出现在未成功建立连接时的服务器端抓包中

:每个有信息的报文前都会出现个空白报文
推测:空白报文定长66字节,其中客户端不会发给服务器但会收到,服务器即会发送也会收到该报文,可能是内网映射软件在其服务器上为了保持两端连接做的设定

:服务器端固定以7000端口与映射服务器交互,客户端以映射出来的19741端口与其交互
推测:7000端口应该是内网映射软件使用的端口,所以无论映射的是服务器端的什么端口,应该在映射时都通过7000来与内网映射服务器交互

:在广域网使用资源管理器和浏览器登录服务器,使用不同模式登录报错不一致,报文也不一致
推测:被动模式下如同cmd,在21号端口被映射的情况下,无法访问服务器。主动模式下,请求服务器的监听端口建立连接,但是无法建立数据连接,猜测被加密

:为什么有时候采用命令PWD,有时候采用CWD

:为什么有时候采用ASCII码模式传输,有时候使用二进制码传输

:为什么在局域网服务器端抓不到包

超详细教程FTP服务器的配置和使用 使用FileZilla和Sakura frp 个人计算机网络协议分析课程设计成品相关推荐

  1. post修改服务器数据源,postgresql安装及配置超详细教程

    1. 安装 根据业务需求选择版本,官网下载 初始化数据库 执行完初始化任务之后,postgresql 会自动创建和生成两个用户和一个数据库: linux 系统用户 postgres:管理数据库的系统用 ...

  2. 使用anaconda配置python3.6环境安装pyltp超详细教程,使用pycharm调用

    使用anaconda配置python3.6环境安装pyltp超详细教程,使用pycharm调用 看了一堆网上的安装教程,有的写得太简单,有的太复杂,本菜鸡根本看不懂在说什么,看了好几篇才整明白是怎么回 ...

  3. [安卓开发笔记一]Android开发配置opencv环境超详细教程

    [安卓开发笔记一]Android开发配置opencv环境超详细教程 [更新于 2022年4月] 再次提醒,建议现在看到这篇文章的,仅仅把此文做一个流程参考,4年前android studio就使用cm ...

  4. mMySQL中触发器和游标的介绍与使用L8.0.23免安装版配置详细教程 msi安装超详细教程

    文章来源: 学习通http://www.bdgxy.com/ 普学网http://www.boxinghulanban.cn/ 智学网http://www.jaxp.net/ 一.下载MySql,安装 ...

  5. 微软免费服务器申请教程,2019年8月13日最新免费申请微软OneDrive5TB云盘超详细教程!...

    2019年8月13日最新免费申请微软OneDrive5TB云盘超详细教程!(已亲测!) 本人已于今天2019年8月13日日亲测,成功获取微软OneDrive 5T云盘! 第一步:.打开申请链接 学生版 ...

  6. 手把手从零开始搭建k8s集群超详细教程

    本教程根据B站课程云原生Java架构师的第一课K8s+Docker+KubeSphere+DevOps同步所做笔记教程 k8s集群搭建超详细教程 1. 基本环境搭建 1. 创建私有网络 2. 创建服务 ...

  7. slimftp超小型的FTP服务器

    slimftp超小型的FTP服务器架设工具,加起来不过40K!但功能丝毫不亚于专业架设软件!是您挂马,留后门,杀人放火必备的居家良药! adminftp.exe 配置端(设置帐号什么的) slimft ...

  8. 二进制安装部署 4 kubernetes集群---超详细教程

    二进制安装部署kubernetes集群---超详细教程 前言:本篇博客是博主踩过无数坑,反复查阅资料,一步步搭建完成后整理的个人心得,分享给大家~~~ 本文所需的安装包,都上传在我的网盘中,需要的可以 ...

  9. 【K8S实战】-超详细教程(三)

    [K8S实战]-超详细教程(三) 1.存储 1.1.nfs默认存储 我这里只演示nfs作为K8S的默认存储,其他的可以看这里[存储类]. 1.1.1.安装nfs服务 所有机器都安装nfs工具 所有机器 ...

最新文章

  1. Golang二维切片初始化
  2. locks java_java中Locks的使用
  3. php如何编写通信协议,定制通讯协议
  4. python 数据库连接池_【转】Python 数据库连接池
  5. 超级网管员系列图书介绍
  6. 转Java调用C/C++编写的第三方dll动态链接库(非native API)--- JNI
  7. 计算机网络的功能分布计算,网络中心的分布计算(转帖)
  8. mac 自带连接ftp服务器,Mac自带FTP工具使用
  9. 计算机技术领域当前的主流技术及其社会需求调查报告
  10. Axure热区的使用
  11. Bumped!详解—(Dijkstra堆优化,优先队列实现,结构体重载运算符)
  12. 搜索算法相关性评价指标
  13. 技术停滞:如何更新?
  14. CodeForces 760B Frodo and pillows
  15. python如何去除文本标点符号_python中如何去除标点符号
  16. Flask框架基础入门教程
  17. 【NOIP冲刺题库题解】1973:【16NOIP普及组】买铅笔
  18. 逻辑强化(06)分析推理 答案解析
  19. Removing-Camera-Shake-from-a-Single-Photograph图像去模糊读书笔记
  20. 解决Vue.directives is not a function报错

热门文章

  1. 那些年,我们跟房贷利率的相爱相杀
  2. 微星 MEG Z590i unify windows 驱动下载地址
  3. 团结就是力量(hash tarjan)
  4. pixijs写发射炮弹抛物线特效
  5. 中国通信工业协会《5G赋能十大行业及5G网络安全关键技术》
  6. python计算均方误差_Python:如何计算分布的均方误差?
  7. 梦幻西游手游服务器维护公告,《梦幻西游》手游2019年2月27日维护公告:梦幻狂欢月来临_ 《梦幻西游》手游官网-人人都玩,无处不在...
  8. 想要打印大量Word文档在哪里打印比较便宜
  9. Windows快捷键整理
  10. 时间轮(Timing Wheel)案例和原理