加固 Ubuntu 上的 FTP(通常指使用 OpenSSH 的 SFTP 或 vsftpd) 服务器,核心目标是:减少攻击面、控制权限、加密传输、加强审计。下面按不同 FTP 类型给你一套实用加固方案。
| 服务 | 说明 |
|---|---|
| vsftpd | 传统 FTP(明文或 TLS) |
| SFTP(OpenSSH) | 推荐,走 SSH 加密 |
| ProFTPD | 较少见 |
✅ 强烈建议:优先使用 SFTP(OpenSSH),而不是传统 FTP。
sudo apt update && sudo apt upgrade -y
sudo useradd -m -s /usr/sbin/nologin sftpuser
sudo passwd sftpuser
编辑:
sudo nano /etc/ssh/sshd_config
添加或修改:
# 禁用 root 登录
PermitRootLogin no
# 禁用密码登录(可选,推荐)
PasswordAuthentication no
# 启用 SFTP 子系统
Subsystem sftp internal-sftp
# 限制 SFTP 用户
Match User sftpuser
ChrootDirectory /home/sftpuser
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
⚠️ Chroot 目录权限要求
sudo chown root:root /home/sftpuser
sudo chmod 755 /home/sftpuser
用户上传目录:
sudo mkdir /home/sftpuser/upload
sudo chown sftpuser:sftpuser /home/sftpuser/upload
sudo systemctl restart ssh
sudo ufw allow 22/tcp
sudo ufw enable
sudo ufw status
sudo apt install vsftpd
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
编辑:
sudo nano /etc/vsftpd.conf
推荐配置:
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
# 日志
xferlog_enable=YES
log_ftp_protocol=YES
# 限制用户
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
限制用户:
echo sftpuser | sudo tee -a /etc/vsftpd.userlist
ssl_enable=YES
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
force_local_data_ssl=YES
force_local_logins_ssl=YES
✅ 生产环境请使用 Let’s Encrypt 证书
sudo systemctl restart vsftpd
ssh-keygen
ssh-copy-id sftpuser@server
sudo apt install fail2ban
sudo systemctl enable fail2ban
sudo apt install auditd
sudo systemctl enable auditd
查看登录记录:
last
journalctl -u ssh
| 方案 | 安全性 |
|---|---|
| FTP(明文) | ❌ 不推荐 |
| FTPS(vsftpd + TLS) | ✅ 可用 |
| SFTP(OpenSSH) | ✅✅✅ 强烈推荐 |
✅ SFTP + SSH 密钥 + Chroot + fail2ban + 防火墙
如果你愿意,可以告诉我:
我可以帮你 直接生成一份完整可用的配置文件 ✅