找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1378

积分

0

好友

186

主题
发表于 4 天前 | 查看: 11| 回复: 0

FTP(File Transfer Protocol)是一种标准的网络文件传输协议,它使得在客户端与服务器之间上传和下载文件成为可能。

在 Linux 环境中,vsftpd 是一款广泛使用的、开源的 FTP 服务器软件,以其出色的安全性和稳定性著称。本文将以 CentOS 7 系统为例,详细介绍 vsftpd 的安装、配置过程,并重点讲解如何配置更安全的虚拟用户模式。

一、安装 vsftpd

1. 使用 yum 源安装

最便捷的安装方式是使用系统包管理器。在终端中执行以下命令:

yum install vsftpd
2. 其他安装方式

如果您的 yum 源中未包含 vsftpd,可以选择从开源镜像站下载 RPM 包,或从官网获取源码进行编译安装。

二、创建用户

1. 创建系统用户(映射用户)

首先,我们需要创建一个用于映射所有虚拟用户的本地系统用户,并设置其主目录。

# 创建 FTP 文件存储目录
mkdir -p /data/ftproot
# 创建系统用户,指定其主目录并禁止登录 Shell
useradd -d /data/ftproot -s /sbin/nologin ftpuser
# 设置目录权限为 755
chmod 755 /data/ftproot
2. 创建虚拟用户列表

虚拟用户并非真实的 Linux 系统用户,其账户信息存储在独立的数据库中。首先创建用户列表文件:

vi /etc/vsftpd/virtual_users

文件格式为:奇数行为用户名,偶数行为对应密码。
例如,创建 user1user2 两个用户:

user1
password1
user2
password2
3. 生成虚拟用户认证文件

使用 db_load 命令将文本用户列表转换为 Berkeley DB 格式的认证数据库。注意:若后续修改了用户密码,需重新执行此命令。

db_load -T -t hash -f /etc/vsftpd/virtual_users /etc/vsftpd/virtual_users.db
4. 配置 PAM 认证

编辑 PAM 认证配置文件,使 vsftpd 使用我们创建的虚拟用户数据库进行身份验证。

vi /etc/pam.d/vsftpd

注释掉原有的本地用户认证配置,添加以下两行(请确保路径正确):

auth    required pam_userdb.so db=/etc/vsftpd/virtual_users
account required pam_userdb.so db=/etc/vsftpd/virtual_users

三、修改配置文件

1. 修改 vsftpd 主配置文件

主配置文件为 /etc/vsftpd/vsftpd.conf。建议先查看现有有效配置:

grep -v '^#' /etc/vsftpd/vsftpd.conf

根据以下清单修改或确认配置项:

anonymous_enable=NO     # 禁止匿名登录,提升安全性
local_enable=YES        # 启用本地用户模式(虚拟用户基于此)
write_enable=YES        # 允许写操作(上传、创建目录等)
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES              # 以独立守护进程模式监听 IPv4
listen_ipv6=NO          # 关闭 IPv6 监听
pam_service_name=vsftpd # 指定 PAM 配置文件名称
userlist_enable=YES
tcp_wrappers=YES

此外,需要在文件末尾添加以下关键配置,以启用虚拟用户并设置相关参数:

guest_enable=YES        # 启用虚拟用户功能
guest_username=ftpuser  # 指定虚拟用户映射到的本地系统用户
user_config_dir=/etc/vsftpd/virtual_user_conf # 虚拟用户独立配置目录
allow_writeable_chroot=YES # 允许在 `chroot` 禁锢的目录内进行写操作
# 设置被动模式端口范围,便于防火墙规则配置
pasv_min_port=50000
pasv_max_port=50010
2. 为虚拟用户添加独立配置文件

创建虚拟用户的独立配置目录及文件:

mkdir -p /etc/vsftpd/virtual_user_conf
touch /etc/vsftpd/virtual_user_conf/{user1,user2}

为每个用户(如 user1)编辑其配置文件,可以设置个性化的权限和限制。一个基础配置示例如下:

local_root=/data/ftproot  # 指定该用户的根目录
anon_umask=022            # 设置上传文件的默认权限掩码
anon_world_readable_only=NO
anon_upload_enable=YES    # 允许上传
anon_mkdir_write_enable=YES # 允许创建目录
anon_other_write_enable=YES # 允许其他写操作(重命名、删除等)
max_per_ip=1000           # 每个IP最大连接数
max_clients=100           # 总最大客户端数

四、启动 vsftpd 服务

完成配置后,启动 vsftpd 服务并设置为开机自启:

systemctl start vsftpd
systemctl enable vsftpd

检查服务运行状态,确认启动成功:

systemctl status vsftpd

五、开放端口与连接测试

要使 FTP 服务可访问,需在系统防火墙中放行相关端口:

  1. 命令端口:TCP 21
  2. 被动模式数据端口:TCP 50000-50010(与配置中的 pasv_min_portpasv_max_port 对应)

若服务器位于云平台,还需在云服务商的安全组/网络ACL中放行上述端口。

配置完成后,即可使用 FileZilla、WinSCP 等 FTP 客户端,使用配置的虚拟用户名和密码进行连接测试,验证文件上传、下载功能是否正常。

扩展说明:

  1. 完整的 vsftpd 配置选项可参考官方文档:https://security.appspot.com/vsftpd/vsftpd_conf.html
  2. 若服务器需要通过公网 IP 提供被动模式服务,建议在 vsftpd.conf 中明确设置 pasv_address= 您的公网 IP,以解决可能的连接问题。



上一篇:GESP C++三级编程实战:洛谷P5727冰雹猜想算法与数组实现解析
下一篇:Spring ApplicationEvent事件驱动详解:单机解耦与异步处理的最佳实践
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-24 22:55 , Processed in 0.241880 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表