在 Debian 上部署 FTPServer(FTP over TLS/SSL) 时,防攻击的核心目标是:防止暴力破解、未授权访问、服务滥用、信息泄露和拒绝服务攻击。下面从 系统层、服务层、网络层、运维层 四个方面给你一套实用方案(以 vsftpd 为例,最常见、也最安全)。
apt update
apt install vsftpd openssl
不要安装多余服务,减少攻击面。
防止明文密码被抓包。
# 生成证书
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/vsftpd.key \
-out /etc/ssl/certs/vsftpd.crt
编辑 /etc/vsftpd.conf:
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
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
✅ 效果:
anonymous_enable=NO
chroot_local_user=YES
allow_writeable_chroot=YES
⚠️ 注意:
userlist_enable=YES
userlist_file=/etc/vsftpd.allowed_users
userlist_deny=NO
echo "ftpuser" > /etc/vsftpd.allowed_users
✅ 只允许白名单用户登录
max_clients=50
max_per_ip=3
connect_timeout=60
apt install fail2ban
创建 /etc/fail2ban/jail.local:
[vsftpd]
enabled = true
port = ftp,ftp-data,ftps,ftps-data
filter = vsftpd
logpath = /var/log/vsftpd.log
maxretry = 5
bantime = 3600
✅ 自动封禁暴力破解 IP
只允许必要端口:
ufw allow 21/tcp
ufw allow 40000:50000/tcp
ufw enable
vsftpd 配置被动端口:
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000
listen_port=2121
⚠️ 不是根本安全,但能减少扫描器的“噪音攻击”。
usermod -s /usr/sbin/nologin ftpuser
✅ 即使被攻破,也无法进入系统
xferlog_enable=YES
log_ftp_protocol=YES
grep Failed /var/log/vsftpd.log
| 项目 | 建议 |
|---|---|
| 防 DDoS | 使用 rate limit + fail2ban |
| 防目录遍历 | chroot + 权限最小化 |
| 防恶意上传 | 限制文件类型、大小 |
| 防旧漏洞 | 定期 apt upgrade |
| 替代方案 | 能用 SFTP(SSH)就别用 FTP |
✅ 最佳实践排序:
ssl_enable=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
userlist_enable=YES
userlist_deny=NO
max_per_ip=3
pasv_min_port=40000
pasv_max_port=50000
如果你愿意,我可以:
只要告诉我你的使用场景即可。