pasv_promiscuous=yes 的 VSFTPD 中真正的安全风险是什么?

ran*_*ott 5 security ftp vsftpd

在 VSFTPD 中,pasv_promiscuous 的默认值为“NO”,手册页指出:

仅当您知道自己在做什么时才启用!唯一合法的用途是在某种形式的安全隧道方案中,或者可能是为了促进 FXP 支持。

虽然我们从来没有遇到过这个问题,但我们现在有一个客户显然需要将此设置为“是”,以便他们可以通过他们的代理进行连接。我在网上看到许多建议将其设置为 YES 以解决我们遇到的问题,但我找不到有关此设置的真正风险的任何详细信息。

我一直在试图弄清楚这是在防止什么,我能想到的最好的方法是它可以防止有人在登录后和打开数据连接之前试图劫持连接。似乎(虽然我不确定)攻击者必须知道用于被动连接的端口并反复尝试访问这些端口,以期在适当的时候抓住一个打开的端口,但也许比这更容易?假设这样的攻击成功了,那会给攻击者带来什么?我假设被劫持的用户会话具有任何访问权限。

有没有人对 pasv_promiscuous=YES 的现实安全风险有一个很好的解释?

Mar*_*ryl 7

当 FTP 传输以被动模式(当今最常见的模式)启动时,FTP 开始侦听随机端口。客户端连接到该端口并开始发送/接收传输的文件。

如果pasv_promiscuous关闭(默认),vsftpd 服务器会检查连接到传输端口的客户端(IP 地址)是否与连接到 FTP 控制连接(请求传输)的客户端相同。

pasv_promiscuous打开时,不进行任何检查。因此,如果潜在的攻击者猜测随机端口号(这可能不是随机的,而是增量的,因此很容易猜测),他/她可以在合法客户端之前连接到传输端口并窃取数据(在下载的情况下) )或偷偷输入他/她自己的数据(如果上传)。

使用 FTPS,更安全的是require_ssl_reuse在数据连接上强制使用相同的 TLS/SSL 会话。