在 Debian 上部署 FTP 服务(如 vsftpd、proftpd 或 pure-ftpd)时,防入侵的核心思路是:最小暴露、强认证、严格权限、日志监控、网络层防护。下面以最常见的 vsftpd 为例,系统性说明防护方法,并补充通用建议。
sudo apt update
sudo apt install vsftpd
编辑配置文件:
sudo nano /etc/vsftpd.conf
# 禁止匿名登录
anonymous_enable=NO
# 允许本地用户
local_enable=YES
# 禁止写权限(按需开启)
write_enable=YES
# 限制用户在家目录
chroot_local_user=YES
allow_writeable_chroot=YES
# 被动模式端口范围(配合防火墙)
pasv_min_port=30000
pasv_max_port=31000
# 登录失败处理
max_login_fails=3
重启服务:
sudo systemctl restart vsftpd
sudo useradd -m -s /usr/sbin/nologin ftpuser
sudo passwd ftpuser
sudo nano /etc/ssh/sshd_config
DenyUsers ftpuser
vsftpd 支持 PAM 虚拟用户,避免系统用户暴露。
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 30000:31000/tcp
sudo ufw enable
sudo ufw deny from 1.2.3.4
或使用 /etc/hosts.deny:
vsftpd: ALL
vsftpd: 192.168.1.0/24
sudo apt install fail2ban
配置:
sudo nano /etc/fail2ban/jail.local
[vsftpd]
enabled = true
port = ftp
filter = vsftpd
logpath = /var/log/vsftpd.log
maxretry = 3
bantime = 3600
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
log_ftp_protocol=YES
sudo tail -f /var/log/vsftpd.log
ssl_enable=YES
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
sudo apt update && sudo apt upgrade
sudo systemctl disable telnet
| 项目 | 建议 |
|---|---|
| 匿名 | 关闭 |
| 用户 | 虚拟用户 |
| 端口 | 限制范围 |
| 认证 | FTPS |
| 防护 | fail2ban |
| 监控 | 日志 |
如果你告诉我 用的是哪种 FTP 服务(vsftpd / proftpd / pure-ftpd)、是否公网、是否必须 FTP 协议,我可以给你更精确的配置方案。