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

八、文档链接