AWS 上配置 Paloalto GlobalProtect

AWS 上配置 Paloalto GlobalProtect

本篇文档介绍了在 AWS 上配置 Palo Alto GlobalProtect VPN 的完整流程。内容包括实例启动和初始化、防火墙接口配置、证书创建、认证方式设置、区域和地址池的建立、VPN 网关和门户的配置、客户端安装和连接测试、安全策略及 NAT 配置、保留客户端原始 IP 地址的 Ghost Pool 方法,以及主机信息收集(HIP)与授权许可的应用。

实验拓扑

image-20240729160618693

一、AWS 启动 Paloalto 实例

实例启动较慢,大约需要 10 分钟才能通过SSH登录。这里选择PAYG类型的实例(pay-as-you-go),实例启动后带有Paloalto的授权许可。

image-20240725161546094

实例设置两块网卡时,需要禁用自动分配公有 IP 功能。只有一块网卡时,才会自动分配公有 IP。

Paloalto 实例默认的第一个接口(索引标识为 0)是防火墙的管理接口,第二个网卡(索引标识为 1)是防火墙的 e1/1 接口。

我提前提前配置了安全组,放行当前公网 IP 的所有流量。管理接口需放行 SSH 和 HTTPS 流量,VPN 接口需放行面向互联网的 HTTPS 流量。

image-20240725161634389

添加第二个网络接口,默认为防火墙的e1/1数据接口。

image-20240725161638277

为防火墙实例分配两个弹性 IP 地址,管理接口的公网 IP 用于 SSH 和 HTTPS 登录配置,数据接口的公网 IP 用于 VPN 拨入。

image-20240725161909617

二、Paloalto 实例初始化

使用用户名 admin 和密钥登录防火墙,然后修改 admin 的密码,并 commit 提交。

Welcome admin.
admin@PA-VM> configure
Entering configuration mode
[edit]
admin@PA-VM# set mgt-config users admin password
Enter password   :
Confirm password :

[edit]
admin@PA-VM# commit

Commit job 2 is in progress. Use Ctrl+C to return to command prompt
.........55%75%98%..............100%
Configuration committed successfully

[edit]
admin@PA-VM#

设置防火墙 e1/1 数据接口,放行 ping、https 等管理流量,设置接口为 DHCP 自动获取 IP 地址,关联 default 虚拟路由器,关联到 untrust zone。

注意:生产环境中,VPN 拨入接口不要允许 HTTP、HTTPS、Telnet 或 SSH 协议,因为 VPN 接口面向互联网开放,可能造成安全隐患。

set network profiles interface-management-profile MgtProfile http yes
set network profiles interface-management-profile MgtProfile https yes
set network profiles interface-management-profile MgtProfile ssh yes
set network profiles interface-management-profile MgtProfile ping yes

set network interface ethernet ethernet1/1 layer3 interface-management-profile MgtProfile
set network interface ethernet ethernet1/1 layer3 dhcp-client

set network virtual-router default interface ethernet1/1
set zone untrust network layer3 ethernet1/1

commit

通过管理接口的公网 IP 登录防火墙。如果遇到浏览器证书报错或无法登录,尝试清空缓存重试或使用无痕窗口登录,使用初始化设置的密码。

image-20240725164333327

三、Paloalto 配置 GlobalProtect

3.1 Portal 与 Gateway

GlobalProtect Portal 提供集成设施的管理功能,为客户端提供配置信息,包括 Gateway 信息以及所需证书。此外,Portal 还提供 GlobalProtect 客户端软件下载页面。GlobalProtect Gateway 则与客户端之间建立加密隧道。

在大多数场景下,Portal 和 Gateway 都运行在同一台防火墙上。当公司在全国或者全球有多个数据中心,可以配置多个 Gateway,可以自动选择延迟最低的 Gateway节点作为流量转发。这个场景下,配置一个 Portal 作为客户端的初始连接点,并在不同数据中心配置多个 Gateway。客户端上的 GlobalProtect 首先会与 Portal 连接,获取配置文件并查看可用的 Gateway 节点,然后根据配置的优先级和延时自动选择合适的 Gateway 建立连接。

3.2 创建证书

在开始配置之前,以下是配置步骤的总结,以避免遗漏:

启动 AWS 上的 Paloalto PAYG 类型实例。
初始化 Paloalto 实例,设置 admin 密码,配置数据接口,并关联弹性 IP 地址。
证书配置:创建根证书并签发 VPN 证书,将根证书导入到客户端。
SSL 配置:设置 TLS 协议版本。
认证配置:创建本地用户和认证配置文件。
创建区域和 tunnel 接口:将接口加入区域,并创建 VPN 地址池。
创建 Gateway:指定服务接口,关联认证、隧道和地址池,配置隧道分割和 DNS 服务器。
创建 Portal:指定服务接口,关联认证并配置代理(指定 Gateway 和证书)。
下载并激活 GlobalProtect 客户端。
配置安全策略及 NAT:放行 VPN 区域的流量,并将流量源地址转换为防火墙的出接口地址。
测试:通过 Portal 下载客户端并连接,测试内网连通性。
测试 Ghost Pool 方式的连通性。
通过以上步骤,您可以在 AWS 环境中高效

在 “Device”-“证书管理”-“证书” 下,创建根证书,名称为 VPN-Root-CA,勾选 “证书授权办法机构”,点击生成证书。

image-20240725162619473

利用生成的根证书签发 VPN 证书,并在证书中添加 IP 属性,填写防火墙数据接口的公网 IP 地址。

image-20240726152549722

导出根证书。

image-20240726152703221

安装根证书到个人电脑。

image-20240725171706017

导入到“受信任的根证书颁发机构”中。

image-20240725171710802

创建 SSL/TLS 服务配置文件,调用创建的 VPN 证书,设置 TLS 协商的最低版本为 TLSv1.1 以上,禁用 TLSv1.0。

image-20240725172054080

3.3 认证方式

创建本地用户用于 VPN 拨号认证。

image-20240725162721316

创建认证配置文件,名称为 gp_vpn_auth_profile。

image-20240729093609021

在 “高级” 设置中只允许创建的用户认证。

image-20240726153804810

3.4 创建区域、tunnel接口、地址池

在 “Network”-“区域” 下,创建一个新的区域,名称为 GP-VPN,类型为第三层,后续的 tunnel 接口会加入该区域。

勾选 “启用用户标识”,即 User-ID,在用户认证后,将用户与 IP 地址映射到防火墙中,便于监控和控制网络流量。

image-20240725163207240

创建 tunnel 接口,指定用户 VPN 流量通过 tunnel 接口进入。

image-20240726155041612

创建 VPN 地址池,拨号后分配给客户端。

image-20240725163252027

3.5 创建VPN Gateway

在 “Network”-“GlobalProtect”-“网关”-“常规” 下,创建名称为 GP_VPN_GW 的网关,关联 e1/1 接口,勾选记录 SSL 握手成功的日志。

image-20240725163425047

在 “Network”-“GlobalProtect”-“网关”-“身份验证” 下,调用前面创建的 SSL/TLS 配置文件。添加 “客户端身份验证”,名称为 gp_vpn_gw_client,调用前面创建的身份验证配置文件。

image-20240725173918519

配置 “代理”-“隧道设置”,启用 “隧道模式”,调用前面创建的隧道接口 tunnel.1,取消勾选 “启用 IPsec”,使用 TLS 加密。除非需要动态路由,否则隧道接口上不需要 IP 地址。

image-20240725174003370

配置 “代理”-“客户端设置”,添加配置文件,名称为 gp_client_config。

image-20240729145138668

选择 “IP 池”,调用前面创建的 VPN 地址池,地址范围为 192.168.1.0/24。

image-20240725174245883

配置隧道分割,即只有当客户端去往 172.31.0.0/16 网段时,流量才会进入 VPN 通道。

image-20240725174254712

配置推送的 DNS 服务器,客户端拨号后,在客户端上会有去往 DNS 服务器的主机路由,DNS 流量会经过 VPN 隧道。

image-20240725174305439

这里可以设置VPN客户端的超时时间等配置。

image-20240725174314584

3.6 创建VPN portals

创建 GlobalProtect 门户(Portal),配置名称为 gp_vpn_portal,关联 e1/1 接口。

image-20240725175243320

配置身份验证,调用前面创建的 SSL/TLS 配置文件,创建客户端身份验证,依然调用前面创建的身份验证配置文件。

image-20240725175247202

配置 “代理”,创建 Agent 配置文件。

image-20240725175250366

在 “外部” 设置中,配置外部网关,用户拨入时首先联系 Portal,由 Portal 分配可用的网关。如果有多个网关,可以根据 IP 地址段和国家设置网关优先级。

image-20240725175256149

在 “代理” 下,添加关联前面创建的根证书。

image-20240725175259500

3.7 下载激活 GlobalProtect

下载最新版本的GlobalProtect客户端。

image-20240725142314348

激活GlobalProtect客户端。

image-20240725142411029

四、安全策略及NAT配置

在 “Policies”-“安全” 下,创建新的安全规则,名称为 GP_VPN_To_Any。

image-20240725172817833

源限制为 GP-VPN 区域的 VPN 地址池

image-20240725172835702

目的去往 any。

image-20240725172914017

查看放行的安全策略。

image-20240725172955607

配置 NAT,将来自 VPN 地址池的源 IP 地址转换为防火墙 e1/1 出接口地址。

image-20240725173123489

定义原始数据包,来自 GP-VPN 区域,目标区域为 untrust,源地址为 VPN 地址池。

image-20240726162731326

配置转换后的数据包,将源地址动态转换为防火墙的 e1/1 接口地址。

image-20240725173129921

查看PAT配置。

image-20240725173142903

提交配置。

image-20240725183552105

五、测试

在浏览器地址栏输入防火墙的数据接口公网 IP 地址,访问 Paloalto GlobalProtect Portal 页面。输入防火墙配置的本地用户名和密码。

image-20240725183608796

下载对应的GlobalProtect客户端。

image-20240725183613342

安装 GlobalProtect 客户端后,输入防火墙的公网 IP 地址,进行 VPN 拨入。

image-20240725183625882

输入用户名和密码。

image-20240726163140671

拨入后,查看“设置”。

image-20240725183632483

查看连接状态。

image-20240726163156874

在 Paloalto 防火墙所在 VPC 新建一个 EC2,模拟内部服务器,查看内网地址。

image-20240725183645292

VPN 拨号后,ping 测试内部地址。

image-20240725183649071

在防火墙上查看 ping 流量。

image-20240725183830939

查看 GlobalProtect 的拨号记录。

image-20240726163453792

在客户端上查看路由表,去往 DNS 服务器的主机路由和去往 172.31.0.0/16 网段的流量通过 192.168.1.1。

C:\>route print
IPv4 路由表
===========================================================================
活动路由:
网络目标        网络掩码          网关       接口   跃点数
          8.8.8.8  255.255.255.255            在链路上       192.168.1.1      1
  114.114.114.114  255.255.255.255            在链路上       192.168.1.1      1
       172.31.0.0      255.255.0.0            在链路上       192.168.1.1      1
   172.31.255.255  255.255.255.255            在链路上       192.168.1.1    257
      192.168.1.1  255.255.255.255            在链路上       192.168.1.1    257
  255.255.255.255  255.255.255.255            在链路上       192.168.1.1    257

查看客户端的网卡信息,拨号后创建虚拟网卡,去往 VPN 的流量会送到该网卡进行加密封装。

image-20240726170311484

抓包这个虚拟网卡的流量,可以看到加密前的流量。

image-20240726170316911

抓包本地连接的出口网卡,只能看到TLS加密流量。

image-20240726170320733

六、Ghost Pool 保留客户端原始IP地址

防火墙使用 NAT 转换客户端的源 IP 地址,是快速解决路由问题的方法,但后台服务器无法看到客户端的原始 IP 地址,只能看到防火墙的地址。为了让后端服务器查看到原始客户端 IP 地址,可以通过配置路由解决 VPN 路由问题。这种方式称为 “Ghost Pool”。

客户端分配地址为 192.168.1.0/24,在 AWS 上需要解决服务器到该网段的流量送到 Paloalto 防火墙的 e1/1 数据口。因为客户端地址池网段在 AWS VPC 中并不存在,所以称这种方式为 “Ghost Pool”。

在后端服务器所在子网的路由表中,添加去往 192.168.1.0/24 网段的流量,指向防火墙的 e1/1 接口。

image-20240725183851094

因为Paloalto防火墙需要转发流量,所以需要关闭“源/目标检查”。使用NAT方式时,不用关闭这个特性。

image-20240725183911646

停止检测“源/目标检查”。

image-20240725183928735

禁用防火墙上的NAT配置。

image-20240725184008552

客户端 ping 后端服务器测试,当禁用 NAT 并 commit 后,客户端无法与后端服务器通信。当添加路由和关闭“源/目标检查”后,又可以进行连通。

image-20240725183932457

七、主机信息收集(HIP)与授权许可

在 AWS 上启动 EC2 时选择 PAYG(pay-as-you-go)类型的实例,实例启动后带有 Paloalto 的授权许可。查看许可,如果选择 BYOL(Bring-Your-Own-License),则需自行导入 License。

image-20240729113841029

VPN 拨入时,根据客户端状态进行授权,需要使用 HIP(Host Information Profile)Checks 功能。启用 Gateway 功能的防火墙需对应许可,以下列出哪些功能需要 Gateway License。

Feature Gateway License Required?
Single external gateway (Windows and macOS) -
Single or multiple internal gateways- -
Multiple external gateways -
Internet of things (IoT) devices √
HIP Checks √
Identification of managed devices using the endpoint serial number on gateways √
HIP-based policy enforcement based on the endpoint status √
App for endpoints running Windows and macOS -
Mobile app for endpoints running iOS, Android, Chrome OS, and Windows 10 UWP √
App for endpoints running Linux √
App for endpoints running IoT √
IPv6 for external gateways √
IPv6 for internal gateways(change to default behavior—starting with GlobalProtect app 4.1.3, a GlobalProtect subscription isn't required for this use case) -
Clientless VPN(Not supported on multi-VSYS firewalls if the traffic must traverse multiple virtual systems) √
Split tunneling based on destination domain, client process, and video streaming application √
Split DNS √
Adding a compromised device to the quarantine list √
GlobalProtect App Log Collection for Troubleshooting(Panorama appliance running 9.0 or later and PAN-OS 8.1 or later) √
Enforces GlobalProtect connections with FQDN exclusions √
Redistribute HIP Reports √

想要检测主机的HIP信息,需要先在Object中定义HIP对象。

image-20240729113959706

然后在“网关”-“代理”-“HIP通知”中调用。

image-20240729113941366

八、文档链接