加固 Ubuntu 上的 FTPServer(FTP over SSL/TLS) 主要从 协议安全、用户权限、防火墙、日志审计、系统层面 等方面入手。下面以 vsftpd + SSL/TLS(FTPS) 为例,给你一套可落地的加固方案(适用于 Ubuntu 20.04/22.04/24.04)。
sudo apt update
sudo apt install vsftpd -y
自签示例(测试用)
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/vsftpd.key \
-out /etc/ssl/certs/vsftpd.crt
生产环境建议使用:
编辑配置文件:
sudo nano /etc/vsftpd.conf
关键配置(✅ 必须):
# 启用 SSL
ssl_enable=YES
# 禁止匿名
anonymous_enable=NO
# 本地用户登录
local_enable=YES
# 写权限
write_enable=YES
# SSL 证书
rsa_cert_file=/etc/ssl/certs/vsftpd.crt
rsa_private_key_file=/etc/ssl/private/vsftpd.key
# 强制使用 TLS(禁止明文)
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
# 强制客户端使用 SSL
force_local_data_ssl=YES
force_local_logins_ssl=YES
# 提高安全性
require_ssl_reuse=NO
ssl_ciphers=HIGH
root_login=NO
chroot_local_user=YES
allow_writeable_chroot=YES
⚠️ 防止用户访问 /etc、/root
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
编辑白名单:
sudo nano /etc/vsftpd.userlist
加入允许的用户:
ftpuser1
ftpuser2
sudo useradd -m -s /usr/sbin/nologin ftpuser
sudo passwd ftpuser
FTPS 使用:
sudo ufw allow 21/tcp
sudo ufw allow 30000:31000/tcp
sudo ufw enable
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
pasv_address=你的服务器公网IP
sudo apt install fail2ban -y
创建 vsftpd 规则:
sudo nano /etc/fail2ban/jail.local
[vsftpd]
enabled = true
port = ftp
filter = vsftpd
logpath = /var/log/vsftpd.log
maxretry = 5
bantime = 3600
xferlog_enable=YES
log_ftp_protocol=YES
查看日志:
sudo tail -f /var/log/vsftpd.log
sudo apt update && sudo apt upgrade -y
sudo systemctl disable telnet
sudo systemctl disable rsh
SFTP(SSH)比 FTPS 更安全
如果业务允许,优先使用:
sftp user@server
sudo systemctl restart vsftpd
sudo systemctl status vsftpd
使用 FileZilla 测试:
✅ 禁用匿名
✅ 强制 TLS
✅ 禁止 root
✅ chroot
✅ 用户白名单
✅ fail2ban
✅ 防火墙
✅ 日志开启
只要告诉我你的 Ubuntu 版本 + 使用场景 即可。