Vsftpd 服务的部署和优化

实验环境

  • server 主机:
    192.168.122.200
    selinux 关闭
    火墙开启
    dnf 安装设定完成
  • client 主机:
    192.168.122.1
    selinux 关闭
    dnf 安装设定完成
    安装 lftp #ftp 协议文本浏览器

1. ftp 介绍

ftp : file transfer proto
互联网中最老牌的文件传输协议

2. vsftpd 安装及启用

  • dnf install vsftpd -y ##server

  • dnf install lftp -y ##client (可以用浏览器来浏览 ftp ,也可以用工具来浏览)

  • 关闭selinux

  • systemctl enable --now vsftpd

  • firewall-cmd --permanent --add-service=ftp

  • firewall-cmd --reload

  • vim /etc/vsftpd/vsftpd.conf
    第12行 anonymous_enable=YES ##启动匿名用户的访问功能

  • systemctl restart vsftpd

测试:

  1. firefox ftp://ip
  2. lftp ip
    ##此访问方式必须能列出资源才算访问成功
    ##在使用完成后请输入 exit 或者quit 退出 lftp。

在客户端输入命令 dnf install lftp -y 在客户端安装访问软件;

在服务端输入命令 dnf install vsftpd lftp -y 在服务端同时安装服务软件和文本访问软件;用于实验的测试;
输入命令 getenforce ,检测selinux 的状态;当为 disabled 时则不用在做设置,当为 Enforcing 时需要在配置文件 /etc/selinux/config ,修改为 disabled;然后重启系统。

在这里插入图片描述

在重启系统之后,
输入命令 systemctl enable --now vsftpd 开启服务;
输入命令 systemctl status firewalld 查看火墙状态;
输入命令 firewall-cmd --permanent --add-service=ftp ,在火墙策略中添加 ftp 服务;
输入命令 firewall-cmd --reload,重新加载让设置的策略生效;并输入命令对策略进行查看;

在这里插入图片描述

当安装好服务和设置好火墙策略之后,此时默认是不能用 ftp 的方式连接开启服务的主机;不论是网页访问还是命令方式都不可以;因为默认是不允许匿名用户访问。

在这里插入图片描述
此时可以对 ftp 的配置文件 /etc/vsftpd/vsftpd.conf 进行修改,让其允许匿名用户登录,修改内容如图所示:

在这里插入图片描述

当修改完成之后,输入命令 systemctl restart vsftpd 重启服务,此时不管是命令方式访问还是网页方式访问都可以成功访问;如下图所示:

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

3. vsftpd 基本信息

  • 服务名称: vsftpd.service
  • 配置目录: /etc/vsftpd
  • 主配置文件: /etc/vsftpd/vdftpd.conf
  • 默认发布目录:/var/ftp

如图所示,当在 /var/ftp/目录中新建文件时,再次登录即可看到新建的信息,即可说明问题。

在这里插入图片描述

  • 报错信息:
    550 ##程序本身拒绝
    553 ##文件系统权限限制
    500 ##权限过大
    530 ##认证失败

4. 匿名用户访问控制

  • lftp 192.168.2.10 ##当访问 ftp 服务时没有加入用户认证为匿名用户访问,匿名用户默认访问的是发布目录;
  • lftp 192.168.0.10 -u westos ##加入用户时为本地用户访问,本地用户默认访问的是该用户家目录的内容;

通过对主配置文件内容的修改来对以下信息进行控制:

  1. 登录控制
    anonymous_enbale=YES|NO ,YES 时为允许匿名用户登录,NO 时为不允许匿名用户登录;

  2. 家目录控制
    anon_root=/westosdir ,更改匿名用户的发布目录;

在默认情况下匿名用户的发布目录为 /var/ftp/ ,可以在主配置文件中加入如图所示的参数,即可将默认发布目录更改为 /linux ,更改为此目录的前提是该目录一定要存在。

在这里插入图片描述

如图所示,在更改之前发布目录默认为 /var/ftp/ ,更改之后为 /linux ;在对配置文件更改之后,一定要重启服务才能更新配置文件的内容。

在这里插入图片描述

  1. 上传控制
    anon_upload_enable=YES|NO ,YES 时允许匿名用户上传文件,NO时为不允许匿名用户上传文件;默认情况下匿名用户不能上传文件。

将发布目录更改为默认情况下,再做这一步实验。

chmod 775 /var/ftp/pub
chgrp ftp /var/ftp/pub
lftp 192.168.0.100
cd /pub
put /etc/passwd

默认情况下匿名用户不允许上传文件,再将配置文件更改为如图所示内容之后,表示允许匿名用户上传文件;

在这里插入图片描述
如图所示更改了配置文件内容之后,匿名用户还是不能上传文件,报错由之前的 550 服务本身不允许,更改为 553 文件权限限制;

在这里插入图片描述
由于 ftp 对于文件权限的管理非常严格;而 /var/ftp/pub/ 目录的权限为只对于超级用户可写,所以在该目录中上传文件时还是报错了。
可以将 /var/ftp/pub/ 的组修改为 ftp ,然后在修改权限,给组执行的权限;此时再上传时就不会在有问题了。

在这里插入图片描述
:此处不能更改默认发布目录的权限,只能更改发布目录的子目录的权限。如果更改默认发布目录的权限,很可能会登录失败。

  1. 目录建立控制
    anon_mkdir_write_enable=YES|NO ,YES 时允许匿名用户新建目录,NO 时为不允许匿名用户新建目录;默认情况下匿名用户不能新建目录。

虽然通过对配置文件的修改,匿名用户可以上传文件,但是却不能新建目录;将配置文件内容更改为如图所示内容之后,表示允许匿名用户可以新建目录;

在这里插入图片描述
如图所示,在更改之前默认为 550 报错,更改之后为便可以新建目录。

在这里插入图片描述

  1. 下载控制
    anon_world_readable_only=NO ,当设置为 NO 时匿名用户可以下载不能读的文件。

默认情况下匿名用户不允许下载文件,再将配置文件更改为如图所示内容之后,表示允许匿名用户下载文件;

在这里插入图片描述
如图所示,在更改之前下载时就会提示 550 报错,更改之后便可以下载。

在这里插入图片描述

  1. 删除重命名控制
    anon_other_write_enable=YES|NO ,当为 YES 时表示匿名用户可以对目录中的内容删除也可以重命名;当设置为 NO 时便没有对应的权限。

默认情况下匿名用户不允许执行删除和重命名,将配置文件更改为如图所示内容之后,表示匿名用户可以执行删除和重命名;

在这里插入图片描述
如图所示,在更改之前删除文件时默认为 550 报错,更改之后为便可以删除。

在这里插入图片描述

  1. 匿名用户上传文件权限设定
    anon_umask=xxx
    anon_umask=022 ,表示上传文件的预留权限为 022 ;当设定 chown_username 之后上传文件权限将不再是用此参数设定。

默认情况下匿名用户上传或者新建文件时的预留权限都为077,将配置文件更改为如图所示内容之后,表示匿名用户上传文件的预留权限为 022;

在这里插入图片描述

如图所示,在更改之前上传文件的权限为 600 ,更改之后上传文件的权限为 644。

在这里插入图片描述

  1. 匿名用户上传文件的用户身份设定

chown_upload=YES
chown_username=lee
chown_upload_mode=0644 ##指定上传文件的权限。

默认情况下匿名用户上传文件用的是 ftp 组的身份,将配置文件更改为如图所示内容之后,表示用户上传文件用的是指定用户的身份 ;

在这里插入图片描述

如图所示,在更改之前用的是 ftp 的身份,更改之后便是用指定用户的身份上传;

在这里插入图片描述

虽然已经更改为指定用户的身份上传,但是此时上传文件默认的预留权限仍然为 077,修改配置文件的内容如图所示,表示指定用户再上传时用指定的权限上传;

在这里插入图片描述如图所示,在修改完配置参数之后,上传文件的权限为 644。

在这里插入图片描述
:当设定 chown_username 的上传文件权限之后,匿名用户的预留权限将不再用 umask 来设定。

  1. 登录数量控制
    max_clients=2

默认情况下该服务登录基本上没有数量控制,但是如果服务器的运行有限,如果不对其做一定的限制,可能会导致服务器崩溃;当修改配置文件的内容如图所示时,表示 ftp 服务能够接受链接的最大数量为 3 个 ;

在这里插入图片描述

如图所示,当设置完重启服务之后,当登录数量超过设置时,会出现如图所示的提示。

在这里插入图片描述

  1. 上传速率控制:
    anon_max_rate=102400

如图所示默认情况下,匿名用户上传没有限制,会配置最大的资源来供其使用;这对于企业来说是很可怕的,所以应该对匿名用户的上传速率加以控制;

在这里插入图片描述
修改配置文件的内容如下,对上传速度加以控制,表示匿名用户上传的最大速度为 100k;

在这里插入图片描述
在修改完配置文件的内容之后,重启服务,在上传时可以看到其速度在 100k 左右。
在这里插入图片描述

5. 本地用户的访问

新建用户,为后面实验打基础
输入命令 useradd zxk ,useradd kkk 新建两个用户,用户名称分别为 zxk 和 kkk ;并为这两个用户设定密码。

输入命令 lftp 192.168.122.200 -u zxk,用本地用户 zxk 登录,本地用户登录时默认登录的是本地用户的家目录;zxk 用户必须是本地用户,密码是该用户登录系统的密码;
输入命令 lftp 192.168.122.200 -u kkk ,用本地用户 kkk 登录。

在这里插入图片描述

  1. 登录控制
    local_enbale=YES|NO ,默认情况下,本地用户是可以登录的,但是当修改配置文件的内容如图所示时,本地用户便被限制登录;

在这里插入图片描述
如图所示在修改之后,本地用户便不能在登录 ftp 服务。

在这里插入图片描述

  1. 家目录控制
    local_root=/software ,本地用户登录时默认登录的是本地用户的家目录,可以通过对配置文件的修改来更改家目录的控制;此更改的目录必须存在;

如图所示,在更改配置文件的内容之后,修改内容为 local_root=/linux ,设定本地用户的加目录为 /linux ,重启服务之后,再次用本地用户登录时便可以看到更改后目录中的内容。

在这里插入图片描述

  1. 写权限控制
    write_enable=YES|NO,默认情况下本地用户是可以上传文件的,通过对配置文件的更改来禁止 ftp 提供写的功能。

如图所示,当更改配置文件内容为如图所示时,表示禁止 ftp 提供写的功能;

在这里插入图片描述
如图所示,在更改之前,本地用户是可以上传文件的,当修改配置文件之后,本地用户和匿名用户便都没有上传文件的权限。

在这里插入图片描述

  1. 上传文件权限控制
    local_umask=077

默认情况下本地用户在上传文件时的预留权限为 022 ,可以通过对配置文件内容的更改,来修改文件上传时的预留权限。如图所示修改预留权限为 077;

在这里插入图片描述

如图所示,在修改之前上传的文件权限为 644,修改之后重启服务,此时再上传的时候文件的权限为 600。

在这里插入图片描述

  1. 用户登陆控制
    默认情况下本地用户都可以登录 ftp 服务,现在要限制本地用户的部分登录权限,就要用到黑白名单。

/etc/vsftpd/ftpusers #永久黑
/etc/vsftpd/user_list #默认黑

在 /etc/vsftpd/ 中有两个黑名单文件,其中 ftpusers 是永久黑, user_list 是临时黑名单 。

当在永久黑中添加本地用户之后,此时该用户便不能在登录 ftp ,而没有在黑名单的用户还可以登录;

在这里插入图片描述
去掉永久黑,在临时黑中添加用户和永久黑的结果一样,只要在用户黑名单中便不能登录。

在这里插入图片描述

  1. 用户登陆白名单
    userlist_deny=NO
    设定 /etc/vsftpd/user_list 为白名单
    不在名单中的用户不能登录 ftp

黑名单是只要在黑名单中的用户不能登录,默认用户还可以登录;而参数的更改后,黑名单变为白名单,没在黑名单中的默认用户不能使用 ftp 登录,只有在 user_list 黑名单中的用户可以登录。

如添加第 138 行的信息如图所示,表示在黑名单开启的条件下,否定黑名单作用关闭,黑名单成为白名单。

在这里插入图片描述

更改之后的效果如图所示,在黑名单中的用户 kkk 可以登录,而不在黑名单中的用户 zxk 不能登录。

在这里插入图片描述

恢复时,只需删除临时黑名单的用户,在配置文件中将加入的信息注释掉就可以了。

  1. 锁定用户到自己的家目录中

chmod u-w /home/*
chroot_local_user=YES

默认情况下本地用户是可以浏览根目录的,但是通过对配置文件的更改,可以使本地用户不能登录根目录,锁定用户到自己的家目录中。

如图修改配置文件内容如下所示:

在这里插入图片描述

如在更改前,本地用户可以访问其他的目录,可以进入到根目录中;当修改配置文件之后重启服务,此时登录都有了 500 的报错,这是因为当用户被锁定到自己的家目录中时,如果家目录有写的权力就会被禁止访问。

在这里插入图片描述

当给家目录减小权力时,减去写的权限,此时再登录时便不会报错,并且会看到进不到根目录中,被锁定在自己的家目录中了。

在这里插入图片描述

  1. 锁定用户到自己家目录中的黑名单
    上面的操作虽然会锁定用户到自己的家目录中,但是默认是锁定当前所有本地用户到自己的家目录中;这样就显得很不方便,如果只是想锁定部分用户到自己的家目录中就要按照接下来的操作设置。
    chroot_local_user=NO
    chroot_list_enable=YES
    chroot_list_file=/etc/vsftpd/chroot_list

默认 /etc/vsftpd/ 目录中只有登录的黑名单,并没有对于特定用户设定的名单,如果要将某些用户锁定到自己家目录中时,需要在该目录中新建立出一个名单。

编辑配置文件,编写配置文件的内容如图所示:第 112 行关闭锁定用户到自己的家目录中,第 113 表示名单的功能开启,不在名单中的用户默认可以浏览根目录,第 115 行表示读取名单的位置,此时该名单为黑名单。

在这里插入图片描述
如图所示,当名单建立成功之后,此时在该名单中写入用户,此处写入的是 kkk 用户,可以看到写入名单中的用户被锁定在了自己的家目录中,而没有写在该名单中的用户可以继续访问根目录;

在这里插入图片描述

在这里插入图片描述

  1. 锁定用户到自己家目录中的白名单
    以上是对于用户黑名单的管理,当然也可以对用户设定白名单,此时只需修改配置文件的内容,黑名单即可成为白名单;
    chroot_local_user=YES
    chroot_list_enable=YES
    chroot_list_file=/etc/vsftpd/chroot_list

编辑配置文件的内容如图所示:第 112 行表示锁定用户到自己的家目录中,当所有用户被锁进自己的家目录中时,此时,此时名单中的用户为白名单用户;第 113 表示名单的功能开启,在名单中的用户默认可以浏览根目录;第 115 行表示读取名单的位置,此时该名单为白名单。

在这里插入图片描述
如图所示,当编辑好配置文件之后,在重启系统之后,名单中的用户还为 kkk ,此时只有 kkk 用户没有被锁定在自己的家目录中,而不在名单中的用户便被锁定在自己的家目录中。

在这里插入图片描述

6. 虚拟用户访问

  1. 建立虚拟用户
    对于在登录 ftp 服务时,都用匿名用户登录管理很不方便,都用本地用户登录也不现实,不可能建立无限多的本地用户,所以通过建立虚拟用户来解决改问题。
  • vim /etc/vsftpd/virt_users 编辑文件,建立认证文件模板,文件名称是自行设定的;此文件中的内容编写规则为:一行用户,一行密码要一一对应起来;
  • 输入命令 db_load -T -t hash -f /etc/vsftpd/virt_users /etc/vsftpd/virt_users.db ,对认证文件进行加密, -T 表示转换,-t 表示加密的类型, -f 表示指定转换文件,最后的 db 文件名称为转换后的文件名;

在这里插入图片描述

  • vim /etc/pam.d/virt_users ,建立认证规则,规则的书写有一定的规范要求,并且文件所在的位置也有要求;
    如图所示为编辑文件的位置和内容,其中两行内容分别代表的含义如下解释:
    账号 验证方式 认证插件 验证对比文件
    密码 验证方式 验证插件 验证对比文件

注:此验证对比文件一定要和认证模板文件名称一致,不然会出现报错问题。

在这里插入图片描述

  • vim /etc/vsftpd/vsftpd.conf ,编辑主配置文件,对服务的读取规则做以设定;编辑内容如下图所示:其中 137 行 pam_service_name=virt_zxk 表示指定认证策略文件,该文件名称一定要对应上;第 139 行 guest_enable=YES 表示指定虚拟用户功能开启;第 140 行 guest_username=ftp 表示指定虚拟用户在 ftp 服务器上的身份;

当设定完以上之后,此时便可以用虚拟用户来登录 ftp 服务,此时的密码为虚拟用户设定的密码,可以看到此时虚拟用户的访问的目录还是默认的发布目录。

在这里插入图片描述

:此处报错只能是 /etc/vsftpd/vsftpd.conf 或者 /etc/pam.d/virt_users 两个文件书写的问题。

  1. 虚拟用户家目录的独立设定
    虚拟用户的访问的目录还是默认的发布目录,可以对虚拟用户的家目录独立设定,使每个用户独立起来。

输入命令为每个虚拟用户建立独自的发布目录,并在不同用户的发布目录中写入不同的文件,以方便观察效果;
然后对配置文件的内容进行编辑,编辑内容如图所示:第 142 表示指定用户家目录, $USER是变量方式的指定 ;第 143 表示声明 $USER 是变量不是字符串;

在这里插入图片描述

编辑完配置文件之后,此时重启服务便可以看到每个用户被锁定在自己的家目录中;

在这里插入图片描述

如下图所示:当主配置文件中开启了匿名用户可以执行的一些操作,并更改虚拟用户发布目录的所有组,并修改发布目录的权限,可以看到此时虚拟机用户可以执行和匿名用户一样的操作;

在这里插入图片描述

以上虚拟用户和匿名用户一样可以拥有一些权限,这是因为配置文件中开启了匿名用户的相应的权限;如图所示,关闭配置文件中匿名用户的权限;

在这里插入图片描述
当关闭匿名用户的权限之后,此时虚拟用户再访问 ftp 服务时,便不在有上传、删除和下载等权限;

在这里插入图片描述
如果要对于某个匿名用户给予一定的权限,此时可以在 /etc/vsftpd/ 目录中新建一个目录;然后编辑配置文件在配置文件中的内容如图所示:写入第 144 行表示设定所有虚拟用户的配置目录为 /etc/vsftpd/userconfdir, 在此目录中与用户名称相同的文件为用户配置文件;此目录必须与新建的目录名称一致。

在这里插入图片描述
在编辑完主配置文件之后,此时匿名用户还是没有获得一定的权限;在虚拟用户的配置目录中写一个与虚拟用户名称一致的文件名称,文件内容为该用户的一些特定权限;
如图所示写入的内容为 anon_upload_enable=YES ,开启了匿名用户上传的权限;但此参数只有在 zxk123 用户登录时才会被识别。

如果别的匿名用户也需要一定的权限,只需要在虚拟用户配置目录中写一个与需要权限用户的名称一致的文件,在该文件中写入赋予该用户的权限即可。

在这里插入图片描述
如下图,赋予权限的用户可以执行特性的操作,而没有权限的用户并不能执行。

在这里插入图片描述

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值