运维笔记

Palo Alto GlobalProtect VPN 翻车实录:最佳实践 vs 血泪教训

Cybersecurity 技术可视化

别急着抄官方文档

上周帮一个客户救火。他们的 GlobalProtect 部署了三个月,用户天天骂,IT 团队快被逼疯。症状?连上了但啥也打不开,或者根本连不上。

我上去一看配置——标准的“照着文档抄”风格。门户、网关、证书全配了,但就是不好使。

这玩意儿我踩坑踩了五年,今天把那些官方文档不会告诉你的东西倒出来。

认证配置:别把鸡蛋放一个篮子里

证书 vs SAML vs LDAP

官方说“最佳实践是用公共 CA 签名的证书”。这话没错,但只说了一半。

看这个配置:

# 门户设置
set shared portal GlobalProtect-Portal authentication authentication-profile GP-Auth
set shared portal GlobalProtect-Portal authentication authentication-profile GP-Auth allow-list enable yes

# 认证配置文件
set shared authentication-profile GP-Auth method certificate
set shared authentication-profile GP-Auth method cloud-identity-engine

看到问题了吗?只配了证书。用户证书过期了怎么办?直接翻车。

我现在的做法是双因子认证——证书 + SAML。证书做第一层,SAML 做第二层。这样即使证书有问题,用户还能通过 SAML 登录。

认证超时陷阱

这玩意坑了我两次。默认的认证超时是 30 秒。如果你的 IdP 响应慢一点(比如 Azure AD 偶尔抽风),用户就看着“正在连接”转圈然后失败。

# 调大超时
set shared portal GlobalProtect-Portal agent auth-timeout 60

调到 60 秒,世界安静了。

隧道模式:官方说不要 split tunnel,但我偏要

Reddit 上有人说了句大实话:“Pan doesn’t recommend split tunnel, but i do when your users use their private devices.”

官方推荐全隧道(full tunnel),把用户所有流量都通过 VPN 走。安全吗?安全。但用户体验?烂到家。

特别是那些用私人设备的用户——他们想上 Netflix、看 YouTube,结果流量全走公司 VPN,延迟爆炸,IT 部门被骂成狗。

我一般这么配:

# 隧道设置 - 仅公司流量走 VPN
set shared gateway GlobalProtect-Gateway tunnel split-tunnel include-domains "*.corp.company.com"
set shared gateway GlobalProtect-Gateway tunnel split-tunnel include-domains "10.0.0.0/8"
set shared gateway GlobalProtect-Gateway tunnel split-tunnel exclude-domains "0.0.0.0/0"

关键点:include 列表要精准。别偷懒写个 0.0.0.0/0 再 exlude,那等于全隧道。

HIP 检测:别让 BYOD 变成 BYOD (Bring Your Own Disaster)

HIP (Host Information Profile) 是 GlobalProtect 最被低估的功能。

我见过一个客户的配置——所有设备都能连,包括个人笔记本上的盗版 Windows 7。结果呢?勒索病毒从 VPN 用户直接打进内网。

看看这个 HIP 配置:

# HIP 对象 - 必须安装防病毒
set shared hip-object Must-Have-AV criteria antivirus-product package-name "CrowdStrike Falcon"
set shared hip-object Must-Have-AV criteria antivirus-product package-name "Symantec Endpoint Protection"
set shared hip-object Must-Have-AV criteria antivirus-product package-version greater-equal "14.0"

# HIP 配置文件 - 不符合就隔离
set shared hip-profiles Block-No-AV match all
set shared hip-profiles Block-No-AV match hip-object Must-Have-AV
set shared hip-profiles Block-No-AV action deny

但别配太死。我见过有人配了“必须安装特定版本”,结果用户更新软件后版本号变了,直接被踢下线。

最佳实践:版本号用 greater-equal 而不是 equal,留点容错空间。

网关和门户:同一个接口?可以,但有代价

官方文档说:“If you configure a gateway and portal on the same interface, we recommend that you…”

说实话,小公司这么做没问题。但规模上来了,你会在日志里看到一堆 portal-gateway conflict 的报错。

我建议:

规模配置方式说明
< 500 用户同一接口简单,维护成本低
500-2000 用户分开接口避免冲突,便于排错
> 2000 用户多网关集群负载均衡 + 高可用

证书管理:公共 CA vs 内部 CA

这又是一个官方说一套、实际做一套的地方。

公共 CA 签名证书:贵,但省心。用户设备上不需要额外装根证书。

内部 CA 签名证书:免费,但要管理 PKI 基础设施。最坑的是——用户设备上必须装你的根证书,否则连不上。

我踩过最大的坑:内部 CA 根证书过期了,所有 VPN 用户同时掉线。那天我手机被打爆了。

现在我用 Let’s Encrypt。免费,自动续期,公共信任。配置起来也不复杂:

# 配置 ACME 自动续签
set shared certificate-profile GlobalProtect-Cert profile-type acme
set shared certificate-profile GlobalProtect-Cert acme email admin@company.com
set shared certificate-profile GlobalProtect-Cert acme domain vpn.company.com

那些没人告诉你的事

1. 连接失败?先看日志

用户说“连不上”,90% 的情况是 DNS 解析问题。GlobalProtect 对 DNS 极其敏感。

# 检查 DNS 解析
dig vpn.company.com

# 看客户端日志 (Windows)
%ProgramData%\PaloAltoNetworks\GlobalProtect\PanGPA\PanGPA.log

2. 别用默认端口

默认的 443 端口被各种扫描器盯着。换个端口,能挡住 90% 的自动化攻击。

set shared gateway GlobalProtect-Gateway portal port 8443

3. 用户设备上的 GlobalProtect 版本

用户设备上装的是旧版 GlobalProtect?等着出问题吧。新版本修复了无数连接相关的 bug。

# 强制更新客户端
set shared portal GlobalProtect-Portal agent upgrade-check-interval 60
set shared portal GlobalProtect-Portal agent force-upgrade yes

总结表:GlobalProtect 最佳实践速查

配置项官方推荐我的推荐原因
认证方式单因子双因子 (证书 + SAML)单因子挂了就全挂
隧道模式全隧道分隧道 (精准 include)用户体验优先
证书来源公共 CALet’s Encrypt免费 + 自动续签
网关/门户同一接口分开接口 (500+用户)避免冲突
HIP 检测可选必须防 BYOD 灾难
认证超时30s60s给 IdP 留余量
升级策略手动强制少接投诉电话

FAQ

GlobalProtect VPN 到底好不好用?

看你怎么配。配好了很稳,配砸了天天被骂。比 AnyConnect 好在和 Palo Alto 生态集成度高,坏在学习曲线陡。

怎么配置 GlobalProtect VPN?

三步走:门户配置(认证 + 客户端设置)→ 网关配置(隧道参数 + 安全策略)→ 证书配置。别跳步骤,跳一步后面翻车。

GlobalProtect 是用 SSL 还是 IPSec?

都支持。默认是 SSL (TLS),也可以切到 IPSec。我建议用 SSL,兼容性好,防火墙穿透更容易。

为什么 GlobalProtect 连接失败?

最常见的原因:DNS 解析失败、证书不信任、认证超时、客户端版本太旧。先看日志,别瞎猜。


最后说一句:GlobalProtect 这东西,配置文档写得跟天书似的。别照着文档一字不差地抄,理解每行配置在做什么,才是正道。