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

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

在 VSFTPD 中, 的默认值为pasv_promiscuousNO手册页显示:

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

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

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

有人可以很好地解释一下现实的安全风险是什么吗pasv_promiscuous=YES

答案1

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

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

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

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

相关内容