首页/安全/安全加固速查/FTP 服务加固或替换为 SFTP
服务与端口收敛50 条

FTP 服务加固或替换为 SFTP

FTP 明文且被动端口范围难管:能替换就替换为 SFTP/HTTPS;确需 FTP 时按最小权限与 TLS 加固。

安全加固速查安全更新于 2026-10-13

FTP 与 SFTP 的差别

FTP 是明文协议:账号口令和文件内容在网络里裸奔,被动模式还要额外开放一段随机端口,防火墙策略难以收敛。SFTP 走 SSH 加密通道(默认 22 端口),复用系统账号与密钥认证,对使用者几乎是零成本替换。基线的态度很明确:能替换就替换成 SFTP 或 HTTPS;确实无法替换时,必须启用 TLS 加密并锁到最小权限。

基本信息

适用平台Linux(vsftpd / proftpd)
推荐替代SFTP(OpenSSH)/ HTTPS
风险等级高
基线要求优先 SFTP;保留 FTP 时必须 TLS 加密加最小权限
关键端口控制 21,数据被动模式自定义范围

典型使用场景

  • 老旧设备或系统只支持 FTP,无法更换协议时的加固场景
  • 给外部合作方开设文件收发账号,需要限制目录与来源
  • 内部自动化脚本仍在用 FTP 拉取报表与日志,准备逐步迁到 SFTP
  • 数据交换接收目录疑似被挂马,需要快速核查与封堵
  • 配置被动模式端口范围并与防火墙策略联动

先核查暴露面

先核查暴露面
ss -tlnp | grep ':21 '      # 确认 21 端口由哪个进程监听
systemctl status vsftpd      # 服务状态与启动方式
grep -Ev '^#|^$' /etc/vsftpd.conf | grep -Ei 'anonymous|write|chroot|ssl'   # 只看生效的关键项
testparm -a 2>/dev/null | head   # proftpd 环境用它检查语法与生效配置

vsftpd 加固要点

vsftpd 加固要点
anonymous_enable=NO      # 关闭匿名登录
local_enable=YES         # 允许本地账号登录
write_enable=NO          # 全局关闭写,只对确需上传的目录单独放行
chroot_local_user=YES    # 把用户限制在自家目录内
ssl_enable=YES           # 启用 TLS 加密
pasv_min_port=50000      # 被动模式端口范围收敛,便于防火墙放行
pasv_max_port=50100

复核必查项

检查项含义处置
匿名访问anonymous_enable 是否为 YES立即改 NO 并排查上传目录
写权限write_enable 与目录可写仅在必须上传的目录放开
chroot用户能否越出自家目录启用 chroot_local_user
加密是否启用 TLS无 TLS 的 FTP 等同一律明文
被动端口pasv_min/max_port 范围同步在防火墙放行对应区间
匿名可写的 FTP 目录是挂马与恶意文件传播的重灾区:发现后先停服务,排查已上传内容,改好配置再上线。
proftpd 的配置写法与 vsftpd 完全不同(如 <Anonymous> 段、DefaultRoot),照抄配置前先确认发行版实际安装的是哪一个软件。

易错点

  • 被动模式端口范围没同步放行防火墙,表现为能登录但传输卡死,把 pasv_min/max_port 写进防火墙规则
  • chroot 目录若要求可写会降低安全性,应给用户一个独立、不可写、也进不去上级的根目录
  • FTP 账号直接复用系统登录账号,口令被嗅探后危害扩散,应给文件传输单独建受限账号
  • 只加密登录不加密数据(TLS 配置错误),上线前用抓包或客户端明确确认传输通道已加密

数据来源与参考

  • vsftpd 官方文档
  • 等保 2.0:传输保密性
  • CIS Benchmark:FTP 条目

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌