在 Xubuntu 上部署企业级 FTP 服务器时,安全配置至关重要。推荐使用 vsftpd(Very Secure FTP Daemon)作为 FTP 服务,因其轻量、稳定且安全性高。以下是完整的安全配置步骤和建议:
一、安装 vsftpd
sudo apt update
sudo apt install vsftpd -y
启动并启用服务:
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
二、基础安全配置
编辑主配置文件:
sudo nano /etc/vsftpd.conf
关键安全配置项(确保以下设置存在或修改):
# 禁用匿名访问
anonymous_enable=NO
# 启用本地用户登录(真实系统用户)
local_enable=YES
# 允许上传和写入
write_enable=YES
# 使用安全的 chroot 限制用户在其主目录中
chroot_local_user=YES
allow_writeable_chroot=YES
# 启用被动模式(PASV),适合防火墙/NAT环境
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000
# 被动模式的公网IP(如果服务器在NAT后,需设为公网IP)
# pasv_address=your.public.ip.address
# 限制用户不能切换到主目录之外
chroot_list_enable=NO
# 启用日志记录
xferlog_enable=YES
xferlog_std_format=YES
log_ftp_protocol=YES
# 设置超时时间
idle_session_timeout=600
data_connection_timeout=120
# 禁用 FTP 命令中的某些危险操作
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO # 先关闭SSL,后续配置TLS
⚠️ 注意:
allow_writeable_chroot=YES存在争议,若担心安全风险,可改用user_sub_token+local_root方式隔离。
三、启用 TLS/SSL 加密(强制使用 FTPS)
FTP 明文传输不安全,必须启用加密。
1. 生成自签名证书(生产环境建议使用 Let’s Encrypt 或商业证书)
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048
-keyout /etc/ssl/private/vsftpd.key
-out /etc/ssl/certs/vsftpd.crt
填写相关信息(国家、组织名等)。
2. 修改 vsftpd.conf 启用 SSL
在配置文件末尾添加或修改:
ssl_enable=YES
# 强制使用 SSL 连接
require_ssl_reuse=NO
ssl_sslv2=NO
ssl_sslv3=NO
ssl_tlsv1=YES
ssl_tlsv1_1=YES
ssl_tlsv1_2=YES
# 指定证书路径
rsa_cert_file=/etc/ssl/certs/vsftpd.crt
rsa_private_key_file=/etc/ssl/private/vsftpd.key
# 强制数据连接也使用 TLS
force_local_data_ssl=YES
force_local_logins_ssl=YES
# 支持显式 TLS (FTPES)
allow_anon_ssl=NO
重启服务:
sudo systemctl restart vsftpd
客户端应使用 FTPES(Explicit TLS)连接。
四、用户管理与权限控制
1. 创建专用 FTP 用户组
sudo groupadd ftpusers
2. 创建受限用户(禁止 shell 登录)
sudo useradd -m -g ftpusers -s /usr/sbin/nologin ftpuser1
sudo passwd ftpuser1
-s /usr/sbin/nologin防止通过 SSH 登录。
3. 设置目录权限
sudo chown root:ftpusers /home/ftpuser1
sudo chmod 755 /home/ftpuser1
上传目录可单独创建并赋权:
mkdir /home/ftpuser1/upload
chown ftpuser1:ftpusers /home/ftpuser1/upload
chmod 755 /home/ftpuser1/upload
五、防火墙配置(UFW)
# 允许 SSH
sudo ufw allow OpenSSH
# 允许 FTP 控制端口(21)
sudo ufw allow 21/tcp
# 允许被动模式端口范围
sudo ufw allow 40000:50000/tcp
# 启用防火墙
sudo ufw enable
六、增强安全措施
1. 使用 Fail2Ban 防暴力破解
sudo apt install fail2ban -y
创建 jail 配置:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
添加:
[vsftpd]
enabled = true
port = ftp,ftp-data,ftps,ftps-data
filter = vsftpd
logpath = /var/log/vsftpd.log
maxretry = 3
bantime = 3600
重启:
sudo systemctl restart fail2ban
2. 日志监控
查看 vsftpd 日志:
sudo tail -f /var/log/vsftpd.log
3. 定期更新系统和软件
sudo apt update && sudo apt upgrade -y
4. 禁用不必要的 FTP 命令(可选)
在 vsftpd.conf 中添加:
cmds_allowed=PASV,RETR,STOR,APPE,NLST,LIST,CWD,CDUP,QUIT,USER,PASS,SYST,HELP,NOOP,PWD,TYPE,PORT
七、替代方案建议(更安全)
- SFTP over SSH:比 FTP 更安全,推荐用于企业环境。
- 使用 ProFTPD + mod_sftp 或 pure-ftpd 并启用 TLS。
- 结合 LDAP/Active Directory 实现集中认证。
总结:关键安全点
| 安全项 | 是否启用 |
|---|---|
| 匿名访问 | ❌ 禁用 |
| TLS/SSL 加密 | ✅ 强制启用 |
| 用户 chroot 隔离 | ✅ 启用 |
| 防火墙限制 | ✅ 配置端口 |
| 日志审计 | ✅ 开启 |
| Fail2Ban 防爆破 | ✅ 推荐 |
| 系统用户最小权限 | ✅ 禁用 shell |
通过以上配置,你可以在 Xubuntu 上部署一个符合企业级安全要求的 FTP 服务器。但强烈建议评估是否可改用 SFTP 或 HTTPS 文件共享(如 Nextcloud) 来进一步提升整体安全性。
CLOUD云枢