ftp服务(匿名,本地,虚拟用户的管理)

本文详细介绍了FTP服务的部署,包括服务端和客户端的设置,重点讲解了FTP的安全部署,如匿名用户、本地用户权限管理,以及虚拟用户的身份设定与管理。通过编辑配置文件`/etc/vsftpd/vsftpd.conf`进行各种权限和速率限制的调整,确保FTP服务的安全运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、ftp概念:

FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输, 用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。例如,用户发出一条命令,要求服务器向用户传送某一个文件的一份拷贝,服务器会响应这条命令,将指定文件送至用户的机器上。客户机程序代表用户接收到这个文件,将其存放在用户目录中。

功能:FTP一般应用于上传和下载

vsftpd # 服务端软件
lftp # 客户端软件,提供登陆环境

二、FTP的部署

1.部署ftp服务的服务端:

用虚拟机(node1)当作服务端
在这里插入图片描述
安装 lftp
在这里插入图片描述
开启vsftpd服务,并设置开机自启动
在这里插入图片描述
开启火墙,并添加ftp服务到火墙白名单
在这里插入图片描述
重新加载
在这里插入图片描述
查看,ftp服务已经添加到火墙白名单中
services里有ftp
在这里插入图片描述
使用ftp访问主机(ls查看时有内容显示,则代表登录成功,否则不成功)
在这里插入图片描述

2、关闭selinux

显示Enforcing,则代表没有关闭
在这里插入图片描述
编辑selinux配置文件
在这里插入图片描述
在这里插入图片描述
重启服务器(因为这个修改是内核级的,所以我们需要重启虚拟机)
在这里插入图片描述
查看,修改成功
在这里插入图片描述

3. 客户端部署:

安装lftp
在这里插入图片描述
测试:登录服务器成功(服务器ip:172.25.254.66)
在这里插入图片描述

三、FTP服务的基本信息

1、软件安装包:vsftpd

2、默认发布目录:/var/ftp

3、协议接口:21/tcp

4、服务配置文件:/etc/vsftpd/vsftpd.conf
注意:编辑配置文件后,一定要记得重启服务

5、报错id的解析:
500 文件系统权限过大
530 用户认证失败
550 服务本身功能未开启
553 本地文件系统权限过小

四、FTP的安全部署

通过编辑服务配置文件:/etc/vsftpd/vsftpd.conf,进行安全部署

为了方便后续的测试,给服务端新建一个用户(tom),并设置密码,且在用户家目录下新建文件
在这里插入图片描述

1、匿名用户

anonymous_enable=YES|NO    匿名用户是否可以登陆 (YES为可以登录)
在这里插入图片描述
修改成NO,则匿名用户不能登录
在这里插入图片描述

注意:编辑配置文件后,一定要重启服务.(后面的实验也一样)

systemctl restart vsftpd
在这里插入图片描述
测试:
在这里插入图片描述quit#退出

2、本地用户

(1) local_enable=YES|NO   本地用户是否可以登陆
在这里插入图片描述
在这里插入图片描述
测试:
在这里插入图片描述
(2)write_enable=YES|NO   ftp是否对登陆用户可写
在这里插入图片描述
在这里插入图片描述
测试:
在服务端切换到tom用户并新建file1~file4
在这里插入图片描述
客户端:
删除成功
在这里插入图片描述
若改为write_enable=NO,则不可写

3、匿名用户上传

默认情况下,匿名用户是不能上传的

实现匿名上传的步骤:
(1)编辑配置文件
在这里插入图片描述
在这里插入图片描述
(2)修改匿名用户目录的所有组并给组添加可写的权限

在这里插入图片描述
测试
在这里插入图片描述

4、 匿名用户家目录修改
anon_root=/目录

新建一个目录/hello,并创建文件,若测试端登录后可以直接看到这些文件,则代表家目录修改成功
在这里插入图片描述
在这里插入图片描述
添加anon_root=/hello
在这里插入图片描述
测试:
在这里插入图片描述

5、匿名用户上传文件默认权限修改

anon_umask=xxx
在这里插入图片描述
要注释掉 anon_root=/hello
在这里插入图片描述
测试:
在这里插入图片描述

6、匿名用户建立目录

anon_mkdir_write_enable=YES|NO
在这里插入图片描述
要注释掉 anon_umask=022
在这里插入图片描述
测试:
在这里插入图片描述

7、匿名用户下载

anon_world_readable_only=YES|NO 参数NO表示匿名用户可以下载
在这里插入图片描述
添加
在这里插入图片描述
测试:
在这里插入图片描述
进入真机查看下载成功
在这里插入图片描述

8、匿名用户删除

anon_other_write_enable=YES|NO
在这里插入图片描述
添加anon_other_write_enable=YES
在这里插入图片描述
测试
在这里插入图片描述

9、匿名用户使用的用户身份和权限修改

在这里插入图片描述
在这里插入图片描述
可以看到tom用户的uid是1001
在这里插入图片描述
测试:
在这里插入图片描述

10 最大上传速率

anon_max_rate=102400
截取文件,用于测试上传速率
在这里插入图片描述
不限速情况下上传速率达到很大
在这里插入图片描述
测试:
在这里插入图片描述
将最大上传速率改为102400
在这里插入图片描述
可以看到上传速率很慢

11、最大链接数

max_clients=1 表示最多有1个可以连接
在这里插入图片描述
在这里插入图片描述
测试:
在这里插入图片描述
再重新开启一个shell,进行连接,连接失败
在这里插入图片描述

12、本地用户家目录修改

local root=/directory

本地用户登录,默认进入用户的家目录
在这里插入图片描述
在这里插入图片描述
测试:
在这里插入图片描述
修改本地用户家目录
添加
在这里插入图片描述
在这里插入图片描述

13、本地用户上传文件权限

local umask=xxx
在这里插入图片描述
在这里插入图片描述
测试
在这里插入图片描述

14、限制本地用户登陆

(1)vim  /etc/vsftpd/ftpusers   #用户永久黑名单
在这里插入图片描述
在这里插入图片描述
测试:
在这里插入图片描述
(2)vim  /etc/vsftpd/user list   用户临时黑名单(userlist deny=YES)

15、用户白名单设定

注意: 修改/etc/vsftpd/vsftpd.conf——>userlist deny=NO时
   /etc/vsftpd/user list 就变成用户白名单(只有存在这个文件里的用户才可以登录)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

16、限制本地用户浏览根目录

(1)限制所有用户被锁定在自己的家目录

默认情况下,本地用户可以浏览根目录
在这里插入图片描述
编辑配置文件
在这里插入图片描述
在这里插入图片描述
给本地用户家目录减小权限
在这里插入图片描述
重启服务:(每次更改配置后都要重启服务)
在这里插入图片描述
测试:
本地student被限制浏览根目录
在这里插入图片描述
(2)用户黑名单的建立
编辑配置文件
在这里插入图片描述
NO说明没有将所有本地用户锁在自己的家目录,本地用户都可以自由访问根目录
所以/etc/vsftpd/chroot_list 就变成了黑名单,只有这里边的本地用户不可以浏览目录

在这里插入图片描述
添加用户到黑名单
在这里插入图片描述
在这里插入图片描述
测试:
student用户(在黑名单中),被限制浏览根目录
在这里插入图片描述
tom用户可以正常浏览根目录
在这里插入图片描述

(3)用户白名单的建立
编辑配置文件
在这里插入图片描述
YES说明将所有本地用户锁在自己的家目录,本地用户都不可以自由访问根目录
所以/etc/vsftpd/chroot_list 就变成了白名单,只有这里边的本地用户可以浏览目录

在这里插入图片描述
添加用户到白名单
在这里插入图片描述
在这里插入图片描述
测试:
student用户(在白名单中),可以正常访问根目录
在这里插入图片描述
tom用户不可以正常访问根目录
在这里插入图片描述

五、虚拟用户的管理

(1) 创建虚拟用户认证

建立虚拟用户的原因: 因为系统用户登陆ftp服务,同时也可以登陆系统,这样很不安全,所以我们要建立ftp虚拟用户,使这些用户只能登陆ftp
建立方式:
1、vim /etc/vsftpd/loginusers   名字任意
在这里插入图片描述
编辑内容:一行用户名一行密码,注意编辑的时候不要有空格出现
在这里插入图片描述
2、加密文件:因为文件是明文的,很不安全,所以我们要对其加密
db_load -T -t hash -f xuniyh xuniyh.db
在这里插入图片描述
这里查看文件类型,看到使用的是hash加密
在这里插入图片描述
3、编辑策略文件(验证密码与用户是否一致的文件) 文件名称任意
在这里插入图片描述
account required pam_userdb.so db=/etc/vsftpd/xuniyh
账户 必须通过验证 认证插件 需要被认证的文件
auth required pam_userdb.so db=/etc/vsftpd/xuniyh
密码 必须通过验证 认证插件 需要被认证的文件

在这里插入图片描述

注意:

required表示用户名认证必须正确,否者直接pass
db=/etc/vsftpd/loginusers,后面文件名不能是loginusers.db
如果写成db=/etc/vsftpd/loginusers.db 则实际会将文件识别成loginusers.db.db

4、编辑配置文件
在这里插入图片描述
指定策略文件到配置文件中
pam_service_name=ftpxuni # 指定认定插件(必须和策略文件名称一致)
guest_enable=YES# 虚拟用户认证开启

在这里插入图片描述
编辑配置文件一定要重启服务,后面就不再截图
在这里插入图片描述
测试 :
可以看到虚拟用户创建成功,可以登录
在这里插入图片描述
注意:创建虚拟用户后,本地用户就不能正常登陆了,但是仍然可以指定本地用户身份登陆
(2) 如何指定虚拟用户登录身份
在这里插入图片描述
编辑配置文件
将虚拟用户指定身份设置为student (这里的student必须是服务端已经存在的用户)
在这里插入图片描述
查看student用户家目录下的东西,如果虚拟用户登录时可以看到以下文件,则证明虚拟用户登录身份修改成功修改权限
cd /home/student
在这里插入图片描述
测试 ——>成功
在这里插入图片描述

有可能有时查看时提示 500(权限过大)
只需要将该用户权限变小就可以了
chmod 555 /home/student

(3)虚拟用户家目录的设置
在这三个家目录中分别添加文件(为了验证用户进入的是否是自己的家目录)
在这里插入图片描述
权限加满,方便后续测试
在这里插入图片描述
编辑配置文件
在这里插入图片描述
在这里插入图片描述
注意:
(a)$ USER 相当于c语言中的变量,给不同的值,输出不同的值
(b)user_sub_token=$ USER (将shell中$USER的用法挪到ftp服务中来用)
在这里插入图片描述

(4)虚拟账号配置独立设定

1、 原理: 虚拟用户使用的是匿名用户的参数控制,如果我们想让不同的虚拟用户有不同的权利,就必须给每个虚拟用户设置自己的次配置文件。
2、配置过程如下:
建立虚拟用户的次配置目录及次配置文件
在这里插入图片描述
编辑配置文件
在这里插入图片描述
将匿名用户的上传功能注释掉
在这里插入图片描述
user_config_dir=/etc/vsftpd/user_conf
在这里插入图片描述
编辑次配置文件,在里面写上允许虚拟用户执行的动作
在这里插入图片描述
让虚拟用户可以实现上传功能
在这里插入图片描述
测试:虚拟用户student1可以实现上传功能,而student2不行
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值