在 Debian 上运行 FTP 服务(通常是 vsftpd 或 proftpd)时,由于 FTP 协议本身较为古老、明文传输风险较高,需要从协议、账号、权限、防火墙、审计多个层面加固。下面以 vsftpd(最常见) 为主说明。
避免明文传输账号和密码。
sudo apt install vsftpd
编辑 /etc/vsftpd.conf:
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/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
重启服务:
sudo systemctl restart vsftpd
生产环境建议使用正式证书(Let’s Encrypt)
anonymous_enable=NO
防止用户浏览系统其他目录:
chroot_local_user=YES
allow_writeable_chroot=YES
如果用户需要例外:
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd.userlist
FTP 用户应是专用账号,不要使用 root、www-data 等。
sudo useradd -m -s /usr/sbin/nologin ftpuser
pasv_min_port=30000
pasv_max_port=31000
防火墙示例(ufw):
sudo ufw allow 21/tcp
sudo ufw allow 30000:31000/tcp
sudo apt install fail2ban
/etc/fail2ban/jail.local:
[vsftpd]
enabled = true
port = ftp
filter = vsftpd
logpath = /var/log/vsftpd.log
maxretry = 5
bantime = 3600
listen_port=2121
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
log_ftp_protocol=YES
定期查看:
sudo tail -f /var/log/vsftpd.log
sudo apt update && sudo apt upgrade
如果业务允许: ✅ 使用 SFTP(基于 SSH)
sftp user@server
优点:
如果你愿意,可以告诉我:
我可以给你一套可直接用的配置文件。