2.2. 已知的代理
当自动化控制器配置有 REMOTE_HOST_HEADERS = ['HTTP_X_FORWARDED_FOR', 'REMOTE_ADDR', 'REMOTE_HOST']
时,它假定 X-Forwarded-For
的值源自 Tower 前面的代理/负载均衡器。如果自动化控制器可以在不使用代理/负载均衡器的情况下访问,或者代理没有验证标头,那么 X-Forwarded-For
的值可以被断断为原始 IP 地址。
在 REMOTE_HOST_HEADERS
设置中使用 HTTP_X_FORWARDED_FOR
可能会存在安全漏洞。
要避免这种情况,您可以配置允许的已知代理列表。
流程
-
在导航面板中,选择
。 在 Proxy IP Allowed List 字段中输入服务应该信任自定义远程标头值的代理 IP 地址列表。
注意不在已知代理列表上的负载均衡器和主机会导致请求被拒绝。
2.2.1. 配置已知的代理
要为自动化控制器配置已知代理列表,请将代理 IP 地址添加到 System Settings 页面中的 Proxy IP Allowed List 字段中。
流程
-
在导航面板中,选择
。 在 Proxy IP Allowed List 字段中,使用以下示例的语法输入允许连接到您的自动化控制器的 IP 地址:
代理 IP 允许列表条目 示例
[ "example1.proxy.com:8080", "example2.proxy.com:8080" ]
重要-
代理 IP 允许列表需要列表中的代理正确清理标头输入,并正确设置
X-Forwarded-For
值等于客户端的实际源 IP。自动化控制器可以依赖 Proxy IP Allowed List 中的 IP 地址和主机名来为X-Forwarded-For
提供非欺骗的值。 不要将
HTTP_X_FORWARDED_FOR
配置为 Remote Host Headers 中的项目,除非满足以下条件:- 您使用带有 ssl 终止的代理环境;
-
代理提供
X-Forwarded-For
标头的清理或验证处理,以防止客户端欺骗; -
/etc/tower/conf.d/remote_host_headers.py
定义PROXY_IP_ALLOWED_LIST
,它只包含可信代理或负载均衡器的原始 IP 地址。
-
代理 IP 允许列表需要列表中的代理正确清理标头输入,并正确设置
- 点 保存设置。