在 Debian 上部署 FTP 服务器(如 vsftpd、proftpd 或 pure-ftpd)时,提升安全性的核心思路是:减少暴露面、强制加密、最小权限、加强审计。下面以最常见的 vsftpd(Very Secure FTP Daemon) 为例,系统性说明提升安全的方法,同时也会补充通用建议。
FTP 协议本身不安全(明文传输账号密码)
更安全的替代方案:
如果必须使用 FTP,请确保启用 FTPS。
sudo apt update
sudo apt install vsftpd
配置文件:
/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
配置:
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/ssl/certs/vsftpd.crt
rsa_private_key_file=/etc/ssl/private/vsftpd.key
防止用户访问系统其他目录:
chroot_local_user=YES
allow_writeable_chroot=YES
⚠ 注意:
chroot 后用户不能跳出主目录userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
只放行白名单用户。
ls_recurse_enable=NO
ascii_upload_enable=NO
ascii_download_enable=NO
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=40100
防火墙示例(ufw):
ufw allow 21/tcp
ufw allow 40000:40100/tcp
sudo groupadd ftpusers
sudo usermod -aG ftpusers username
FTP 用户不应能登录 SSH:
sudo usermod -s /usr/sbin/nologin ftpuser
sudo apt install fail2ban
示例 /etc/fail2ban/jail.local:
[vsftpd]
enabled = true
port = ftp
filter = vsftpd
logpath = /var/log/vsftpd.log
maxretry = 5
bantime = 3600
启用日志:
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
log_ftp_protocol=YES
定期检查:
sudo tail -f /var/log/vsftpd.log
sudo apt install openssh-server
限制 SFTP 用户:
Match User sftpuser
ChrootDirectory /home/sftpuser
ForceCommand internal-sftp
✅ 禁用匿名
✅ 启用 FTPS / 使用 SFTP
✅ chroot 限制目录
✅ 白名单用户
✅ fail2ban
✅ 防火墙限制端口
✅ 日志开启
✅ 不使用 root
如果你愿意,可以告诉我:
我可以给你一套可直接用的配置文件。