【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.conf
 12 anonymous_enable=no ##配置文件的第12行修改为no

[root@localhost ftp]#systemctl restart vsftpd

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

[root@localhost pub]#vim /etc/vsftpd/vsftpd.conf
 12 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.conf
 12 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.conf
 16 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 ftpusers
 16 lisi
[root@localhost vsftpd]#vim /etc/pam.d/vsftpd
  3 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  ##本地用户

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运维菜鸟XY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值