【linux网络】解读FTP文件传输服务器配置,揭秘百度云下载限速原理

目录

一、FTP文件传输协议

1.1FTP工作原理

1.2两种模式介绍

1.3FTP状态码

1.4FTP的三种用户分类

二、vsftpd软件的介绍

2.1服务端介绍

2.2不同操作系统下的客户端登录操作

三、vsftpd的常见配置

3.1修改默认的命令端口

3.2限制匿名用户登录(系统原本是默认匿名可以登录的)

3.3默认匿名用户不可以上传,如果想要开启

3.4指定匿名用户上传的文件默认的所有者和权限

3.5系统用户的默认权限查看

3.6禁锢系统用户

3.7提示信息

3.8pam模块与黑白名单结合使用

3.9限定匿名用户的最大传输速率


一、FTP文件传输协议

1.1FTP工作原理

ftp是一种双通道协议,常用在局域网内使用,ftp使用的是tcp传输的21端口和20端口;

21端口:用于命令控制(传输权限等,以及告知数据传输的端口)

20端口:用于数据传输

1.2两种模式介绍

主动模式:服务端主动开启tcp的20端口 去传输数据给客户端

被动模式:服务端开放随机端口,通过21端口告诉了客户端,被动等待客户端连接

 

1.3FTP状态码

1XX:信息 125:数据连接打开
2XX:成功类状态 200:命令OK     230:登录成功
3XX:补充类     331:用户名OK
4XX:客户端错误 425:不能打开数据连接
5XX:服务器错误 530:不能登录

1.4FTP的三种用户分类

匿名用户:anonymous(匿名用户),对应Linux用户ftp(程序用户)系统用户:Linux的用户,用户/etc/passwd,密码/etc/shadow虚拟用户:特定服务的专用用户,独立的用户/密码文件  administer  ##不常用

匿名用户(映射为系统用户ftp )共享文件位置:/var/ftp
系统用户共享文件位置:用户家目录

注意:

系统用户登录ftp服务器以后,显示的服务器的根是硬盘真正的根,但登录的位置是系统用户的家目录,再默认情况下,系统用户可以切换至硬盘的根目录下,约等于可以看到整个硬盘的内容(不是很安全)

客户端以匿名用户或者ftp用户登录以后,当前显示的根是服务器的根,也就是程序用户ftp的家目录:/var/ftp

匿名用户的默认权限有哪些(匿名用户可以查看,可以下载/var/ftp目录下的内容)

二、vsftpd软件的介绍

2.1服务端介绍

[root@localhost ftp]#rpm -qc vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd        ##pam认证的配置文件
/etc/vsftpd/ftpusers     ##与pam认证相结合,可以设置访问黑白名单
/etc/vsftpd/user_list    ##与vsftpd.conf的配置结合,可以设置禁锢的黑白名单
/etc/vsftpd/vsftpd.conf  ##服务端的配置文件

2.2不同操作系统下的客户端登录操作

linux系统下载ftp客户端

Windows下推荐filezilla软件,我个人比较喜欢

还可以直接在我的电脑路径下找

还可以在Windows的命令行操作

三、vsftpd的常见配置

3.1修改默认的命令端口

[root@localhost ftp]#vim /etc/vsftpd/vsftpd.conf
listen_port=2121   ##修改默认端口号为2121,配置文件中没有,直接添加[root@localhost ftp]#systemctl restart vsftpd

3.2限制匿名用户登录(系统原本是默认匿名可以登录的)

[root@localhost ftp]#vim /etc/vsftpd/vsftpd.conf12 anonymous_enable=no ##配置文件的第12行修改为no[root@localhost ftp]#systemctl restart vsftpd

3.3默认匿名用户不可以上传,如果想要开启

[root@localhost pub]#vim /etc/vsftpd/vsftpd.conf12 anonymous_enable=YES  ##允许上传的前提一定是允许匿名登录29 anon_upload_enable=YES  ##原本是默认注释了,为关闭,需要取消注释,注意:文件系统权限33 anon_mkdir_write_enable=YES  ##原本是默认注释了,为关闭,需要取消注释[root@localhost pub]#systemctl restart vsftpd
[root@localhost pub]#chmod 777 /var/ftp/pub补充未做的关于ftp用户的实验配置(这些是配置文件没有的内容,需要自行添加):
anon_world_readable_only=NO 只能下载全部读的文件, 默认YES
anon_umask=0333 指定匿名上传文件的umask,默认077,注意:0333中的0不能省略
anon_other_write_enable=YES 可删除和修改上传的文件,默认NO

3.4指定匿名用户上传的文件默认的所有者和权限

[root@localhost pub]#vim /etc/vsftpd/vsftpd.conf12 anonymous_enable=YES  ##允许上传的前提一定是允许匿名登录29 anon_upload_enable=YES  ##原本是默认注释了,为关闭,需要取消注释,注意:文件系统权限33 anon_mkdir_write_enable=YES  ##原本是默认注释了,为关闭,需要取消注释48 chown_uploads=YES  ##默认是no,这里调整为yes,取消注释49 chown_username=xueyin   ##这里是指定将所有的上传文件的属主和属组权限映射为xueyin,取消注释[root@localhost pub]#systemctl restart vsftpd补充未添加的测试(这是配置文件中没有的):
chown_upload_mode=0644  ##可以添加匿名用户上传的落地文件属性

3.5系统用户的默认权限查看

/etc/vsftpd/vsftpd.conf16 local_enable=YES  ##默认允许linux用户登录19 write_enable=YES  ##默认允许linux用户上传文件,与文件夹的权限相配合23 local_umask=022   ##默认系统用户上传文件的默认权限对应umask

3.6禁锢系统用户

登录以后的系统用户权限过大,相当于能够看到整个硬盘的内容,并且下载,所有有了系统用户禁锢,就是限制系统用户只能在自己的家目录下活动,不能切换到根下面去

[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf
101 chroot_local_user=YES  ##第101行默认关闭,这里取消注释
102 chroot_list_enable=YES  ##第102行默认关闭,这里取消注释
104 chroot_list_file=/etc/vsftpd/chroot_list  ##第104行默认关闭,这里取消注释[root@localhost vsftpd]#vim chroot_list  ##/etc/vsftpd目录下没有,需要自行添加
lisi[root@localhost vsftpd]#chmod -R 555 /home  ###这一步非常重要,要不然不在名单的系统用户会一直报错,但是对匿名用户没有影响,使用登录进去的根是服务器的家目录
[root@localhost ~]#systemctl restart vsftpd补充搭配(黑名单就不做实验了):
当chroot_local_user=YES和chroot_list_enable=YES时,则chroot_list中用户不禁锢,即白名单
当chroot_local_user=NO和chroot_list_enable=YES时, 则chroot_list中用户禁锢,即黑名单

 拓展,这种报错是什么原因?

回答:这是因为没有修改/home家目录的权限,需要有写的权限

[root@localhost opt]#ftp 192.168.20.18
Connected to 192.168.20.18 (192.168.20.18).
220 (vsFTPd 3.0.2)
Name (192.168.20.18:root): xueyin
331 Please specify the password.
Password:
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
Login failed.
421 Service not available, remote server has closed connection

3.7提示信息

 87 ftpd_banner=Welcome to blah FTP service.  ##默认关闭,这是取消注释,将其开启

3.8pam模块与黑白名单结合使用

[root@localhost vsftpd]#vim /etc/vsftpd/vsftpd.conf
101 chroot_local_user=YES
[root@localhost vsftpd]#vim ftpusers16 lisi
[root@localhost vsftpd]#vim /etc/pam.d/vsftpd3 auth       required     pam_listfile.so item=user sense=deny file=/etc/v    sftpd/ftpusers onerr=succeed
表明以上实验是一个黑名单改为下面这个配置,就是个白名单,实验就不做了
auth       required     pam_listfile.so item=user sense=allow  file=/etc/vsftpd/ftpusers onerr=succeed

3.9限定匿名用户的最大传输速率(百度云盘下载限速用的类似的原理)

服务端配置:
[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf
anon_max_rate=10240  ##这是配置文件里面没有的,需要自行添加
local_max_rate=10240000  ##这是配置文件里面没有的,需要自行添加服务端还需要分别在服务器的家目录和用户的家目录下创建两个一模一样的文件,用于测试
[root@localhost pub]#dd if=/dev/zero of=/home/xueyin/bigfile bs=1M count=100
[root@localhost pub]#dd if=/dev/zero of=/var/ftp/pub/bigfile bs=1M count=100客户端测试:
[root@localhost opt]#wget ftp://192.168.20.18/pub/bigfile  ##匿名用户
[root@localhost opt]#wget ftp://xueyin:"123456"@192.168.20.18/bigfile  ##本地用户

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

不知道如何制作产品图册的,赶紧收藏住!

产品图册是展示产品外观、功能和特点的重要工具,对于销售和推广产品至关重要。然而,制作一本高质量的产品图册并不是一件容易的事情。如果你没有经验或者不确定如何着手,那么这篇文章将为你提供一些实用的建议和技巧,帮助你轻松制…

自定义业务异常处理类加入全局处理器中

自定义业务异常处理类并将其加入全局异常处理器,从而避免业务层直接处理异常造成代码污染,达到业务清晰简洁。 描述 在进行分类模块开发时,删除某个分类时当分类关联了菜品和套餐时,是不允许删除的。我们在管理端删除的时候会提示…

基于冠状病毒群体免疫算法优化概率神经网络PNN的分类预测 - 附代码

基于冠状病毒群体免疫算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于冠状病毒群体免疫算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于冠状病毒群体免疫优化的PNN网络5.测试结果6.参考文献7.Matlab代码 …

【kafka】使用docker启动kafka

1.环境准备 docker拉取zookeeper镜像 docker pull zookeeper:3.4.14 创建zookeeper容器,默认端口号为2181 docker run -d --name zookeeper -p 2181:2181 zookeeper:3.4.14 拉取kafka镜像 docker pull wurstmeister/kafka:2.12-2.3.1 创键kafka容器&#xff…

pom.xml格式化快捷键

在软件开发和编程领域,"格式化"通常指的是将代码按照一定的规范和风格进行排列,以提高代码的可读性和维护性。格式化代码有助于使代码结构清晰、统一,并符合特定的编码规范。 格式化可以包括以下方面: 缩进&#xff1a…

Windows安装多个版本的Java

在做持续集成CI/CD时,需要用到Jenkins,本人爱好使用各种最新版,down下来之后发现,新版只支持Java11以上的版本了!! 苦苦找了很久,找不到正规Java8版本的Jenkins安装包! 干脆换个思路…

Typecho框架漏洞

这里说的框架漏洞只适用于1.2.0版本及以下的版本 这里说的漏洞是xss漏洞,学过渗透的应该都学过,我在这里就不过多阐述了,下面我们直接进入正题 直接在这个地方插入网址,后面再接上html代码即可,代码如下: …

【接口测试】最细Fiddle抓包辅助接口实战,抓包全过程总结...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、为什么需要抓包…

网页视频下载工具 iTubeGo mac中文版软件特色

iTubeGo YouTube Downloader mac是一款功能强大的YouTube视频下载工具。 iTubeGo YouTube Downloader mac软件特色 多种格式支持:iTubeGo YouTube Downloader可以将YouTube视频下载为多种常见的视频和音频格式,包括MP4、MP3、AVI、FLV、MOV、WMV等&…

系列十、你说你做过JVM调优和参数配置,请问如何盘点JVM系统的默认值?

一、JVM的参数类型 1.1、标配参数 java -versionjava -help 1.2、XX参数 1.2.1、Boolean类型 公式:-XX:或者- 某个属性值 表示开启、-表示关闭 # 是否打印GC收集细节 -XX:PrintGCDetails -XX:-PrintGCDetails# 是否使用串行垃圾收集器 -XX:UseSerialGC -XX:-UseS…

Flutter 中数据存储的四种方式

在 Flutter 中,存储是指用于本地和远程存储和管理数据的机制。以下是 Flutter 中不同存储选项的概述和示例。 Shared Preferences(本地键值存储) Shared Preferences 是一种在本地存储少量数据(例如用户首选项或设置&#xff09…

AI工具合集

网站:未来百科 | 为发现全球优质AI工具产品而生 (6aiq.com) 如今,AI技术涉及到了很多领域,比如去水印、一键抠图、图像处理、AI图像生成等等。站长之家之前也分享过一些,但是在网上要搜索找到它们还是费一些功夫。 今天发现了一…