5.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 字段中配置允许使用 PROXY_IP_ALLOWED_LIST 字段的已知代理列表。不在已知代理列表上的负载均衡器和主机将导致请求被拒绝。
5.2.1. 配置已知的代理
要为自动化控制器配置已知代理列表,请将代理 IP 地址添加到自动化控制器设置页面中的 PROXY_IP_ALLOWED_LIST 字段中。
流程
-
在自动化控制器中,进入到
。 在 PROXY_IP_ALLOWED_LIST 字段中,输入允许连接到您的自动化控制器的 IP 地址,如下例所示:
PROXY_IP_ALLOWED_LIST 条目示例
[ "example1.proxy.com:8080", "example2.proxy.com:8080" ]
-
PROXY_IP_ALLOWED_LIST
需要列表中的代理正确清理标头输入,并正确将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 地址。