ubuntu vsftp如何进行定制化配置
小樊
32
2025-12-28 02:46:55
Ubuntu 上 vsftpd 定制化配置指南
一 安装与备份
- 安装 vsftpd:执行命令:sudo apt update && sudo apt install vsftpd -y。
- 备份原始配置:执行命令:sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak,便于回滚。
- 启动与开机自启:执行命令:sudo systemctl start vsftpd && sudo systemctl enable vsftpd。
- 建议:生产环境优先使用基于 SSH 的 SFTP(更安全),仅在确有需求时使用 FTP/FTPS。
二 核心配置模板与说明
- 基础安全与功能
- 禁用匿名:anonymous_enable=NO
- 允许本地用户:local_enable=YES
- 允许写操作:write_enable=YES
- 本地掩码:local_umask=022
- 欢迎语:ftpd_banner=“Welcome to FTP”
- 目录与访问控制
- 锁定用户至家目录:chroot_local_user=YES
- 允许 chroot 目录可写:allow_writeable_chroot=YES(与 chroot 配合,便于在家目录上传)
- 登录控制文件:userlist_enable=YES,userlist_deny=NO,userlist_file=/etc/vsftpd.user_list(仅列表内用户可登录)
- 被拒绝登录的用户列表:/etc/vsftpd.ftpusers(PAM 层面直接拒绝)
- 传输与日志
- 被动模式:pasv_enable=YES,pasv_min_port=30000,pasv_max_port=31000
- 传输日志:xferlog_enable=YES,xferlog_file=/var/log/vsftpd.log
- 并发与限速
- 并发连接:max_clients=200,max_per_ip=10
- 带宽限制:local_max_rate=1048576(约 1 MB/s,按需调整)
- 说明
- 配置项格式为“键=值”,等号两侧不要有空格;修改后需重启服务生效。
- 若需更细粒度控制,可为单个用户创建配置目录:user_config_dir=/etc/vsftpd/userconf,在该目录下以用户名同名文件设置如 local_max_rate 等参数。
三 用户管理与权限
- 创建专用 FTP 用户(禁止 SSH 登录)
- 执行命令:sudo useradd -m ftpuser -s /usr/sbin/nologin && sudo passwd ftpuser。
- 如需上传,确保家目录及上传目录对 ftpuser 具备写权限(如 755/775 视 umask 而定)。
- 登录白名单与黑名单
- 白名单模式:userlist_enable=YES,userlist_deny=NO,在 /etc/vsftpd.user_list 中列出允许登录的用户。
- 黑名单模式:userlist_enable=YES,userlist_deny=YES,在 /etc/vsftpd.user_list 中列出禁止登录的用户。
- 绝对禁止:/etc/vsftpd.ftpusers 中的用户将被 PAM 直接拒绝。
- 目录锁定策略
- 全局锁定:chroot_local_user=YES(所有本地用户均被限制在其家目录)。
- 例外放行:如需对少数用户放行,可设置 chroot_local_user=YES,chroot_list_enable=YES,chroot_list_file=/etc/vsftpd.chroot_list,将需要例外的用户写入该文件。
四 加密传输与防火墙
- 生成证书(自签名示例)
- 执行命令:sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem。
- 启用 SSL/TLS(FTPS)
- 配置项:ssl_enable=YES,allow_anon_ssl=NO,force_local_data_ssl=YES,force_local_logins_ssl=YES,ssl_tlsv1=YES,ssl_sslv2=NO,ssl_sslv3=NO,rsa_cert_file=/etc/ssl/private/vsftpd.pem,rsa_private_key_file=/etc/ssl/private/vsftpd.pem。
- 客户端需选择“FTPS”模式连接。
- 防火墙放行
- UFW:放行控制端口与被动端口范围,例如:sudo ufw allow 21/tcp;sudo ufw allow 30000:31000/tcp;sudo ufw reload。
- 如使用 FTPS,通常还需放行 990/tcp(部分客户端/场景需要)。
五 验证与常见问题
- 验证步骤
- 重启服务:sudo systemctl restart vsftpd。
- 使用客户端(如 FileZilla)测试登录、上传/下载、目录权限与速率限制是否符合预期。
- 常见问题
- “500 OOPS: cannot change directory”:家目录权限过高(如 777)或属主错误,建议设为 755 并确保属主为相应用户。
- 无法上传:确认 write_enable=YES、目录对登录用户可写,且 allow_writeable_chroot=YES 已设置。
- 被动模式超时:检查 pasv_min_port/pasv_max_port 与防火墙规则是否一致,并确认云厂商安全组已放行对应端口范围。