如何设置 Azure 点到站(Point-to-Site)VPN 隧道
Dec 17, 2024
本文将带您完成以下步骤:从运行 Netwrix Access Analyzer 的 Windows 服务器配置点到站(Point-to-Site)VPN 连接,以便您发现并监控所有 Azure SQL 数据库。
背景
当您在 Microsoft Azure 云中托管 SQL 数据库时,可能需要从外部网络访问这些数据库。设置连接有两种方式:
- 公用终结点— 可以为每个 Azure SQL 数据库定义一个公用终结点,允许外部应用程序访问。出于安全考虑,这需要将需要访问数据库的外部网络地址池中的 IP 地址(客户端地址)加入白名单。
- 虚拟专用网络(VPN)— 另外,您可以在外部网络或应用程序与托管 Azure SQL 数据库的 Azure 环境之间建立 VPN 连接。此选项不需要为 Azure SQL 数据库定义公用终结点。VPN 连接可以是站点到站点(site-to-site)或点到站点(point-to-site):
- 站点到站点(site-to-site)VPN 连接 可让整个外部网络中的应用程序无缝访问 Azure SQL 数据库。
- 点到站点(point-to-site)VPN 连接 适用于位于 Azure 之外的单个客户端计算机。本文博客介绍的就是这一选项。
Azure 点到站点(Point-to-Site)VPN 设置
第 1 步。创建根证书。
在使用 Azure 证书身份验证时,身份验证需要客户端证书,因此第一步是创建并导出自签名根证书。请在运行 Windows 10 或 Windows Server 2016 的计算机上运行下面的 PowerShell 脚本。(或者,如果已安装 Windows 10 SDK,你可以使用 makecert 工具来创建自签名证书。)
$cert = New-SelfSignedCertificate -Type Custom -KeySpec Signature `
-Subject “CN=AzureRootCert” -KeyExportPolicy Exportable `
-HashAlgorithm sha256 -KeyLength 2048 `
-CertStoreLocation “Cert:CurrentUserMy” -KeyUsageProperty Sign -KeyUsage CertSign
此脚本会在 Certificates-Current userPersonalCertificate 中创建名为 AzureRootCert 的根证书。你可以使用证书管理工具(certmgr.exe)查看:
第 2 步。创建客户端证书。
使用下面的 PowerShell 脚本创建客户端证书。该脚本将生成一把自创建之日起有效期为 6 年的密钥;请根据你的需求调整该期限。
New-SelfSignedCertificate -Type Custom -DnsName P2SChildCert -KeySpec Signature `
-Subject “CN=AzureChildCert” -KeyExportPolicy Exportable `
-HashAlgorithm sha256 -KeyLength 2048 `
-CertStoreLocation “Cert:CurrentUserMy” `
-NotAfter (Get-Date).AddYears(6)`
-Signer $cert -TextExtension @(“2.5.29.37={text}1.3.6.1.5.5.7.3.2”)
这会创建一个名为 AzureChildCert 的客户端证书,存放在“Certificates-Current userPersonalCertificate”中。你也可以使用证书管理工具(Certificate Manager Tool)查看:
第 3 步。导出根证书的公钥部分。
接下来,我们需要导出在第 1 步中创建的根证书的公钥部分。
3.1. 首先,按照下图所示启动“Certificate Export Wizard”:
"Export..." option highlighted."
decoding="async"
/>
3.2. 在 Certificate Export Wizard 的欢迎界面中,单击 Next 以继续。
3.3. 在“Export Private Key”界面中,选择默认选项“ No, do not export the private key ”,然后单击 Next 。
3.4. 在“Export File Format”界面中,选择 Base-64 encoded X.509 (.CER) 选项,然后单击 Next 。
3.5. 在“File to Export”界面中,浏览并选择要保存证书的位置,指定证书名称,然后单击 Next 。
3.6. 在下一个界面中,单击 Finish 以导出证书。此文件中的信息将在后续步骤中用于 Azure VPN 配置。
步骤 4。导出客户端证书(可选)。
仅当您需要从用于创建证书的服务器以外的服务器配置到 Azure 的 VPN 连接时,此步骤才是必需的。
4.1. 如下所示启动“证书导出向导”:
4.2. 在“证书导出向导”的欢迎界面上,单击 下一步 继续。
4.3. 在“导出私钥”界面上,选择 是,导出私钥,然后单击 下一步。
4.4. 在“导出文件格式”屏幕上选择默认选项:
4.5. 为客户端证书指定密码。由于该证书可用于对 Azure VPN 进行身份验证,请务必使用强密码对其进行保护。
4.6. 在“要导出的文件”向导屏幕上,输入文件名,然后单击 下一步。
4.7. 确认设置,然后单击 完成 以导出证书。
步骤 5. 配置虚拟网络网关。
接下来,你需要登录 Azure 门户并查找虚拟网络网关。如果不存在,请在继续之前创建一个(请参阅 Azure 文档,了解如何创建虚拟网络和 Gateway 子网)。
5.1. 点击虚拟网络网关的超链接。我的名称是 Gateway-pkjuebl4yqscro。
5.2. 在配置界面上,点击 Point-to-site configuration 链接。
5.3. 找到在第 3 步中导出的根证书,并使用你选择的文本编辑器打开它。证书内容看起来会类似于下面的截图。我之所以故意展示证书数据的全部内容,是因为我没有打算将其永久保留在 Azure 中;我只创建它是为了撰写这篇博客。
5.4. 在文本编辑器中删除换行符,因为 Azure 需要所有证书数据都位于同一行。注意不要删除密钥的任何字符!然后将证书数据复制到剪贴板。
5.5. 现在返回到 Azure 门户中的虚拟网络网关 Point-to-Site 配置界面。在页面的 Root Certificate 部分:
- 为证书提供一个名称。
- 将第 5.3 步中的证书内容粘贴到 Public certificate data
- 确保将 Tunnel Type设置为 IKEv2 and SSTP (SSL),并将 Authentication Type 设置为 Azure certificate。
单击 Save 以保存设置。
步骤 6。下载并执行 VPN 客户端软件包。
6.1. 此时,您应使用下方截图中所示的链接下载 VPN 客户端:
6.2. 下载内容是一个包含三个目录的 zip 文件。其中两个目录包含适用于 32 位和 64 位平台的 VPN 客户端软件安装文件。第三个目录名为 Generic ,其中包含 VPN 配置信息文件。
假设您使用的是 64 位 Windows 操作系统,请导航到 WindowsAmd64 目录并执行 VPN 客户端软件包。它将创建一个名为 vnet-xxxxxxx 的 Azure vnet。在我的例子中,名称是 vnet-fvmisql。
步骤 7。设置 VPN 连接。
选择新的 VPN 连接配置文件,然后点击 Connect。如果对你有效(我真心希望如此),就完成了!
不过,它可能无法正常工作。你可能会遇到错误:“Error 798 – A certificate could not be found that can be used with this Extensible Authentication Protocol”。在这种情况下,你需要按照下面的说明手动设置一个可用的 VPN 连接。
步骤 8。如有必要,请手动设置 VPN 连接。
如果你计划在其他计算机上设置 VPN 连接,那么需要将客户端证书导入到该计算机。
8.1. 打开“网络和共享中心”,然后点击 Set up a new connection or network。
8.2. 在“选择连接选项”屏幕上,选择 连接到工作场所 ,然后单击 下一步。
8.3. 在“你是否要使用你已经拥有的连接?”屏幕上,选择 否,新建连接 选项,然后单击 下一步。
8.4. 在“你想如何连接?”屏幕上,单击 使用我的 Internet 连接(VPN) 选项
8.5. 导航到从 Azure 下载的 VPN 客户端包中的 通用 文件夹。打开 VpnSettings 文件,并复制 Azure VPN 网关的公共名称。
8.6. 在“输入要连接的 Internet 地址”屏幕上,将复制的文本粘贴到“Internet 地址”框中。填写目标名称,其余所有选项保持默认设置。单击 创建。
8.7. 返回到 Network and Sharing Center ,然后单击 Change adapter settings 链接。右键单击你已设置的 VPN 连接,然后选择 Properties 。检查 VPN 地址或主机名。
8.8. 转到“Security(安全性)”选项卡。在“Data encryption(数据加密)”下,选择 Require encryption (disconnect if server declines) 选项。对于“Authentication(身份验证)”,选择 Microsoft Smart Card or other certificate (encryption enabled) 选项。
8.9. 在“Authentication(身份验证)”部分中单击 Properties 按钮。选择 Use a certificate on this computer 选项,然后单击 OK 。
8.10. 单击“Networking(网络)”选项卡,然后选择 Internet Protocol Version 4 (TCP/IPv4) 选项。接着单击 Properties 按钮。
8.11. 单击 Advanced 按钮。在“IP Settings(IP 设置)”选项卡中,取消选中 Use default gateway on remote network 复选框,然后单击 OK 。
8.12. 在任务栏中,单击网络图标。选择你刚刚创建的 Azure VPN 连接配置文件,然后单击 Connect。
现在你应该已经连接到 Azure VPN 网关,并且可以使用你的专用终结点开始与 Azure SQL 数据库进行交互。
如果你在运行 Netwrix StealthAUDIT 的本地服务器上配置 VPN 网关,就可以运行 Netwrix StealthAUDIT for Azure SQL 任务,并开始对你的 Azure SQL 环境进行审计。
保护你的 SQL Server 数据库
SQL Server 往往包含非常敏感的信息,因此是攻击者的首要目标。由于 SQL 数据库实例经常在网络中分布扩展,数据库管理员(DBA)需要有效的工具,以妥善保护其中包含的敏感数据。
Netwrix Access Analyzer 可以提供帮助。它能够对用户权限和数据库配置进行报告,提供全面的漏洞评估,并发现存储在您的 Azure SQL 数据库中的敏感数据。它还可以密切 监控用户活动,并且甚至可以基于正在执行的 SQL 语句类型,或将用户名、应用程序和执行时间等条件进行组合,对特定操作进行审计。
使用 Netwrix Access Analyzer 保护您的 SQL
常见问题
什么是点到站点 VPN(point-to-site)和站点到站点 VPN(site-to-site)?
点到站点 VPN(point-to-site VPN)连接适用于与 Azure 外部的特定服务器或桌面;而站点到站点 VPN(site-to-site VPN)则用于将整个网络连接到 Azure。
Azure 点到站点(point-to-site)支持哪些 VPN 类型?
Azure 点到站点(point-to-site)VPN 支持三种 VPN 连接类型:Secure Socket Tunneling Protocol(SSTP)、OpenVPN 和 IKEv2 VPN。
分享到
了解更多
关于作者
Joe Dibley
安全研究员
Netwrix 的安全研究员,并且是 Netwrix Security Research Team 的成员。Joe 是 Active Directory、Windows 以及各类企业软件平台与技术方面的专家;他/她研究新的安全风险、复杂的攻击技术,以及相应的缓解措施与检测方法。