跳到主要内容

7. 安全考虑事项

  1. 安全考虑事项

允许任意客户端向任意目标建立隧道存在重大风险, 因为恶意行为者可能发送流量, 并让这些流量看起来归属于 UDP 代理. 支持 UDP 代理的 HTTP 服务器应当将该能力限制给已认证用户使用.

有些软件和网络部署会根据传入请求的源 IP 地址执行访问控制检查. 例如, 某些软件如果看到请求来自 127.0.0.1, 就允许未认证的配置变更. 这类软件可能与 UDP 代理运行在同一主机上, 或处于同一广播域中. 被代理的 UDP 流量随后会以属于 UDP 代理的源 IP 地址被接收. 如果该源地址被用于访问控制, UDP 代理客户端就可能借助 UDP 代理提升其原本不具备的访问权限. 为避免这种未授权访问, UDP 代理需要禁止面向脆弱目标的 UDP 代理请求, 例如 UDP 代理自身地址、localhost、link-local、多播地址和广播地址. 拒绝此类请求时, UDP 代理可以使用 [PROXY-STATUS] 第 2.3.5 节中的 destination_ip_prohibited Proxy Error Type.

从可能被滥用于拒绝服务 (DoS) 攻击基础设施的角度看, UDP 代理与 TCP CONNECT 代理有许多相似之处. 二者都能向攻击目标隐藏攻击者源地址. 对于无状态容量型攻击 (例如 TCP SYN flood 或 UDP flood), 两类代理都会把流量转发给目标主机. 对于通过 TCP CONNECT 代理发送的有状态容量型攻击 (例如 HTTP flooding), 只有当目标通过 TCP SYN-ACK 表示愿意接受数据后, 代理才会发送数据. 一旦通往目标的路径被淹没, TCP CONNECT 代理将不再收到目标回复, 并会停止发送数据. UDP 不会在 UDP 代理和目标之间建立共享状态, 因此在相同场景下 UDP 代理可能继续向目标发送数据. UDP 代理可以在观察到目标响应之前限制愿意转发的 UDP 数据包数量, 但当攻击目标是开放 UDP 端口且其上运行的协议会响应时, 这种限制对 DoS 攻击的保护有限, 因为该响应会被 UDP 代理解释为目标愿意接受 UDP. 这类数据包数量限制也可能影响合法流量.

[HTTP-DGRAM] 第 4 节描述的安全考虑同样适用于这里. 由于可以通过 UDP 隧道传输 IP 数据包, [TUNNEL-SECURITY] 中的指导也可能适用.