云服务器选择:
推荐配置:2 核 4G 内存以上,50GB SSD,公网 IP
操作系统:CentOS 7+/Ubuntu 20.04+
组规则(阿里云 / 腾讯云等):开放 TCP 20、21、30000-31000 端口(被动模式范围)
更新系统:
# CentOS/RHELyum update -y# Ubuntu/Debianapt update && apt upgrade -y
# 安装vsftpdyum install vsftpd -y# 启动并设置开机自启systemctl enable vsftpd --now# 配置防火墙firewall-cmd --permanent --add-service=ftp
firewall-cmd --permanent --add-port=30000-31000/tcp
firewall-cmd --reload
# 安装vsftpdapt install vsftpd -y# 启动并设置开机自启systemctl enable vsftpd --now# 配置UFW防火墙ufw allow 20/tcp
ufw allow 21/tcp
ufw allow 30000:31000/tcp
ufw reload
备份默认配置:
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
编辑主配置文件:
vim /etc/vsftpd/vsftpd.conf
关键配置参数:
# 基础设置
anonymous_enable=NO # 禁用匿名访问
local_enable=YES # 启用本地用户
write_enable=YES # 启用写入权限
local_umask=022 # 文件创建掩码
# 被动模式配置(关键!)
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
pasv_address=你的公网IP # 填写云服务器公网IP
# 增强
chroot_local_user=YES # 限制用户在自家目录
allow_writeable_chroot=YES # 允许chroot目录可写
rsa_cert_file=/etc/ssl/certs/vsftpd.pem # SSL证书路径(后续配置)
ssl_enable=YES # 启用SSL
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH
重启服务使配置生效:
创建专用 FTP 用户:
useradd -d /data/ftp/user1 -s /sbin/nologin ftpuser1passwd ftpuser1 # 设置密码
创建 FTP 根目录并设置权限:
mkdir -p /data/ftp/user1chown -R ftpuser1:ftpuser1 /data/ftp/user1chmod -R 755 /data/ftp
生成自签名证书:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \-keyout /etc/ssl/private/vsftpd.key \-out /etc/ssl/certs/vsftpd.crt \-subj "/C=CN/ST=Shanghai/L=Shanghai/O=Company/OU=IT/CN=yourdomain.com"cat /etc/ssl/private/vsftpd.key /etc/ssl/certs/vsftpd.crt > /etc/ssl/certs/vsftpd.pemchmod 600 /etc/ssl/certs/vsftpd.pem
修改 vsftpd 配置启用 SSL:
# ..已添加以下配置
ssl_enable=YES
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
rsa_private_key_file=/etc/ssl/certs/vsftpd.pem
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
使用 FileZilla(Windows/macOS):
使用命令行(Linux/macOS):
ftp -p 你的公网IP# 登录后使用ls、cd、put、get等命令操作
限制 IP 访问:
# 仅允许特定IP访问(示例:仅允许192.168.1.0/24网段)echo "192.168.1.0/24" > /etc/vsftpd/allowed_ipsvim /etc/pam.d/vsftpd# 添加以下行到文件开头auth required pam_listfile.so item=ip sense=allow file=/etc/vsftpd/allowed_ips onerr=fail apply=/usr/sbin/vsftpd
启用日志审计:
# 在vsftpd.conf中添加
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
设置连接限制:
# 限制同一IP的并发连接数
max_clients=100
max_per_ip=5
# 限制传输速率(KB/s)
local_max_rate=5000
查看服务状态:
systemctl status vsftpd
journalctl -u vsftpd -f
检查防火墙:
# CentOSfirewall-cmd --list-all# Ubuntuufw status
被动模式问题:
使用 SFTP 替代 FTP:
若 性要求极高,建议禁用 FTP,改用 SFTP(基于 SSH 协议):
# 创建SFTP用户组groupadd sftpusersusermod -aG sftpusers ftpuser1# 配置SSHvim /etc/ssh/sshd_config# 添加/修改以下行Subsystem sftp internal-sftp
Match Group sftpusers
ChrootDirectory /data/ftp/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
systemctl restart sshd
监控与告警:
配置 Prometheus+Grafana 监控 FTP 服务指标,设置连接数、传输速率异常告警。
定期备份:
对 FTP 数据目录配置每日增量备份至对象存储(如 AWS S3、阿里云 OSS)。
通过以上步骤,你可以在云服务器上搭建一个 、的 FTP 服务,支持多用户隔离和数据加密传输。建议优先使用 FTPS 或 SFTP 协议,避免明文传输敏感信息。
(声明:本文来源于网络,仅供参考阅读,涉及侵权请联系我们删除、不代表任何立场以及观点。)