谈谈FTP
一、关于FTP1.FTP是什么?FTP,全称”文件传输协议”。属于TCP/IP四层模型中的应用层。 2.TCP/IP五层模型有哪些?如图所示: ? ? 用文字叙述(从高层到底层):
其中如FTP、HTTP、SNMP等就属于应用层。 3.为什么要使用FTP从我个人职业经历来谈,使用FTP的应用场景如下:
(1)数据备份关于数据备份,结合我之前做运维的一段经历,主要手段如下: 除了基于scp之外,还可以有sftp、sz/rz、rsync和本文提到的ftp等。 备份的内容通常如下: (2)公司内部文件管理关于公司内部文件管理,有的公司会搭建一个内部的FTP,主要用于管理公司重要文件(如公司规章制度文档、业务文档、技术文档、开发环境软件、重要第三方账号管理等)。 FTP有严格的权限控制,可以控制谁能访问某个目录下的文件和下载文件的权限。 (3)业务层应用业务层应用的话,我之前用FTP作为我的博客系统文件管理工具,主要用于保存用户的头像和上传的如MP3、MP4、Pdf、Word等文件。 因为如果将其以二进制(其实将文件流转化为二进制)的形式存储,会影响数据库的性能。 问:为什么将文件(这里指图片和其它文件格式的文件)以二进制的形式存储会影响数据库的性能? 问:为什么对于非常长的字段会增加数据库的查询时间呢? 以我之前写的博客系统,我会图片上传至FTP,然后通过Nginx做代理映射到FTP上传图片的目录,实际上保存在数据表里面的图片,仅仅是一个URL。而且nginx对于处理静态资源(如图片、css、html、js等)性能非常好。 问:目前公司项目用FTP多吗? 4.FTP的优缺点(1)FTP有哪些优点?
(2)FTP有哪些缺点?
5.FTP的替代方案有哪些?就FTP方面,有如下方案:
但除此之外,还有很多第三方的文件存储方案如前面提到腾讯云对象存储、阿里云对象存储、七牛云对象存储等。 当然了,一切根据公司业务情况和公司背景情况而定,很多公司之所以不使用例如腾讯云、阿里云、七牛云的存储方案,是因为存储的东西非常重要,放在第三方不安全,害怕对方可能窃取其中的重要信息。 这也是为什么微信会有企业微信、阿里会有钉钉、美团会有大象的重要原因。 6.关于FTP的安装(1)CentOS7安装FTP参考如下流程,一步步执行即可: #安装FTP yum -y install vsftpd #修改配置文件 vim /etc/vsftpd/vsftpd.conf 修改第12行为: anonymous_enable=NO 禁止匿名登录 取消第102行chroot_list_enable=YES,104行chroot_list_file=/etc/vsftpd/chroot_list的注释 在最后一行新增 allow_writeable_chroot=YES #新建用户 useradd test passwd test #防火墙放行 firewall-cmd --permanent --zone=public --add-service=ftp firewall-cmd --reload #ftp命令 #设置开机启动 systemctl enable vsftpd.service #启动 systemctl start vsftpd.service #停止 systemctl stop vsftpd.service #查看状态 systemctl status vsftpd.service #重启ftp服务器 systemctl restart vsftpd.service (2)Ubuntu16.04安装FTPhttps://www.cnblogs.com/YangJieCheng/p/8252577.html (3)FTP配置文件各个配置的含义ftp配置详解 二、Java中如何使用FTP1.Java应用使用FTP可以参考我之前写过的一篇谈谈存储系统 最近我的同事就使用其中的FTP方案。 2.SpringBoot应用使用FTP与Java应用使用FTP一样,只不过将FTP相关的配置放在配置文件里如application.yml或application.properties文件里。 大家感兴趣的可以参考springBoot 实现ftp上传与下载,这里我就不写代码了。 三、和FTP相爱相杀的经历1.FTP访问不了像FTP搭建好了并启动,通常是可以通过ftp://ip进行访问,此时访问不了,因为是我们自建的服务器,没有使用阿里云或者腾讯云,结果发现是防火墙的限制。 之前做运维的一段时间,接触CentOS6.5系统,知道有个iptables防火墙,没想到这次有个firewall。后来查了相关资料,原来CentOS7默认是firewall防火墙。 执行上面的开放ftp就可以访问了。 之前公司服务器对公网开放过,由于我忘记了没有设置防火墙开机自启动导致突然服务就不行了。为此我专门研究了一下服务器安全策略。 搜索了相关资料,总结了如下几个策略(常规性策略):
既然提到防火墙,那么提个问题防火墙有什么用呢?答:防火墙主要目的是阻止网络蠕虫病毒的攻击以及网络中某些不怀好意的人访问你的电脑(通过这些访问,可以非法获取用户电脑中的文件数据,甚至可以修改用户电脑系统中的某些设置,远程控制用户的电脑),保证用户上网安全。 2.输入正确的用户名和密码还是弹出需要登录的界面这个问题是因为改了一些ftp的配置导致的。无论怎么设置用户名和密码都不行。主要参考一个博客参考的有问题。其实很简单,按照我前面列举的步骤就可以了,一举成功。 3.没有权限一般情况下,ftp安装好后,默认是/var/ftp/pub下的目录,这个通常是默认的ftp用户。但这次没有权限是因为公司的一个程序员小姐姐使用自建的用户访问。linux创建用户的命令,通常有两个: 问:useradd和adduser有何区别?以CentOS为例: 以Ubuntu为例: adduser在使用该命令创建用户是会在/home下自动创建与用户名同名的用户目录,系统shell版本,会在创建时会提示输入密码,更加友好。 这让我联想到,当初使用Ubuntu16.04的useradd创建用户时,一直不在/home目录下生成对应的用户目录,于是我手动创建,然后通过授权命令进行关联。 4.下载大的文件,突然中断,又需要重新执行使用Java程序下载FTP上的大文件(接近二十个G),出现中断。 ? ? 注意:这里分主动模式和被动模式。 5.FTP的被动模式设置核心配置如下: #被动模式相关配置 pasv_enable=YES pasv_min_port=10221 pasv_max_port=11221 pasv_promiscuous=YES 问:FTP的被动模式是什么?所谓被动模式,指的是FTP服务器“被动”等待客户端来连接自己的数据端口,其过程具体是:当开启一个FTP连接时,客户端打开两个任意的非特权本地端口(N >1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P > 1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。 问:FTP的主动模式是什么?所谓主动模式,指的是FTP服务器“主动”去连接客户端的数据端口来传输数据,其过程具体来说就是:客户端从一个任意的非特权端口N(N>1024)连接到FTP服务器的命令端口(即tcp 21端口),紧接着客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器。然后服务器会从它自己的数据端口(20)“主动”连接到客户端指定的数据端口(N+1),这样客户端就可以和ftp服务器建立数据传输通道了。 问:FTP的主动模式和被动模式的区别什么?主动模式的FTP是指服务器主动连接客户端的数据端口,被动模式的FTP是指服务器被动地等待客户端连接自己的数据端口。 有一位技术小伙伴幽默的概括:
问:为什么要使用被动模式?从上面的FTP的主动模式和被动模式的区别,我们就能得知为什么要使用被动模式不是主动模式。因为主动模式是服务端主动连接客户端,而被动模式是服务端等待客户端连接。实际应用中,客户端的端口是多变的,而服务端的端口则相对统一。所以千万不要因为是被动模式就理解为是服务端去连接客户端。 问:被动模式的优缺点有哪些?被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。 6.FTP下载过慢如何提高速率?这里需要修改配置,增加如下内容: local_max_rate = 1048576(相当于下载M/S) #单位,默认为字节
7.FTP太慢了,使用临时方案写shell脚本,脚本里处理文件和传输文件。针对FTP下载实在太慢了,我想到了一个临时的办法使用scp来进行文件传输。但是呢?scp免密登录处理不太安全,于是我想到了一个办法使用sshpass。 关于scp免密传输,可以参考我的这篇博客: 8.太过随意,FTP配置匿名的重大隐患。之前为了做试验测试,我不太严谨,就直接设置为匿名访问且可以任意读写。但实际中不应该这么做。 官方的话来说: 这样一来任何人就可以在服务器上任意上传或下载文件,安全形同虚设。 问:FTP除了匿名开放模式还有哪些模式?哪个模式更安全一些?本地用户模式: 如果是默认useradd username创建用户,默认就有ftp和sftp、ssh等权限。但如果是执行这条命令 虚拟用户模式: ? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |