下面从系统层、服务层、账号与权限、网络与审计几个维度,系统说明 Ubuntu 上 FTP 服务(以最常见的 vsftpd 为例)的安全加固方法。
明文 FTP 极不安全,强烈建议使用 FTPS 或 SFTP
| 方案 | 安全性 | 推荐度 |
|---|---|---|
| FTP(21端口) | 明文 | ❌ |
| FTPS(FTP + SSL) | 加密 | ✅ |
| SFTP(SSH) | 加密 | ✅✅(首选) |
结论:
sudo apt update
sudo apt install vsftpd
sudo nano /etc/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
生成证书:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/vsftpd.key \
-out /etc/ssl/certs/vsftpd.crt
vsftpd 配置:
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
rsa_cert_file=/etc/ssl/certs/vsftpd.crt
rsa_private_key_file=/etc/ssl/private/vsftpd.key
客户端必须使用 FTPS(显式/隐式)
chroot_local_user=YES
allow_writeable_chroot=YES
防止用户访问 /etc、/root 等系统目录。
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
echo ftpuser | sudo tee -a /etc/vsftpd.userlist
ascii_upload_enable=NO
ascii_download_enable=NO
sudo useradd -m -s /usr/sbin/nologin ftpuser
sudo passwd ftpuser
sudo ufw allow from 192.168.1.0/24 to any port 21
或仅允许内网。
deny_email_enable=YES
并确保:
grep root /etc/passwd
FTP 用户 shell 不为 /bin/bash 更安全。
sudo chown ftpuser:ftpuser /home/ftpuser
sudo chmod 750 /home/ftpuser
sudo apt install fail2ban
/etc/fail2ban/jail.local
[vsftpd]
enabled = true
port = 21
filter = vsftpd
logpath = /var/log/vsftpd.log
maxretry = 5
listen_port=2121
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
log_ftp_protocol=YES
sudo apt install openssh-server
限制用户只能 SFTP:
sudo nano /etc/ssh/sshd_config
Match User ftpuser
ChrootDirectory /home/ftpuser
ForceCommand internal-sftp
PasswordAuthentication yes
✅ 加密
✅ 无需额外端口
✅ 更安全
如果你告诉我:
我可以给你一套可直接用的配置文件。