Vsftpd 服务的部署及优化

1 实验环境

1)server主机:

  • 主机名:ftp_server
  • ip:172.25.254.136
  • selinux:关闭
  • 火墙开启
  • dnf安装设定完成

2)client主机:

  • 主机名:localhost
  • ip:172.25.254.36
  • selinux:关闭
  • dnf安装设定完成
  • 安装lftp(协议文本浏览器)

2 ftp介绍

ftp : file transfer proto
互联网中最老牌的文件传输协议;ftp允许用户以文件操作的方式与另一台主机相互通信。实际上,用户并不真正登陆到自己想要存取的计算机上而成为完全用户,可用ftp访问远程资源,实现用户往返传输文件,即使双方计算机可能配置不同的操作系统和文件存储方式。其主要目标就是提高文件共享性

3 vsftpd安装与启用

1)在服务端输入 dnf install vsftpd.x86_64 lftp.x86_64 -y安装ftp服务软件和本地访问软件 :
在这里插入图片描述

2)在客户端输入 dnf install lftp -y 只安装访问软件:
在这里插入图片描述

3)确保selinux是关闭状态:
在这里插入图片描述

4)开启vsftpd,添加火墙策略:
在这里插入图片描述

5)服务配置好后,此时默认是不允许匿名用户访问的,需要编辑/etc/vsftpd/vsftpd.conf主配置文件,在12行处允许匿名用户访问改为yes,重启服务:
在这里插入图片描述在这里插入图片描述

6)此时使用lftp ip或在浏览器输入ftp://ip,均可访问成功:
在这里插入图片描述在这里插入图片描述
注意:使用lftp://ip,然后输入ls能列出资源,才算登陆成功,quit或exit可退出ftp,默认能够登陆ftp的最大个数为50,登陆是指重新开一个shell

扫描二维码关注公众号,回复: 12816786 查看本文章

4 vsftpd基本信息

基本信息 含义
vsdtpd.service 服务名称
/etc/vsftpd 配置目录
/etc/vsftpd/vsftpd.conf 主配置文件
/var/ftp 默认发布目录
报错信息 含义
550 程序本身拒绝
553 文件系统权限限制
500 权限过大
530 认证失败

5 用户访问控制

用户访问分为匿名用户访问和本地用户访问。当访问时输入“lftp 172.25.254.136”,没有加入用户认证,表明是匿名用户,默认访问的是发布目录;访问时,输入“lftp 172.25.254.136 -u westos”,写了用户表示本地用户访问,默认访问的是用户家目录。

5.1 匿名用户访问

1)登陆控制,anonymous_enable=YES|NO,表示是否允许匿名用户使用ftp登陆,在前面已经设定过,也看到了效果
2)家目录控制,anon_root=/westos,表示更改匿名用户的默认发布目录为/westos,更改前要确保该目录存在,更改完成后重启服务,再重新登陆就会看到/westos目录下的内容,表示默认发布目录修改成功:
在这里插入图片描述
在这里插入图片描述

3)上传控制,anon_upload_enable=YES|NO ,表示是否允许匿名用户上传文件。未修改该参数就上传文件会报错550,表示程序本身拒绝;该参数在修改为yes后,去上传文件会报553的错误信息,表示文件系统没有权限。所以要先修改权限,输入“chgrp ftp /var/ftp/pub”和“chmod 775 /var/ftp/pub”命令,表示修改pub目录的组为ftp,发布目录下pub目录的权限为775。开放权限后,再去上传文件即可成功。注意此处不可直接更改默认发布目录的权限,只能去修改它下面的子目录的权限:
在这里插入图片描述在这里插入图片描述

4)目录建立控制,anon_mkdir_write_enable=YES|NO ,表示是否允许匿名用户建立目录。同样的在为修改该参数前直接建立目录,会报错550,修改该参数为yes后,重启服务即可建立目录:
在这里插入图片描述在这里插入图片描述

5)下载控制,anon_world_readable_only=NO,表示匿名用户可以下载不能读的文件,默认匿名用户不允许下载文件,修改完成后重启服务:
在这里插入图片描述在这里插入图片描述

6)删除重命名控制,anon_other_write_enable=YES|NO ,表示匿名用户是否可以对目录中的内容删除和重命名,默认是不允许的,修改完成后重启服务:
在这里插入图片描述在这里插入图片描述

7)匿名用户上传文件权限设定,anon_umask=022 ,表示上传文件的预留权限为 022 ,也就是实际的权限是644;默认情况下匿名用户上传文件时的预留权限是077,也就是实际的权限是600。注意当设定了chown_username之后上传文件权限将不再是使用此参数设定:
在这里插入图片描述在这里插入图片描述

8)匿名用户上传文件的用户身份设定,修改
“chown_upload=YES”和“chown_username=liu”参数,表示用户上传文件时使用liu这个用户身份,默认情况下匿名用户上传文件是以 ftp 用户身份上传:
在这里插入图片描述在这里插入图片描述

由于设定了chown_username参数,所以前面的anon_umask=022参数便失效,可以看到上传文件的预留权限仍然为 077,此时可以指定用户上传文件时的权限chown_upload_mode=0644,再次上传文件时,所上传的文件权限就会改变:
在这里插入图片描述在这里插入图片描述

9)登陆数量控制,max_clients=2表示该服务能连接的最大数量为2。默认是没有登陆数量限制的,为了防止因登陆人数过多而造成服务器崩溃,可以对该服务的登陆进行数量控制,修改完成后重启服务 :
在这里插入图片描述
当登陆人数超过两个时,会显示如下信息,注意,可以使用同一个主机,开启多个shell,分别登陆,超过两个时,就会显示以下信息:
在这里插入图片描述

10)上传速率控制,anon_max_rate=102400表示将匿名用户上传速率控制在100k左右,默认匿名用户上传文件是没有速率控制的,这会造成系统调用最大的资源去完成这个任务。为了防止资源过渡浪费,可以对匿名用户上传速率进行限制,修改完该参数后,上传速率会慢慢下降到100左右。就像百度网盘的下载速率控制一样,修改完成后重启服务:
截取一个文件,再没有限制时上传,速率很快,达到M/s:
在这里插入图片描述
设置参数:
在这里插入图片描述
上传速率逐渐减小,知道到达100k/s左右:
在这里插入图片描述

5.2 本地用户访问

1)输入“lftp 192.168.122.200 -u westos”“命令,使用本地用户登录,本地用户登录时默认登录的是本地用户的家目录:
在这里插入图片描述
2)登录控制,local_enbale=YES|NO,表示是否允许本地用户访问,默认本地用户是可以登录的,修改配置文件使得本地用户登录限制:
在这里插入图片描述在这里插入图片描述

3)家目录控制,local_root=/westosdir ,默认的本地用户进入后,看到的是/home/westos家目录中的内容,修改该参数后,会进入修改后的目录,该目录必须存在:
在这里插入图片描述在这里插入图片描述

4)写权限控制,write_enable=YES|NO,表示本地用户是否可写,默认情况下本地用户是可以上传文件的,修改该参数可以禁止该服务对本地用户提供写权限,修改后匿名用户也将没有写权限:
在这里插入图片描述在这里插入图片描述

5)上传文件权限控制,local_umask=022,022是默预留权限,即实际上文件的权限是644,可修改预留权限为077,此时实际上文件权限是600:
在这里插入图片描述在这里插入图片描述

6)用户登陆控制,本地用户默认可以访问 ftp 服务,可以限制本地用户的登录权限,可以设置黑白名单:
在这里插入图片描述

  • vim /etc/vsftpd/ftpusers,表示永久黑名单,优先级最高:
    在这里插入图片描述在这里插入图片描述

  • vim /etc/vsftpd/user_list ,默认黑名单或临时黑名单:
    在这里插入图片描述在这里插入图片描述

当在配置文件中设置了userlist_deny=NO之后,此时默认黑名单变成白名单,但永久黑还是永久黑,即使他的用户名在白名单中也无法登陆,因为永久黑的优先级更高 :
在这里插入图片描述在这里插入图片描述在这里插入图片描述

7)锁定用户到自己的家目录中,输入“chmod u-w /home/*”命令,然后设置参数chroot_local_user=YES,默认情况下本地用户登陆后可以访问根目录,但是这样会使得系统的安全性降低,所以要锁定用户,锁定后再去进入根目录时,会显示家目录里面的内容。但此是不会报错,这是因为限制了家目录写的权限,此时登录便不会报错:

  • 没有设置该参数前,可以进入根:
    在这里插入图片描述
  • 设置该参数及家目录写权限限制后:
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

8)上面所示的锁定用户到自己家目录默认会锁定所有本地用户,造成影响,所以可以设定锁定用户到自己家目录中的黑白名单
锁定用户到自己家目录中的黑名单,
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
需要先建立 /etc/vsftpd/chroot_list文件,然后编辑该文件 vim /etc/vsftpd/chroot_list,将黑名单用户加入,加入后该用户无法访问自己的根,但其他未在该名单中的用户可访问根:
在这里插入图片描述在这里插入图片描述在这里插入图片描述

9)锁定用户到自己家目录中的白名单,
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
若/etc/vsftpd/chroot_list文件存在,则编辑 vim /etc/vsftpd/chroot_list文件,将用户白名单用户加入该文件,加入后该用户可以访问自己的根,但其他未在该名单中的用户不可访问根,若该文件不存在,则建立后,再进行下面的操作:
在这里插入图片描述在这里插入图片描述在这里插入图片描述

6 虚拟用户访问

登录 ftp 服务时,匿名用户管理起来费时费力,也不能全都建立为本地用户,为了解决这些文件,可以建立虚拟用户。

6.1 建立虚拟用户

1)在/etc/vsftpd目录下建立认证文件模板,文件名称自定义,文件中的内为用户名和密码用户名密码各一行,中间不能有空格,否则会被识别为字符:
在这里插入图片描述

2)加密认证文件,其中-T表示加秘,-t表示加密方式,-f 表示指定转换文件,加密完后,该目录下会有认证文件和.db加密认证文件:
在这里插入图片描述

3)书写认证规则,必须在/etc/pam.d/目录下,文件名自定义。该文件的书写格式如下图所示,其内容分别表示

  • 账号 验证方式 认证插件 验证对比文件
  • 密码 验证方式 验证插件 验证对比文件

db=/etc/vsftpd/virt_users表示从加密认证文件中对比,该文件后面不需要加.db,因为默认后面是.db,若加就表示db=/etc/vsftpd/virt_users.db.db,是错误的:
在这里插入图片描述

4)编辑/etc/vsftpd/vsftpd.conf文件

  • pam_service_name=virt_users ,表示ftp所读取的认证策略文件
  • guest_enable=YES ,表示虚拟用户功能开启
  • guest_username=ftp,表示虚拟用户的身份
    在这里插入图片描述

5)设置完后虚拟用户访问的是默认的发布目录:
在这里插入图片描述

6.2 虚拟用户家目录的独立设定

1)虚拟用户访问目录是默认的发布目录,给每个虚拟用户建立各自的发布目录,在每个用户的发布目录中建立不同的文件,便于观察实验效果:
在这里插入图片描述

2)编辑主配置文件

  • local_root=/ftpuserdir/$USER,指定虚拟用户家目录
  • user_sub_token=$ USER,声明$USER是变量而不是字符串

在这里插入图片描述

3)此时虚拟用户就可以登陆自己的发布目录了,但是虚拟用户对自己的目录和/pub目录没有权限的,设置目录权限后,就可以拥有和匿名用户一样的权限也就是说虚拟用户属于特殊的匿名用户,匿名用户有的权限,虚拟用户也有:
在这里插入图片描述
有目录权限后,虚拟用户就可以拥有和匿名用户一样的权限:
在这里插入图片描述

6.3 用户配置独立

1)注意做完上面的配置后,虚拟用户会拥有和匿名用户一样的权限,所以此时需要注释对匿名用户的权限:
在这里插入图片描述

2)注释后可以看到虚拟用户的权限就被限制了,那么同时虚拟用户相应的权限也会被限制:
在这里插入图片描述

3)如果想使某个虚拟用户有某种权限,可以在 /etc/vsftpd/ 目录中新建一个目录用于存放单个用户的配置文件。编辑主配置文件,在里面添加内容如下,表示设置所有虚拟用户的配置目录:
在这里插入图片描述
设置完后此时没有配置过用户的配置文件,虚拟用户仍然没有权限:
在这里插入图片描述

4)可以在新建的用户配置目录下建立单独的用户配置文件,该文件名同用户名一致,在该文件中单独输入某个用户所要拥有的权限:
在这里插入图片描述
此时未经设定的用户就不会有该权限,这样就使得用户权限独立起来:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_54719086/article/details/115015839