vsftpd 配置-使用虚拟账户登录

概述

vsftpd 支持三种账户类型登录 ftp,分别是:匿名用户、系统账户、虚拟账户

匿名用户

默认 vsftpd 是支持匿名用户的,该用户登录 ftp 服务使用 anonymous 用户直接登录,不需要输入密码。

系统账户

可以使用 Linux 系统本身存在的用户,作为 ftp 用户,具体哪些用户可以登录 ftp,可以通过配置文件指定。

虚拟账户

虚拟用户的特点是只能访问服务器为其提供的FTP服务,而不能访问系统的其它资源。所以,如果想让用户对FTP服务器站内具有写权限,但又不允许访问系统其它资源,可以使用虚拟用户来提高系统的安全性。

说明:所有虚拟用户在登录过程中会被隐射成同一个系统账户,所以所有的虚拟账户拥有相同的系统权限,如果想区分匿名用户的权限,默认情况是无法实现的。

环境及目标

VMWare 虚拟机,Ubuntu20.04 64位,vsftpd-3.0.3

目标是搭建一个ftp,可以使用虚拟用户 vuser1 登录 ftp。

搭建过程

# 安装 vsftpd
apt install -y vsftpd
# 找到 pam_userdb.so 位置,后续配置会用到
find / -name pam_userdb.so

建立虚拟宿主用户。

虚拟用户并不是系统用户,也就是说这些 ftp 的用户在系统中是不存在的。他们的总体权限其实是集中映射在一个系统用户身上,所谓 vsftpd 的虚拟宿主用户,就是这样一个支持着所有虚拟用户的宿主用户。执行以下命令将虚拟用户映射在 virtusers 这个用户上。

# -d 指定账户的 home 目录
# -s 指定系统用户登录的 shell,nologin 即不允许系统 login 登录。
# 使用 nologin 可以增强安全性
useradd -d /data/ftproot virtusers -s /sbin/nologin

建立 ftp 相关工作目录,以及权限管理。

最新版 vsftpd 不允许用户主目录有 w 权限,因此在主目录下新建一个子目录。所有上传、下载、删除、重命名等操作只能在子目录中进行,虚拟用户 vuser1 的 ftp 目录是 /data/ftproot/vuser1/,没有 w 权限,设置权限为 500,以下是相关目录权限设置参考。

# 此处采用目录结构树的形式展现个子目录权限

/data                                       #数据目录,便于后期数据备份
└── [drwxr-xr-x]  ftproot                   #FTP服务目录
    └── [dr-x------]  vuser1                #虚拟用户主目录,后期可以增加vuser2、vuser3...
        └── [drwxr-xr-x]  rootdir           #虚拟用户FTP工作目录,可以在此目录读写操作
# 创建相关目录。
mkdir -p /data/ftproot/vuser1/rootdir

# 进行权限设置。
chown -R virtusers.virtusers /data/ftproot
chmod 500 /data/ftproot/vuser1

配置虚拟用户

# 创建文件,用于存储虚拟账户名称及对应密码
vi /etc/vsftpd/vuserlist

# 虚拟用户列表的内容
# 奇数行为用户名,偶数行为用户密码
vuser1
123456

用系统的 db_load 工具来生成 db 文件,出于安全角度修改 vuserlist.db 为 600 权限。
如果没有这个工具可以通过以下命令安装。

apt install -y db-util

db_load -T -t hash -f /etc/vsftpd/vuserlist /etc/vsftpd/vuserlist.db
chmod 600 /etc/vsftpd/vuserlist.db

修改 PAM 验证。

修改 */etc/pam.d/vsftpd,这个文件名与 /etc/vsftpd.conf 中的 pam_service_name=vsftpd 相对应。注释掉所有参数,在最后面加入以下两行内容。

# 注意:需要清除除注释外的所有内容,包括默认生成的以 @ 等开头的内容

auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuserlist
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuserlist

创建及配置虚拟用户的配置文件。

# 创建虚拟用户的配置文件
mkdir /etc/vsftpd/vuser_conf/

# 配置虚拟用户的配置文件
vi /etc/vsftpd/vuser_conf/vuser1

# 添加以下配置信息
local_root=/data/ftproot/vuser1
anon_upload_enable=YES
anon_world_readable_only=NO
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

配置 vsftpd 的 vsftpd.conf 主配置文件。

listen=YES                                     #开启IPv4监听
listen_ipv6=NO                                 #关闭IPV6监听
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
pam_service_name=vsftpd                        #如果前面/etc/pam.d/vsftpd没有改文件名,就不修改
virtual_use_local_privs=YES                    #虚拟用户使用本地用户的权限
guest_enable=YES                               #开启虚拟用户
guest_username=virtusers                       #指定虚拟用户的宿主用户user_config_dir=/etc/vsftpd/vuser_conf         #指定虚拟用户配置文件

记得创建 /etc/vsftpd/chroot_list,否则会报错。

touch /etc/vsftpd/chroot_list

解释说明

chroot_local_user 和 chroot_list_file 两个配置项是配合使用的。

chroot_local_user=YES 时,只有 chroot_list_file 中指定的用户才能够 chroot,其他用户禁止 chroot

chroot_local_user=NO 时, chroot_list_file 中指定的用户禁止 chroot,其他用户可以 chroot

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值