欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

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

发布时间:2023/12/31 编程问答 54 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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-utildb_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。

总结

以上是生活随笔为你收集整理的vsftpd 配置-使用虚拟账户登录的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。