温馨提示×

怎样保护ubuntu ftpserver安全

小樊
46
2026-10-08 10:46:38
栏目: 智能运维

保护 Ubuntu 上的 FTP 服务器(通常指 vsftpd,也可能是 proftpd/pure-ftpd)安全,核心目标是:防止未授权访问、避免明文传输、限制权限、减少攻击面。下面以最常见的 vsftpd 为例说明。


一、基础安全配置(必须做)

1. 使用 FTPS(FTP over SSL/TLS)

绝不要使用明文 FTP(21端口裸FTP)

sudo apt install vsftpd

编辑配置:

sudo nano /etc/vsftpd.conf

关键配置:

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES

ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

生产环境建议使用 Let’s Encrypt 证书


2. 禁止匿名登录

anonymous_enable=NO

3. 限制用户访问范围(chroot)

防止用户浏览整个系统:

chroot_local_user=YES
allow_writeable_chroot=YES

二、用户与权限控制

4. 使用专用 FTP 用户

不要直接用系统管理员账号:

sudo adduser ftpuser

仅赋予必要目录权限:

sudo chown ftpuser:ftpuser /home/ftpuser

5. 限制可登录用户

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

在文件中加入允许的用户:

echo ftpuser | sudo tee -a /etc/vsftpd.userlist

三、网络与系统层防护

6. 修改默认端口(可选)

listen_port=2121

7. 使用防火墙限制来源 IP

sudo ufw allow from 192.168.1.0/24 to any port 21

或仅开放被动端口范围:

pasv_min_port=30000
pasv_max_port=31000
sudo ufw allow 30000:31000/tcp

8. 启用 Fail2Ban(非常重要)

防止暴力破解:

sudo apt install fail2ban

示例配置 /etc/fail2ban/jail.local:

[vsftpd]
enabled = true
port = ftp,ftp-data,ftps,ftps-data
logpath = /var/log/vsftpd.log
maxretry = 5
bantime = 3600

四、日志与监控

9. 开启日志

xferlog_enable=YES
log_ftp_protocol=YES

查看日志:

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

五、更高安全方案(推荐)

10. 如果可以,优先用 SFTP 替代 FTP

SFTP 基于 SSH,更安全:

sftp user@server

限制 SFTP 用户:

sudo nano /etc/ssh/sshd_config
Match User ftpuser
    ChrootDirectory /home/ftpuser
    ForceCommand internal-sftp

六、安全 checklist 总结

✅ 禁用匿名
✅ 使用 FTPS / SFTP
✅ chroot 限制目录
✅ 专用低权限用户
✅ Fail2Ban
✅ 防火墙限制
✅ 日志监控


如果你愿意,我可以:

  • 帮你 一步步配置 vsftpd + Let’s Encrypt
  • 或 完全用 SFTP 替代 FTP
  • 或检查你当前的 /etc/vsftpd.conf 是否安全

你可以直接贴配置。

0 踩