为了加强保护措施,有效防范主机标头攻击,默认情况下,Unified Access Gateway (UAG) 会验证每项入站请求中的 HTTP 主机和 X-Forwarded-Host 标头。将对允许的主机标头列表(包括动态计算和明确配置的主机名和端口)强制执行此项验证。
主机标头验证列表
自动允许列表
保存 UAG 网络、高可用性和 Edge 服务设置时,会自动将以下条目添加到“自动允许的主机标头”列表中。
自动允许的列表中的条目仅供参考。
- 各个网络接口 IP
- 系统配置中的 UAG 名称
- 高可用性虚拟 IP
- Horizon 设置
- 为 Tunnel 和 Blast 配置的外部 URL
- Blast 外部 URL 和其他 Blast 外部 URL
- Tunnel 外部 URL 和其他 Tunnel 外部 URL
- 主机端口重定向映射条目
- Web 反向代理设置中的代理主机模式和外部 URL
如果具有以下主机标头格式的任何入站请求的值与自动允许的列表中的条目匹配,则允许这些请求:
- <主机名或 IP>
- <主机名或 IP>:443
- <主机名或 IP>:80
- <主机名或 IP>:9443
- <主机名或 IP>:<other-auto-allowed-port>
接受的主机标头的示例
场景 1:如果 uag.myco.com 被自动允许,则接受以下主机标头:
uag.myco.comuag.myco.com:443uag.myco.com:80(当在端口 9443 上连接到管理接口时不允许)uag.myco.com:9443(仅当在端口 9443 上连接到管理接口时才允许)
场景 2:如果 test.com:10443 被自动允许,则仅接受 test.com:10443。
明确配置的列表
对于主机标头值不是动态计算值的 HTTP 请求,如果到达 Unified Access Gateway,则管理员必须使用以下选项之一,将这些值明确添加到允许列表中:
-
选项 1:使用“管理 UI > 系统配置”中的允许的主机标头设置
-
选项 2:使用
.ini文件(通过 PowerShell 脚本部署时)示例配置
[General]
allowedHostHeaderValues=abc.com,abc.com:10443,uag1.example.com,uag-lb.example.com -
选项 3:使用 CLI 命令:
adminreset --allowedHostHeader
特定于端口的验证逻辑
-
例如,如果添加了纯主机名
uag1.myco.com,Unified Access Gateway 会自动允许包含端口为 443、80、9443 和空端口的主机标头的请求。 -
如果添加了具有特定端口的主机名(例如
uag1.myco.com:10443),则仅允许具有明确列出的 host:port 的请求。
允许的标头格式的示例
| 允许的主机标头 | 入站主机标头 | 是否允许? |
|---|---|---|
uag.myco.com | uag.myco.com:443 | 是 |
uag.myco.com | uag.myco.com:9443 | 是 |
uag.myco.com:10443 | uag.myco.com:9443 | 否(管理员逻辑) |
uag.myco.com:10443 | uag.myco.com:443 | 否 |
主机标头验证故障排除
如果入站请求中的主机标头值不是允许列表的一部分,则 UAG 使用 HTTP 400 进行响应。
检查以下日志文件中的拒绝消息:
/opt/omnissa/gateway/logs/admin.log(管理员服务)
/opt/omnissa/gateway/logs/esmanager.log(Horizon/Web 反向代理流量)
常见日志消息
-
Rejecting request from <source>. The request was rejected because the domain <uag-hostname> is untrusted. -
UAGW00388: Sending bad request. Incoming request does not have valid host header: <host-header-value>, XFH: <xfh-header-value> -
Redirect host <redirect-host> does not match the allowed hosts. Hence sending 400
此页面对您有帮助吗?