1. FTP审计基础:协议、日志与审计概念

1.1 FTP协议的核心要点

FTP这东西,说白了就是文件传输的“老炮儿”。从1971年诞生到现在,还在大量使用。我见过不少人觉得它过时了,但在内网批量传大文件、设备日志备份、甚至工业控制系统里,FTP依然是主力。

FTP的核心就两个连接:

  • 控制连接(21端口):负责发命令,比如USER、PASS、LIST、RETR、STOR。它不走业务数据,说白了就是“指挥所”。
  • 数据连接(20端口或随机端口):真正传文件用的。嗯,这里容易搞混,因为有两种模式:主动模式和被动模式。
模式 建立方式 常见坑
主动模式(PORT) 服务端主动连客户端的高位端口(20→客户端随机端口) 客户端有防火墙时就拜拜了
被动模式(PASV) 服务端开一个随机端口,客户端连过去 服务端防火墙得放开高位端口范围
我的习惯:做审计日志采集时,被动模式的日志更容易抓全。因为数据连接的服务端端口是固定的范围,日志记录策略好配置。主动模式带来的临时端口太多了,你会漏掉很多数据连接的记录。

1.2 审计日志的概念

审计日志是什么?就是记录“谁、在什么时间、从哪里、做了什么操作、结果如何”。对于FTP来说,这些信息都在日志里躺着。但关键问题在于——怎么把原始日志变成可追查的证据链。

FTP审计日志的核心字段:

  • 时间戳(精确到毫秒,最好带时区)
  • 客户端IP与端口
  • 用户名(如果是匿名登录,就是anonymous)
  • 操作类型(PUT/GET/DELETE/LIST等)
  • 文件路径与文件名
  • 传输大小与耗时
  • 最终状态码(200成功?550失败?)

你想想看,如果这些字段不全,事后追查的时候你根本搞不清是谁传了什么文件。我在项目里见过一个经典案例:日志里只有IP和操作码,没有文件名,结果安全事件来了根本没法定位恶意文件——这就是典型的日志设计缺陷。

经验之谈:很多FTP服务器的默认日志是不记录文件完整路径的。比如vsftpd的log默认就只记文件名不记路径。你审计的时候一定要确认日志配置,否则查起来等于大海捞针。

1.3 为什么FTP日志如此重要

说实话,很多公司对FTP日志的态度就是“能存就存,丢了拉倒”。但真出事了,例如内部员工泄露代码、外部攻击者偷走配置文件,日志往往是唯一的线索。

FTP日志的四大价值:

  1. 事中监控:实时发现异常行为,比如凌晨三点往海外IP传大文件。
  2. 事后追溯:出了事能还原整个攻击路径。
  3. 合规审计:很多行业标准(如等保2.0、SOX)明确要求保存文件传输日志不少于6个月。
  4. 故障排查:比如传文件老是断,日志能告诉你是不是超时还是被防火墙拦截了。
注意避坑:我曾经遇到过一个客户,FTP日志只保留7天。结果等保测评的时候被扣了分,因为要求至少180天。别以为审计日志就是技术问题——它也是合规问题。你没日志,等于你没法证明自己合规。

1.4 FTP审计与安全事件的关系

很多安全事件的入口就是FTP。为什么?因为FTP的认证方式太简单了,只有用户名和密码。如果密码弱,或者干脆就没禁掉匿名登录,那基本等于把服务器大门敞开。

典型的FTP攻击路径:

  • 蠕虫扫描开放21端口的服务器
  • 暴力破解弱口令(admin/admin、root/123456这种)
  • 登录成功后,上传webshell或恶意脚本
  • 或者直接下载数据库配置文件

这些攻击步骤,每一步都会在审计日志里留痕。但前提是你的日志配得够全、够细、够久。我记得有一次攻防演练,红队从FTP日志里发现了蓝队的一台备机IP——就因为他们日志里记录了尝试连接的源IP,而那个IP不属于任何已知设备。你说细节重要不重要?

下面这张图总结了FTP审计金字塔的关系:底层是原始日志,中间层是结构化记录,顶层才是我们真正需要的可解释的审计线索。

FTP审计三层体系结构 FTP审计三层体系 可解释的审计线索 谁?什么时间?什么文件?结果如何? 结构化日志记录 时间戳 | 源IP | 用户名 | 操作码 | 文件路径 | 大小 | 状态码 字段完整 · 时区统一 · 格式规范 原始FTP日志 vsftpd / ProFTPD / IIS FTP / Syslog 原始输出 混杂 · 格式不一 · 可能缺字段 · 需要清洗 常见陷阱 日志缺文件路径 · 不记录端口 · 时区不对 审计目标 清晰的时间线 · 完整的操作还原 · 可司法举证 数据价值提升方向

1.5 日志审计的基本概念

聊到这儿,我得把审计的三个基本概念说清楚:日志记录、日志分析、日志审计。很多人混为一谈,其实不一样。

三者区别:

  • 日志记录:就是服务器吐出来的原始数据,存到文件或者数据库里。这一步只管“有没有记到”。
  • 日志分析:对原始日志做格式解析、字段提取、统计报表。比如统计某用户今天传了多少个文件。
  • 日志审计:在分析的基础上,对照安全策略或合规要求,去判断“这个行为是否合规、是否异常、是否需要告警”。这是更高一层的事。

说实话,很多公司在日志记录这一步就卡住了。比如vsftpd默认日志格式很简陋,只记录日期、IP、操作和文件名,连用户都不记——这种日志基本没法做审计。我建议至少要启用扩展日志模式,把所有字段都吐出来。

核心原则:先保证日志字段完整,再谈分析,最后做审计。底子没打好,上面都是空中楼阁。