温馨提示×

怎样加固debian ftpserver安全

小樊
43
2026-09-09 19:16:02
栏目: 智能运维

在 Debian 上运行 FTP 服务(通常是 vsftpdproftpd)时,由于 FTP 协议本身较为古老、明文传输风险较高,需要从协议、账号、权限、防火墙、审计多个层面加固。下面以 vsftpd(最常见) 为主说明。


一、使用更安全的 FTP 方式(最重要)

1. 优先使用 FTPS(FTP over SSL/TLS)

避免明文传输账号和密码。

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 jail )

防止用户浏览系统其他目录:

chroot_local_user=YES
allow_writeable_chroot=YES

如果用户需要例外:

chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

四、限制可登录用户

方法 1:用户白名单

userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd.userlist

方法 2:禁止系统账号登录

FTP 用户应是专用账号,不要使用 rootwww-data 等。

sudo useradd -m -s /usr/sbin/nologin ftpuser

五、防火墙与端口控制

1. 只开放必要端口

  • 21:控制端口
  • 被动模式端口范围(建议限制)
pasv_min_port=30000
pasv_max_port=31000

防火墙示例(ufw):

sudo ufw allow 21/tcp
sudo ufw allow 30000:31000/tcp

六、防止暴力破解

1. 使用 fail2ban

sudo apt install fail2ban

/etc/fail2ban/jail.local

[vsftpd]
enabled = true
port = ftp
filter = vsftpd
logpath = /var/log/vsftpd.log
maxretry = 5
bantime = 3600

2. 修改默认端口(可选)

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
    
  • 禁用不必要的服务
  • 使用 SSH + SFTP 替代 FTP(更安全)
  • 如非必要,不建议公网暴露 FTP

九、更推荐方案(强烈建议)

如果业务允许: ✅ 使用 SFTP(基于 SSH)

sftp user@server

优点:

  • 加密传输
  • 无需额外服务
  • 权限由系统统一控制

如果你愿意,可以告诉我:

  • 使用的是 vsftpd / proftpd
  • 是否公网
  • 是否必须 FTP(不能改 SFTP)

我可以给你一套可直接用的配置文件

0