温馨提示×

如何加固Ubuntu FTPServer

小樊
39
2026-08-02 12:50:14
栏目: 智能运维

加固 Ubuntu 上的 FTPServer(FTP over SSL/TLS) 主要从 协议安全、用户权限、防火墙、日志审计、系统层面 等方面入手。下面以 vsftpd + SSL/TLS(FTPS) 为例,给你一套可落地的加固方案(适用于 Ubuntu 20.04/22.04/24.04)。


一、基础环境准备

1. 安装 vsftpd

sudo apt update
sudo apt install vsftpd -y

二、启用并强制 FTPS(SSL/TLS)

1. 生成 SSL 证书(自签或 CA)

自签示例(测试用)

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/vsftpd.key \
-out /etc/ssl/certs/vsftpd.crt

生产环境建议使用:

  • Let’s Encrypt
  • 企业 CA

2. 配置 vsftpd 使用 SSL

编辑配置文件:

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

三、用户与权限加固(非常重要)

1. 禁止 root 登录

root_login=NO

2. 限制用户只能访问家目录(chroot)

chroot_local_user=YES
allow_writeable_chroot=YES

⚠️ 防止用户访问 /etc/root


3. 白名单用户(只允许指定用户)

userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO

编辑白名单:

sudo nano /etc/vsftpd.userlist

加入允许的用户:

ftpuser1
ftpuser2

4. 创建专用 FTP 用户

sudo useradd -m -s /usr/sbin/nologin ftpuser
sudo passwd ftpuser

四、防火墙与端口安全

1. 防火墙规则(UFW)

FTPS 使用:

  • 21(控制)
  • 被动端口范围
sudo ufw allow 21/tcp
sudo ufw allow 30000:31000/tcp
sudo ufw enable

2. 配置被动模式端口

pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
pasv_address=你的服务器公网IP

五、防暴力破解(强烈推荐)

1. 安装 fail2ban

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

六、日志与审计

1. 启用日志

xferlog_enable=YES
log_ftp_protocol=YES

查看日志:

sudo tail -f /var/log/vsftpd.log

七、系统层加固(Ubuntu)

1. 升级系统

sudo apt update && sudo apt upgrade -y

2. 禁用不需要的服务

sudo systemctl disable telnet
sudo systemctl disable rsh

3. 使用 SSH 替代 FTP(如可行)

SFTP(SSH)比 FTPS 更安全

如果业务允许,优先使用:

sftp user@server

八、检查配置是否生效

sudo systemctl restart vsftpd
sudo systemctl status vsftpd

使用 FileZilla 测试:

  • 协议:FTP over TLS
  • 端口:21
  • 加密:要求显式 FTP over TLS

九、安全加固清单(Checklist)

✅ 禁用匿名
✅ 强制 TLS
✅ 禁止 root
✅ chroot
✅ 用户白名单
✅ fail2ban
✅ 防火墙
✅ 日志开启


十、如果你愿意,我可以进一步帮你:

  • ✅ 给你 完整 vsftpd.conf 模板
  • ✅ 帮你 排查 FTPS 连接失败问题
  • ✅ 教你 用 Let’s Encrypt 证书
  • ✅ 对比 FTPS vs SFTP 选哪个

只要告诉我你的 Ubuntu 版本 + 使用场景 即可。

0