FTP文件传输服务器

目录

一、FTP协议两种工作模式

二、FTP数据两种传输模式

三、FTP用户分类

四、VSFTP配置案例

4.1匿名开放模式

4.2本地用户模式

4.3虚拟用户模式

五、实验总结


一、FTP协议两种工作模式

主动模式:

1、客户端主动向ftp服务器发送控制连接,三次握手控制连接建立成功(密码认证)。

源端口:随机端口1026     目的端口:21

2、用于传输控制命令的控制连接建立成功之后,客户端向ftp服务器发送port消息来告诉ftp服务器接下来要与其传输数据所使用的端口号。

如:随机端口号1027

3、若要彼此传输数据,ftp服务器主动与客户端建立数据连接。

源端口号:20       目的端口号:1027(客户端通过控制连接发送过来的port消息携带的 )

说明:我们知道防火墙是根据报文五元组建立会话,来对外部流量进行筛选是否允许其访问内网。如果ftp客户端位于防火墙的内网,此时防火墙只缓存的有客户端与ftp服务器之间控制会话。如果采用主动模式,当ftp服务器要向客户端发送数据连接请求时,在经过防火墙时由于会话表里保存的没有此五元组端口号的记录,因此防火墙就会禁止ftp请求数据连接报文的通过,因此彼此之间无法进行ftp文件的传输。

被动模式:

1、客户端主动向ftp服务器建立控制连接,三次握手控制连接建立成功(密码认证)。

源端口: 随机端口1025    目的端口: 21

2、控制连接建立成功后,客户端向ftp服务器发送PASV被动消息,告诉ftp服务器在接下来传输数据时其处于被动模式,由客户端向ftp服务器建立数据连接。

3、ftp服务器收到PASV消息后,自己开放个用于传输数据的随机端口号如:m,并将其端口号告诉给客户端。

4、要传输数据时由客户端发送数据连接。

源端口:1026随机端口    目的端口:m

说明:被动连接解决了在防火墙的环境下处于内外区域的c/s之间无法通过ftp传输数据的问题。因为不管是控制连接还是数据连接都是先由客户端主动发起的,因此防火墙会话表里就含有彼此报文交互的五元组会话记录,当ftp要向客户端回复数据连接建立成功经过防火墙时,报文匹配会话五元组放行流量。

二、FTP数据两种传输模式

1、ASCLL传输方式:用于传输文本文件。如果用户使用的是windows系统,需要从unix系统搭建的服务器上下载一个文本文件。由于不同操作系统之间对文本内容文件的换行符表示的字符不同(如:win /r/n ,unix  /n)如果直接将unix的文本文件原样下载到win系统上,在win系统上查看文本内容时,文本之间将没有换行,在换行处会出现无法解析的乱码。因此ASCLL文本传输模式会自动将不同主机之间传输的文本文件中的换行符转换成本地的表示形式在存到本机。这样在向ftp服务器上传或下载文本文件后就不会出现换行处不换行,乱码的情况了。

2、Binary二进制传输形式:用于传输二进制文件。在此模式下不会对文件进行任何处理即保存文件的位序。因此如果下载的是二进制非文本文件,如果使用ASLL数据传输模式无疑会把二进制文件中原本的字符当换行符转换后破坏其整个二进制文件。

三、FTP用户分类

1、匿名用户:即anonymous用户。当客户端要访问ftp服务器时,可以在没有服务器用户名和密码的前提下,通过匿名用户访问ftp服务器的共享资源。

2、实体用户:指在ftp服务器上创建注册的本地账户。其用户在登录到ftp服务器后默认的当前工作目录为以自己命名的工作目录,可以修改。不仅可以访问ftp的共享资源,还可以访问其系统下该用户的其它资源。

3、虚拟用户:为了保证FTP服务器的安全性,由vsftpd服务器提供的非系统用户账号。虚拟用户FTP登录后将把指定的目录作为FTP根目录。虚拟用户与本地用户具有类似的功能,由于虚拟用户相对安全,因此正逐步替代本地用户账号的使用。

四、VSFTP配置案例

实验环境

VSFTP-Server

IP:192.168.200.254/24

VSFTP-Client

IP:192.168.200.28/24

4.1匿名开放模式

FTP-Server:

1、安装vsftp服务

2、查看vsftp服务相关配置文件

3、在客户机上安装ftp客户端工具,用于登录到ftp服务器

4、备份/etc/vsftpd/vsftpd.conf主配置文件、生成vsftp主配置文件、修改并添加匿名用户的配置参数

5、防火墙放行ftp服务,否则ftp拒绝用户登录;匿名用户默认登录到ftp服务器的主目录为/var/ftp/pub目录,授予匿名用户映射服务器的真实用户ftp的写权限,并设置selinux的布尔值参数,否则匿名用户无法创建上传文件。

6、开启vsftpd服务

7、客户端登录ftp服务器,下载并上传文件测试

4.2本地用户模式

FTP-Server:

1、安装vsftpd服务程序、备份主配置文件/etc/vsftpd/vsftpd.conf。前面已有做过,再此略过。

2、修改并添加主配置文件中本地用户相关配置参数,将之前实验的匿名用户登录关闭。与本地用户配置相关的主要参数local_enable=YES,write_enable=YES,local_umask=022其它可选。

3、创建用于客户端登录测试的ftp本地账户

4、防火墙放行ftp服务流量、设置selinux的布尔值策略、因为本地用户默认登录到ftp服务器工作主目录为自己的家目录,因此在自己的家目录拥有写入的权限。由于上面演示过了此处不在表述。

5、重启ftp服务

6、客户端使用测试本地账户ftpclient,登录ftp服务器进行测试。

7、客户端使用ftp系统的root用户登录到ftp服务器进行测试。

8、从ftp服务器黑名单中删除root用户,来允许其登录到ftp服务器

9、重启ftp服务、客户端使用root用户重新登录ftp测试。

10、去除ftp主配置文件中的chroot_local_user=YES根锁定参数,在用客户端登录测试。

4.3虚拟用户模式

VSFTP-Server:

1、在ftp服务器的/etc/vsftpd目录下创建包含有虚拟账户和其密码的文件。

2、使用db-load命令将创建的虚拟用户信息文件转化成vsftpd服务可以直接加载的数据库文件。

3、创建用于虚拟用户权限身份验证的PAM文件(文件名任意),将刚才生成的虚拟用户信息数据库文件关联到PAM认证文件内。

4、创建虚拟用户映射到ftp服务器的真实账户,并通过指定真实用户的家目录来映射虚拟目录登录到服务器的主目录。并修改权限允许其它人查看,但不能修改其虚拟用户的文件。

5、在vsftp主配置文件中配置虚拟用户的相关参数。指定之前创建的PAM认证文件以及与虚拟用户关联的本地用户。

6、给虚拟用户配置不同的权限,如:只允许vuser1查看文件,而允许vuser2上传、创建、修改、查看、删除文件。这种需求在企业真实环境中是常见的,我们可以通过vsftpd服务器程序来实现。

6.1、修改vsftpd主配置文件,过添加 user_config_dir参数来定义这两个虚拟用户不同权限的配置文件所存放的路径。

*标注下滑线是配置虚拟用户所使用到的配置参数。

6.2、在/etc/vsftpd/respective目录下创建分别以虚拟用户名命名的配置文件(使vsftp通过虚拟用户名来找到各自的权限配置文件),并写入相应的权限。

7、重启vsftpd服务,使配置文件立即生效。

VSFTP-Client:

1、使用vuser1登录测试验证其是否具有创建目录权限。

2、使用vuser2登录测试其是否具有创建、删除、修改、上传文件权限。

五、实验总结

(1)配置了虚拟用户登录后,本地用户登录就会失效。可以通过修改PAM认证文件调用的模块函数库可以解决。

(2)vsftpd主配置文件中必须要开启本地登录模式。如果不开,将报错,提示本地模式和匿名模式必须开启一个,显然虚拟用户模式就是为了提高安全,因此我们不开匿名模式而开启本地模式。

(3)2.6.4节中的主配置文件参数allow_writeable_chroot=YES必须开启如果不开将报错。

(4)防火墙影响ftp登录,默认情况防火墙策略阻止了ftp端口,ftp客户端登录将得到“无法路由到主机”的报错。

(5)SELinux阻止文件创建,本来vuser2是有创建文件权限的,但是由于受到默认SELinux策略影响,将不能创建文件。此时需要在ftp服务器执行:setsebool -P ftpd_full_access=off命令即可。

@声明:“山月润无声”博主知识水平有限,以上文章如有不妥之处,欢迎广大IT爱好者指正,小弟定当虚心受教!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/99934.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

go锁-互斥锁

go锁-互斥锁 sema初始值是0,waitershift等待协程的数量 正常枷锁: 尝试CAS直接加锁,通过原子包给lockerd 为枷锁 若无法直接获取,进行多次自旋尝试,未获取到的锁的g ,多次执行空语句,多次尝试…

线程同步与互斥

目录 前言:基于多线程不安全并行抢票 一、线程互斥锁 mutex 1.1 加锁解锁处理多线程并发 1.2 如何看待锁 1.3 如何理解加锁解锁的本质 1.4 CRAII方格设计封装锁 前言:基于线程安全的不合理竞争资源 二、线程同步 1.1 线程同步处理抢票 1.2 如何…

《QDebug 2023年8月》

一、Qt Widgets 问题交流 1.获取 QWidget 当前所在屏幕区域 本来以为 QWidget 的 screen() 接口返回的是组件自己所在屏幕的 QSreen,实测是所属 Window 所在的屏幕,如果 Window 跨屏了两者所属屏幕可能就不是同一个。 获取 QWidget 当前所在屏幕区域可…

HTTP与SOCKS5的区别对比

在互联网世界中,服务器是一种重要的工具,可以帮助我们提高网络安全性等。今天,我们将重点关注两种常见的技术:HTTP和SOCKS5。让我们深入了解它们的工作原理、用途和优缺点,并通过Python代码示例学习如何使用它们。 HT…

Uniapp笔记(五)uniapp语法4

本章目标 授权登录【难点、重点】 条件编译【理解】 小程序分包【理解】 一、授权登录 我的模块其实是两个组件&#xff0c;一个是登录组件&#xff0c;一个是用户信息组件&#xff0c;根据用户的登录状态判断是否要显示那个组件 1、登录的基本布局 <template><…

QT创建可移动点类

效果如图所示&#xff1a; 创建新类MovablePoint&#xff0c;继承自QWidget. MovablePoint头文件: #ifndef MOVABLEPOINT_H #define MOVABLEPOINT_H#include <QWidget> #include <QPainter> #include <QPaintEvent> #include <QStyleOption> #includ…

2023年7月京东打印机行业品牌销售排行榜(京东运营数据分析)

鲸参谋监测的京东平台7月份打印机行业销售数据已出炉&#xff01; 7月份&#xff0c;打印机市场呈现下滑趋势。根据鲸参谋平台的数据可知&#xff0c;当月京东平台打印机的销量为48万&#xff0c;环比下降约28%&#xff0c;同比下降约18%&#xff1b;销售额为4亿&#xff0c;环…

OCR多语言识别模型构建资料收集

OCR多语言识别模型构建 构建多语言识别模型方案 合合&#xff0c;百度&#xff0c;腾讯&#xff0c;阿里这四家的不错 调研多家&#xff0c;发现有两种方案&#xff0c;但是大多数厂商都是将多语言放在一个字典里&#xff0c;构建1w~2W的字典&#xff0c;训练一个可识别多种语…

Java 8 新特性——Lambda 表达式(2)

一、Java Stream API Java Stream函数式编程接口最初在Java 8中引入&#xff0c;并且与 lambda 一起成为Java开发里程碑式的功能特性&#xff0c;它极大的方便了开放人员处理集合类数据的效率。 Java Stream就是一个数据流经的管道&#xff0c;并且在管道中对数据进行操作&…

IP初学习

1.IP报文 首部长度指的是报头长度&#xff0c;用于分离报头和有效载荷 2.网段划分 IP地址 目标网络 目标主机 3.例子 4.特殊的IP地址 5.真正的网络环境 6.调制解调器 “猫”&#xff0c;学名叫宽带无线猫 7.NAT 源IP在内网环境不断被替换 8.私有IP不能出现在公网上 因…

时序预测 | MATLAB实现CNN-BiGRU卷积双向门控循环单元时间序列预测

时序预测 | MATLAB实现CNN-BiGRU卷积双向门控循环单元时间序列预测 目录 时序预测 | MATLAB实现CNN-BiGRU卷积双向门控循环单元时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.MATLAB实现CNN-BiGRU卷积双向门控循环单元时间序列预测&#xff1b; 2.运行环境…

性能提升3-4倍!贝壳基于Flink + OceanBase的实时维表服务

作者介绍&#xff1a;肖赞&#xff0c;贝壳找房&#xff08;北京&#xff09;科技有限公司 OLAP 平台负责人&#xff0c;基础研发线大数据平台部架构师。 贝壳找房是中国最大的居住服务平台。作为居住产业数字化服务平台&#xff0c;贝壳致力于推进居住服务的产业数字化、智能…

嵌入式学习笔记(1)ARM的编程模式和7种工作模式

ARM提供的指令集 ARM态-ARM指令集&#xff08;32-bit&#xff09; Thumb态-Thumb指令集&#xff08;16-bit&#xff09; Thumb2态-Thumb2指令集&#xff08;16 & 32 bit&#xff09; Thumb指令集是对ARM指令集的一个子集重新编码得到的&#xff0c;指令长度为16位。通常在…

微服务-sentinel详解

文章目录 一、前言二、知识点主要构成1、sentinel基本概念1.1、资源1.2、规则 2、sentinel的基本功能2.1、流量控制2.2、熔断降级 3、控制台安装3.1、官网下载jar包3.2、启动控制台 4、项目集成 sentinel4.1、依赖配置4.2、配置文件中配置sentinel控制台地址信息4.3、配置流控4…

每日一题——下一个排列

下一个排列 题目链接 读懂题目 要理解题目的意思&#xff0c;主要是要读懂这一句&#xff1a;整数数组的 下一个排列 是指其整数的下一个字典序更大的排列。 我们来逐词分析&#xff1a; 其整数&#xff0c;即我们要将这个数组的数字构成一个十进制整数&#xff0c;例如数组…

并发编程的关键——LOCK

并发编程的关键——LOCK 锁的分类synchronized万物即可为锁synchronized的实现锁升级 LockAQSLockSupportCLHCAS Lock实现ReentrantLock阻塞方法acquireReadWriteLockReentrantReadWriteLockStampedLock 锁的分类 公平锁/非公平锁&#xff1a; – 公平的意思是多个线程按照申请…

解决vue项目首行报红( ESLint 配置)和新建的vue文件首行报红问题

目录 前情提要&#xff1a; 修改ESLint 配置 新建的vue文件首行还是报红 报红原因&#xff1a; 解决方法&#xff1a; 前情提要&#xff1a; 在网上查到的方法可能是在package.json文件或者.eslintrc.js文件中添加 requireConfigFile: false 如果此方法对你的错误不起作用…

2020ICPC南京站

K K Co-prime Permutation 题意&#xff1a;给定n和k&#xff0c;让你构造n的排列&#xff0c;满足gcd(pi, i)1的个数为k。 思路&#xff1a;因为x和x-1互质&#xff0c;1和任何数互质&#xff0c;任何数和它本身不互质 当k为奇数时&#xff0c;p11&#xff0c;后面k-1个数…

云原生Kubernetes:二进制部署K8S多Master架构(三)

目录 一、理论 1.K8S多Master架构 2.配置master02 3.master02 节点部署 4.负载均衡部署 二、实验 1.环境 2.配置master02 3.master02 节点部署 4.负载均衡部署 三、总结 一、理论 1.K8S多Master架构 (1) 架构 2.配置master02 &#xff08;1&#xff09;环境 关闭防…

yolov5自定义模型训练三

经过11个小时cpu训练完如下 在runs/train/expx里存放训练的结果&#xff0c; 测试是否可以检测ok 网上找的这张识别效果不是很好&#xff0c;通过加大训练次数和数据集的话精度可以提升。 训练后的权重也可以用视频源来识别&#xff0c; python detect.py --source 0 # webca…