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),照抄配置前先确认发行版实际安装的是哪一个软件。