一、方案概述
1. 方案背景
vsftpd(Very Secure FTP Daemon)是Linux生态下最稳定、安全性最高的FTP服务端软件,本指南基于Rocky Linux 8.x/9.x系统,提供两种主流认证方案的落地实操:
- 虚拟用户认证:独立于操作系统用户的FTP账户体系,权限隔离度高,适合小规模、无域环境的FTP部署场景
- AD域认证:对接企业Active Directory域账号体系,无需单独维护FTP账户,适合企业级集中身份管理场景
两种方案均遵循最小权限原则,默认禁用匿名访问,限制用户目录逃逸,确保服务安全性。
2. 基础环境要求
- 操作系统:Rocky Linux 8.x / 9.x
- 权限要求:root或sudo管理员权限
- 网络要求:服务端需配置静态IP,防火墙开放对应FTP端口
二、前置准备
1. 基础依赖安装
# 安装基础工具和vsftpd服务
sudo dnf install vsftpd libdb-utils samba-winbind samba-winbind-clients oddjob oddjob-mkhomedir pam_krb5 krb5-workstation -y
# 停止并禁用冲突服务
sudo systemctl stop vsftpd
sudo systemctl disable vsftpd
# 备份默认配置文件
sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
2. 基础安全配置
# 禁用匿名访问(两种方案通用)
sudo sed -i \’s/anonymous_enable=YES/anonymous_enable=NO/g\’ /etc/vsftpd/vsftpd.conf
# 开启本地用户支持(虚拟用户和AD用户均依赖该配置)
sudo sed -i \’s/local_enable=NO/local_enable=YES/g\’ /etc/vsftpd/vsftpd.conf
# 开启写入权限
sudo sed -i \’s/write_enable=NO/write_enable=YES/g\’ /etc/vsftpd/vsftpd.conf
方案一:虚拟用户认证部署
1. 创建虚拟用户映射的系统账户
所有虚拟用户将映射到同一个系统账户,避免直接暴露系统用户权限:
# 创建禁止SSH登录的系统映射用户,家目录为FTP根目录
sudo useradd -d /data/ftp_root -s /sbin/nologin ftp_vuser
# 设置目录权限
sudo mkdir -p /data/ftp_root
sudo chown ftp_vuser:ftp_vuser /data/ftp_root
sudo chmod 755 /data/ftp_root
2. 创建虚拟用户数据库
# 1. 创建虚拟用户明文列表,格式为奇数行用户名、偶数行密码
sudo cat > /etc/vsftpd/virtual_users.txt << EOF
ftp_user01
Password@2026
ftp_user02
Password@2026
EOF
# 2. 将明文列表转换为Berkeley DB加密数据库
sudo db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db
# 3. 严格设置数据库文件权限,避免泄露
sudo chmod 600 /etc/vsftpd/virtual_users.*
3. 配置PAM认证模块
创建虚拟用户专属的PAM认证配置文件:


