2.5 Vsftpd服务的部署及优化

1. ftp的安装和使用

ftp(file transfer proto):文本传输协议

安装ftp
服务端vsftp:守护进程
客户端lftp:浏览器

dnf search ftp
dnf install vsftpd lftp -y

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

实验环境

vim /etc/selinux/config
getenforce  ——>  selinux:disabled
systemctl enable --now  vsftpd
systemctl enable --now firewalld
firewall-cmd --permanent  -add-service=ftp
firewall-cmd --reload

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

lftp 192.168.0.17

在这里插入图片描述
ftp默认不允许匿名用户登陆(为了安全)
在这里插入图片描述

2. vsftpd基本信息

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

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

3. 匿名用户访问控制

  1. 匿名用户的登陆控制

修改12行:anonymous_enable=YES,允许匿名用户登陆

vim /etc/vsftp/vsftpd.conf
systemctl restart vsftpd
lftp 192.168.0.17
lftp 192.168.0.17 -u westos

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

扫描二维码关注公众号,回复: 12914629 查看本文章
  1. 匿名用户的家目录控制

匿名用户的默认发布目录是/var/ftp,进行以下的修改
修改第13行:anon_root=/westosdir,用户设定默认发布目录

mkdir /westosdir
touch /westosdir/file1
vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd

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

  1. 匿名用户的上传功能

匿名用户默认不能上传文件

550:服务本身不允许,拒绝
先修改30行:anon_upload_enable=YES,允许用户上传
(这时去 lftp 会提示553:权限过小)
再修改权限,默认发布目录的子目录的拥有组是ftp组
注意!默认发布目录的权限不可以改动!否则,系统会提示权限过大,500

vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
lftp 192.168.0.17
>put /etc/passwd

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

  1. 匿名用户的建立目录功能

修改34行:anon_mkdir_write_enable=YES,允许匿名用户新建目录

vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
lftp 192.168.0.17
>mkdir test

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

  1. 匿名用户的删除控制

添加36行:anon_other_write_anable=YES

vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
lftp 192.168.0.17
>rm -fr test

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

  1. 匿名用户的下载控制

默认下匿名用户不允许下载控制,错误提示550:服务本身不允许
修改:anon_world_readable_only=NO

vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
lftp 192.168.0.17
>get passwd

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

  1. 上传文件的权限控制

之前显示的权限是600,说明umask=077
现在要求显示权限是644,说明umask=022
修改:anon_umask=022

vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
lftp 192.168.0.17
>put /root/Desktop/test1
>ls

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

  1. 用户身份控制

上传文件的用户和组是ftp,
修改53行:chown_username=westos
修改52行:chown_uploads=YES,上传之后,文件的所有人改变
添加56行:chown_upload_mode=0644,修改一下权限,指定上传文件权限
(之前设定的anon_umask=022不生效了)

vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
lftp 192.168.0.17
>put /root/Desktop/test2

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

  1. 登陆个数控制

注意!在ftp服务中可以ls出数据,则证明登陆成功
添加:max_clients=2,连接服务器的个数不能超过2个

vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
lftp 192.168.0.17

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

  1. 上传速率控制

生成大文件

dd if=/dev/zero of=/mnt/bigfile bs=1M count=2000

在这里插入图片描述
进行限速
添加:anon_max_rate=102400,匿名用户的上传速率被控制在每秒钟100M左右

vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
lftp 192.168.0.17
>put /mnt/bigfile

在这里插入图片描述

4. 本地用户的访问

默认访问用户的家目录

lftp 192.168.0.17 -u westos
  1. 本地用户登陆的原因:系统中有个参数
    local_anbale=YES

在这里插入图片描述

修改17行:local_anbale=NO,本地用户不能登陆

vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
lftp 192.168.0.17 -u westos

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

  1. 上传文件权限

修改20行:write_anable=NO,禁止ftp服务提供写功能,匿名用户也不能写
写功能是上传删除等

vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
lftp 192.168.0.17 -u yao
>put /root/Desktop/test1

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

  1. 权限

之前权限默认是644
修改24行:local_umask=077(系统默认保留的权限)

vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
lftp 192.168.0.17 -u westos
>put /root/Desktop/test2
>ls

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

  1. 登陆控制

默认本地用户都可以登陆
现在需要设定用户登陆名单:黑名单,白名单

文件 说明
/etc/vsftpd/ftpusers 永久黑名单
/etc/vsftpd/user_list 临时黑名单(经过设定可以成为白名单)

注意!超级用户一直在黑名单!
在这里插入图片描述
将westos用户写入永久黑名单
在这里插入图片描述在这里插入图片描述
将用户yao写入临时黑名单
在这里插入图片描述在这里插入图片描述
添加132行:userlist_deny=NO,所有用户被拒绝登陆ftp,此时,user_list中的用户可以登陆

vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
vim /etc/vsftpd/user_list
lftp 192.168.0.17 -u westos
lftp 192.168.0.17 -u yao

root虽然也在list中,但是,root依旧无法登陆,因为root在永久黑名单/etc/vsftpd/ftpusers
在这里插入图片描述在这里插入图片描述在这里插入图片描述

  1. 家目录控制
mkdir /westosdir
touch /westosdir/file1

所有本地用户的默认发布目录都在/westosdir
添加18行:local_root=/westosdir,设定本地用户家目录
注释#参数,本地用户登陆的是自己的家目录

vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
lftp 192.168.0.17 -u westos
>ls

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

  1. 本地用户家目录的访问控制

默认情况下,匿名用户不能查看根目录
但是,本地用户是可以查看根目录,因为开放了除了家目录的其他目录的浏览权限
需要禁止这种权限
在这里插入图片描述在这里插入图片描述

修改106行:chroot_local_user=yes,安全级别提升,不允许查看根目录,也可能会造成不允许登陆
拒绝登录的应对措施:chmod u-w /home/*,删除写权限,否则,不能访问

vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
lftp 192.168.0.17 -u westos
>ls

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

修改106行:chroot_local_user=no,是默认允许用户访问根目录,锁定用户到自己的家目录中,使用户不能浏览根目录
修改107行:chroot_list_enable=YES,名单功能开启,可以指定黑名单,写入不允许查看根目录的用户
修改109行:chroot_list_file=/etc/vsftpd/chroot_list,黑名单

vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
lftp 192.168.0.17 -u westos
>ls

编辑黑名单,写入用户westos

touch /etc/vsftpd/chroot_list
vim /etc/vsftpd/chroot_list

lftp后,不能查看根目录,会被锁定到默认发布的家目录
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

以上是默认设置

修改106行:chroot_local_user=yes
修改109行:chroot_list_file=/etc/vsftpd/chroot_list,现在 /etc/vsftpd/chroot_list白名单
此时,白名单里没有写入用户,因此所有用户都不能查看根目录,写入westos后,westos可以查看根目录

vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
lftp 192.168.0.17 -u westos
>ls

在这里插入图片描述在这里插入图片描述
写入westos到白名单/etc/vsftpd/chroot_list中
在这里插入图片描述在这里插入图片描述

5. 虚拟用户

5.1 虚拟用户认证

以上本地用户都是真实存在的

虚拟用户的概念可以类比,自己的邮箱就不可能是服务器的本地用户

设定行为规范rule
认证程序pam(看管人)
(etc/pam.d
插件.so

  1. 制作认证名单
vim /etc/vsftpd/virt_users

写入的格式如下:
user1
123
user2
123
加密该文件,否则不生效

db_load -T -t hash -f /etc/vsftpd/virt_usres /etc/vsftpd/virt_usres.db

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

  1. 制定规则rule

(谁通过什么样的规则去验证)
查看格式规范

vim /etc/pam.d/vsftpd

required:如果用户名和密码错误,直接拒绝登陆
在这里插入图片描述

vim /etc/pam.d/virt_user
账号 认证方式 认证插件 认证文件
account required pam-userdb.so db=/etc/vsftpd/virt_user
密码 验证方式 验证插件 验证对比文件
auth required pam_userdb.so db=/etc/vsftpd/virt_user

在这里插入图片描述

  1. 写配置文件

修改131行:pam_service_name=virt_user
修改132行:userlist_enable=YES
修改133行:guest_enbale=YES
修改134行:guest_username=ftp

vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
lftp 192.168.0.17 -u user1
lftp 192.168.0.17 -u user2

在这里插入图片描述

  1. 测试

user1 user2 登陆成功
在这里插入图片描述在这里插入图片描述

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

家目录都在默认发布目录中,应该每个人都有个独立的家目录

mkdir -p /ftphomedir/user{1..2}/pub

登陆谁,家目录就应该是谁的家目录
在这里插入图片描述

编辑配置文件
引入变量:echo $USER
添加136行:local_root=/ftphomedir/$USER
添加137行:声明设定,user_sub_token=$USER,这个变量是shell中的变量,在vim中是不识别的,需要声明一下

vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
lftp 192.168.0.17 -u user1
lftp 192.168.0.17 -u user2

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

5.3 用户配置独立

之前的所有虚拟用户的配置文件都是主配置文件
在这里插入图片描述

设定虚拟用户的默认发布目录的ftp组身份,修改权限

chgrp ftp /ftphomedir/user{1,2}/pub 
chmod 775 /ftphomedir/user{1,2}/pub 

在这里插入图片描述删除之前的主配置文件设定的权限
在这里插入图片描述在这里插入图片描述建立虚拟用户对应的配置目录
建立虚拟用户对应的配置文件
配置文件的名字一定和用户名字一样

mkdir /etc/vsftpd/userconfdir
vim /etc/vsftpd/userconfdir/user1

在这里插入图片描述在这里插入图片描述在这里插入图片描述
编辑主配置文件
添加138行:user_config_dir=/etc/vsftpd/userconfdir,虚拟用户的配置目录

vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
lftp 192.168.0.17 -u user1
lftp 192.168.0.17 -u user2

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

猜你喜欢

转载自blog.csdn.net/weixin_47133613/article/details/113922836
2.5