参考文章:https://help.aliyun.com/document_detail/60152.html?spm=5176.22414175.sslink.1.1ea4617cAVoiGj

一、FTP服务器配置

第一步:准备远程服务器
这里使用阿里云轻量级应用服务器。本服务器是Ubuntu系统,由于之前项目用到了npm包管理工具,这里就基于此进行配置。

第二步:安装vsftpd,FTP服务器管理软件
2.1 连接服务器之后(通过putty软件进行命令行连接控制),输入 npm install yum。npm没有收录vsfptd,需要用到另一个包管理工具yum。

2.2 安装成功后输入systemctl enable vsftpd.service,设置服务器开机自启动

2.3 输入systemctl start vsftpd.service,启动ftp服务器

2.4 输入netstat -antup | grep ftp,检查ftp是否成功启动,查看占用端口。

第三步:配置FTP服务器
3.1 进入Linux系统的/etc/vsftpd目录下的vsftpd.config文件(可以使用Linux下的vim,也可以通过远程可视化界面访问),粘贴以下配置代码。下述配置文件为本FTP服务器的配置文件。在这里先测试被动模式。

#修改下列参数的值:
#禁止匿名登录FTP服务器。
anonymous_enable=YES
#允许本地用户登录FTP服务器。
local_enable=YES
#监听IPv4 sockets。
listen=YES
#在行首添加#注释掉以下参数:
#关闭监听IPv6 sockets。
#listen_ipv6=YES#在配置文件的末尾添加下列参数:
#设置本地用户登录后所在目录。
local_root=/var/Vanghua
#全部用户被限制在主目录。
chroot_local_user=YES
#启用例外用户名单。
chroot_list_enable=YES
#指定例外用户列表文件,列表中用户不被锁定在主目录。
chroot_list_file=/etc/vsftpd/chroot_list
#开启被动模式。
pasv_enable=YES
allow_writeable_chroot=YES
#本示例中为Linux服务器的公网IP。
pasv_address=39.96.175.246
#设置被动模式下,建立数据传输可使用的端口范围的最小值。
#建议您把端口范围设置在一段比较高的范围内,例如50000~50010,有助于提高访问FTP服务器的安全性。
pasv_min_port=50000
#设置被动模式下,建立数据传输可使用的端口范围的最大值。
pasv_max_port=50010

3.2 配置用户,先输入adduser Danny,创建Danny用户。之后输入passwd Danny,设置该用户的密码。

3.3 配置用户登录文件夹,以及文件夹的权限。在这里注意,不进行配置时,使用该管理软件的FTP服务器会默认登录到/home/Danny的文件夹下,另外/root下的文件夹都不能被设置为默认登录文件夹。 输入chown -R Danny:Danny /var/Vanghua,设置默认登录文件夹的归属权属于Danny用户。输入chmod o+w /var/Vanghua,再输入chmod o+r /var/Vanghua,表示设置该文件夹用户拥有读写权限,注意:这一点其实在上面的vsftpd中也进行了配置,如果这里移除权限,那么vsftpd中的配置也会失效。

第四步:配置远程服务器防火墙
为FTP服务器开启指定端口,另外注意考虑TCP数据连接,也要开放端口。

安全起见,把TCP数据连接的端口设置大一些,这里范围为10。

第五步:重启FTP服务器进行测试
输入systemctl restart vsftpd.service重启FTP服务器,通过客户端主机进行连接测试

二、采用被动模式的FTP服务器

预先准备:
在linux服务器下的vsftpd.config文件中配置:
#开启被动模式
pasv_enable=YES
之后重新启动ftp服务器。

第一步:匿名连接FTP服务器
此时是FTP服务器的被动模式。
在windows环境下通过资源管理器通过ftp协议访问指定ftp服务器。在导航栏输入URL。
出现了两个对话框,第一个是尝试的匿名连接,但是是失败的,第二个是尝试的用户名密码连接。

第二步:匿名连接报文分析
在wireshark中进行TCP和FTP报文捕获。
过滤器内容为ip.src == 39.96.175.246 or ip.dst == 39.96.175.246

本截图部分展示了ftp连接,首先尝试使用匿名用户连接ftp服务器。先进行了三次TCP握手建立TCP控制连接,之后服务器发来220状态码,表示连接失败。后续又发来了原因,密码不正确。因为在服务器上设置了禁止匿名用户登录,所以连接失败。之后关掉这个对话框,观察wireshark,进行了TCP四次挥手,释放TCP控制连接。

第三步:用户名密码连接
资源管理器由于匿名访问失败,那么会自动弹出输入用户和密码的对话框。此时输入用户名和密码。

第四步:用户名密码连接报文分析
在wireshark中继续捕获TCP和FTP报文。

可见过程是首先FTP服务器返回220状态码表示连接失败,需要输入密码。之后发来331状态码,表示要验证密码。最后一切完成了,发来230状态码,表示连接成功,通过用户名和密码连接到了FTP服务器。

紧接着登录之后,可以看到客户端给FTP服务器发送来编码格式要求,FTP服务器又返回给了FTP客户端我们在设置FTP服务器默认登录路径时设置的文件夹,是linux环境下的”/var/Vanghua”,用户拥有读写删除权限。

第五步:向FTP服务器传输文件
测试TCP数据连接。在本地创建一个文件,在这里创建了一个readme.txt。然后拷贝到FTP服务器指定的文件夹下。

第六步:分析传输文件时的报文
在wireshark中分析TCP和FTP报文。
可以看到是客户端主动向服务端建立连接,客户端的60306端口向FTP服务器的50006端口进行三次TCP握手,建立TCP数据连接。这个50006端口,早在TCP控制连接建立时就已经由FTP服务器发送给客户端了。紧接着就是通过FTP报文向FTP服务器请求,要把客户端的readme.txt保存到服务器指定目录下。最后保存成功服务器返回226状态码,在返回该状态码之前,这个TCP数据连接已经经过TCP四次挥手释放掉了。

三、采用主动模式的FTP服务器

预先准备:
在linux服务器下的vsftpd.config文件中配置:
#开启被动模式
pasv_enable=NO
将被动模式关闭。
然后配置主动模式
connect_from_port_20=YES
之后重新启动ftp服务器。

第一步:匿名连接FTP服务器
此时是FTP服务器的被动模式。
在windows环境下通过资源管理器通过ftp协议访问指定ftp服务器。在导航栏输入URL。
出现了两个对话框,第一个是尝试的匿名连接,但是是失败的,第二个是尝试的用户名密码连接。

第二步:匿名连接FTP服务器报文分析
此时的情况和被动模式一样。首先进行了客户端发起的TCP三次握手,进行TCP控制连接的建立。然后FTP服务器响应了220状态码,表示登陆失败,需要验证密码。但是由于提前设置不允许匿名登录,所以这里最后FTP服务器返回了530登陆失败。

第三步:用户名密码连接FTP服务器
资源管理器由于匿名访问失败,那么会自动弹出输入用户和密码的对话框。此时输入用户名和密码。

第四步:用户名密码连接FTP服务器报文分析
此时可见建立完TCP控制连接后,FTP服务器对传来的用户名和密码进行了检验。最后返回响应230,表示登录成功。

第五步:访问FTP服务器下的某个文件夹,测试TCP数据连接
进入该文件夹。进入该文件夹,FTP服务器需要把文件夹中的内容返回给客户端,这实际上也是需要通过TCP数据连接完成的。

第六步:分析TCP数据连接相关的报文
在主动模式下进入FTP服务器的一个文件夹,观察wireshark捕获的报文。首先是TCP的三次握手,建立数据连接。从端口上可以看出来,是FTP服务器的20端口主动向客户端的64173端口发送TCP请求,进行数据连接建立。建立完成后FTP服务器返回给客户端一个FTP请求,响应是226,表示要进入的目录已经发送给客户端。

Linux下的FTP服务器搭建相关推荐

  1. Linux下的DNS服务器搭建

    Linux下的DNS服务器搭建 一.DNS介绍 1.dns域名系统 2.正向解析和反向解析 二.检查环境 三.搭建主DNS 1.安装dns相关包 2.设置服务开机自启 3.编辑DNS主配置文件 4.编 ...

  2. Linux下的SVN服务器搭建

    鉴于在搭建时,参考网上很多资料,网上资料在有用的同时,也坑了很多人 本文的目的,也就是想让后继之人在搭建svn服务器时不再犯错,不再被网上漫天的坑爹作品所坑害,故此总结 /******开始****** ...

  3. 虚拟机linux ftp慢,虚拟机Linux下配置FTP服务器的方法

    虚拟机Linux下配置FTP服务器的方法 1.确保虚拟机系统与宿主系统是桥接设置,以方便连接. 2.在虚拟机系统中安装ftp服务器,我安装的是vsftpd服务器.由于安装的虚拟机系统CentOS 中已 ...

  4. Linux网络服务——FTP服务器搭建

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

  5. linux+创建一个v文件共享,win10与Ubantu双系统:Linux下开启FTP服务器与创建无线热点(实现文件共享)...

    如何在win系统下使用filelizza这个软件搭建FTP服务器,然后建立一个无线局域网,让平板终端连接以后,访问电脑硬盘的文件. 如果是只在win7环境下,一切都很简单,按照上文提供的教程就可以实现 ...

  6. Linux下NTP时间同步服务器搭建

    NTP介绍 NTP 服务器是用于局域网服务器时间同步使用的,可以保证局域网所有的服 务器与时间服务器的时间保持一致,某些应用对时间实时性要求高的必须统一时 间. 互联网的时间服务器也有很多,例如 nt ...

  7. Linux下构建FTP服务器

    ftp是什么 FTP是 File Transfer Protocol 文件传输协议的英文名称,用于在Internet上控制文件的双向传输. 同时它也是一个应用程序.一般的Linux系统默认带有ftp软 ...

  8. Linux下java web服务器搭建(JDK1.6、MySQL5.1、Apache2.2+2...

    2019独角兽企业重金招聘Python工程师标准>>> 系统:Red Hat Enterprise Linux 5 32位(自带Httpd) 软件准备: 1. jdk-6u31-li ...

  9. windows 远程访问别人的linux下的ftp服务器,linux与windows之间使用ftp相互访问(CentOS提示ftp:command not found)...

    启动linux及windows系统,这里默认linux系统的IP为192.168.1.15.打开windows的DOS终端,首先输入 :ftp 192.168.1.15 在使用账户和密码登陆:登陆格式 ...

  10. 怎么在linux下使用ftp服务器,怎么在Linux下建立安全的FTP服务器?

    怎么在Linux下建立安全的FTP服务器? 2018-08-31 15:53 分享人:老牛 学习Linux系统时,你可能会遇到网络服务的问题,这里将介绍linux FTP服务器安全及DHCP服务的实现 ...

最新文章

  1. PhantomJS快速入门教程(转)
  2. AT解析层的思路分析及代码实现
  3. Day 4 - PB级规模数据的Elasticsearch分库分表实践
  4. Cisco 2900 series添加VWIC2-1MFT-G703板卡
  5. 光伏市场抢装潮6月底前或重现
  6. H5页面随机数字键盘支付页面
  7. tyvj/joyOI 1305-最大子序和【单调队列】
  8. Android 内存泄漏分析(完)
  9. java解析简历_java:解析word文档(前程无忧简历),最好有代码案例?poi或者jacob解析都可以,有jar资源,求急。感谢...
  10. 什么是软件测试中的黑天鹅
  11. SecureCRT 超级终端 不能输入命令
  12. 使用思博伦Spirent TsetCenter测试RFC 2544(1)_开始 _双极未来
  13. ffmpeg 结合 ASS字幕制作+特效制作
  14. VS2003安装方法----转载
  15. iOS - CAEmitterlayer粒子发射器
  16. 地铁AFC付出体式格局近况及移动付出安好性探究
  17. 彭适辰 - 资本寒冬:给创业者的十点建议
  18. Android 点击按钮带有震动效果,使用Vibrator
  19. 百度云使用QQ失败怎么办?
  20. 活动目录安装|活动目录教程

热门文章

  1. AD555计算机辅助设计,震旦Aurora AD555 驱动
  2. 计算机文献检索过程,计算机文献检索的基本方法与策略
  3. C语言:从入门到进阶笔记(完整版)
  4. laravel框架解决sql注入问题
  5. 加权移动平均线(Weigted Moving Average,WMA)
  6. 数据外推算法 c语言,[原创]如何进行内插法和外推法的计算
  7. 今日头条 mysql_今日头条的核心架构解析
  8. Shiro-单点登录原理
  9. 【游戏开发创新】用Unity等比例制作广州地铁,广州加油,早日战胜疫情(Unity | 地铁地图 | 第三人称视角)
  10. 这几本游戏开发书籍推荐给为未来的游戏工程师