参考文章:https://help.aliyun.com/document_detail/60152.html?spm=5176.22414175.sslink.1.1ea4617cAVoiGj
第一步:准备远程服务器
这里使用阿里云轻量级应用服务器。本服务器是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
开启被动模式
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,表示要进入的目录已经发送给客户端。
网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。
加入交流群
请使用微信扫一扫!