0%

FTP

FTP 通信分为主动 active 被动 PASV 模式。

FTP 通信会占用两个 TCP 通道:一个用于命令,一个用于数据。

主动、被动是站在(响应命令的)服务端的角度来说:
FTP 客户端首先向服务端 21 端口发送命令,然后

  • (最初只有)主动模式:客户端启动端口,服务端连接
  • (解决痛点)被动模式:服务端启动端口,客户端连接

windows 平台下 cmd/powershell 中的 ftp 命令不支持被动模式,文件管理器支持被动模式。

在 linux 下部署 ftp 服务使用 vsftpd ,其配置中比较敏感的一项(以及关联的两项)

  • chroot_local_user [=YES 开启 chroot()]
  • chroot_limit_enable [=YES 对上述配置做出微调] 和 chroot_list_file

建议三者组合,针对个别敏感 ftp 账户(或者全部 ftp 账户)开启 chroot() =将用户限制在主目录,避免切换到主目录之外。

此外,用户主目录下可能存在权限异常的文件(和目录)也会直接影响到读写、ls 查看、cd 切换工作目录等操作。

TFTP

FTP服务一般运行在 20 和 21 两个端口,分为主动模式和被动模式。

TFTP 使用 UDP(端口69)作为其传输协议(不像 FTP 使用 TCP 端口 21)。