注意:
- 本教程需要访问 Oracle Cloud。要注册免费账户,请参阅开始使用 Oracle Cloud Infrastructure 免费套餐。
- 它对 Oracle Cloud Infrastructure 身份证明、租户和区间使用示例值。完成实验室后,请使用特定于云环境的那些值替换这些值。
使用 OCI Network Firewall 和 OCI WAF Regional 以及 Let’s Encrypt Certificates 保护您的应用
简介
在由广泛的数字化转型塑造的环境中,保护您的应用不再是可选的 - 这是一个关键的优先事项。随着企业将工作负载迁移到 Oracle Cloud Infrastructure (OCI),对网络威胁实施强有力的防御至关重要。OCI 提供各种工具来增强您的应用,在本教程中,我们将介绍如何使用 OCI 网络防火墙和 OCI Web 应用防火墙 (Web Application Firewall,WAF) 区域/本地保护您的数字资产。
为什么这个教程很重要?
当您的应用程序与外部世界通信时,它们面临着网络安全威胁的不断挑战。本教程利用 OCI Network Firewall 和 OCI WAF 区域功能,帮助您构建多层防御,保护应用免受已知和新出现的威胁。我们将探讨重要的概念,包括多域支持,以及使用标准工具生成或更新 X.509 证书。此外,我们将深入探讨广泛认可的免费服务 Let's Encrypt 的使用。通过此,您将全面了解保护应用程序的基本实践。
本教程的受众是谁?
本教程专为希望全面了解 OCI 安全功能的云架构师、安全专家和开发人员而设计。无论您是经验丰富的云技术从业人员,还是刚刚开始云安全之旅,本教程都将为您提供围绕应用程序构建强大防御的技能。
什么是 OCI 网络防火墙
Oracle Cloud Infrastructure Network Firewall 是一款采用 Palo Alto Networks 构建的先进托管防火墙服务。它是一种新一代防火墙技术 (NGFW)。它提供基于机器学习的防火墙功能,可保护您的 OCI 工作负载,并易于在 OCI 上使用。作为 OCI 原生防火墙即服务产品,OCI 网络防火墙支持您充分利用防火墙功能,而无需配置和管理其他安全基础设施。OCI 网络防火墙实例具有内置的高可用性,具有高度可扩展性,可以在您选择的虚拟云网络 (VCN) 和子网中创建。
OCI 网络防火墙服务可深入洞察进入云环境的数据流,解决传入和子网间或 VCN 之间的通信问题。从本质上讲,它提供了对南北网络流量和西东网络流量的可见性。有关更多信息,请参见 OCI Network Firewall 。
什么是 OCI Web 应用程序防火墙区域/本地
OCI Web 应用防火墙 (Web Application Firewall,WAF) 是一项基于云的安全服务,可帮助保护 Web 应用免受常见的安全威胁和攻击,例如 SQL 注入、跨站点脚本 (Cross-Site Scripting,XSS) 和分布式拒绝服务 (Distributed Denial of Service,DDoS)。OCI WAF 区域是最新版本的 WAF,通常部署在区域级别,与 OCI 负载平衡器集成以提供灵活、可扩展的防御机制。有关详细信息,请参阅 OCI Web 应用防火墙。
体系结构
此建议架构将使用以下组件全面保护租户工作负载。
-
OCI WAF 区域:此 WAF 与 OCI 灵活负载平衡器(第 7 层)集成,以保护通过负载平衡器的所有 HTTP(S) 流量。
-
OCI 负载平衡器:此负载平衡器将接收来自公共互联网的请求。
-
OCI 网络防火墙:它也称为下一代防火墙。OCI Network Firewall 和 WAF 协同工作,将创建多层防御。如果一层漏掉了威胁,另一层可能会捕获它,从而提供更强大的安全态势。
数据流图表
网络数据流可以在以下网络图中轻松看到,以绿色点线表示传入请求,以红色点线表示响应。
此图遵循为南北流量部署 OCI 网络防火墙的优秀实践。在初始阶段,传入流量(以绿色表示并在第 7 层运行)通过 Internet 网关进行定向。Internet 网关具有关联的路由表,用于将定位到负载平衡器子网 (192.168.6.0/24
) 的所有流量转移到 NGFW 专用 IP。这将确保传入的流量将通过 NGFW 进行检查。
在网络流之后,流量从 Internet 网关进入 OCI 网络防火墙或下一代防火墙 (NGFW)。值得注意的是,OCI 网络防火墙在不终止 TLS/SSL 连接的情况下无缝接收流量。OCI 网络防火墙应用解密概要信息来解密 TLS 流量,从而进行深度数据包检查。有关更多信息,请参见 Using OCI Network Firewall for SSL decryption 。
OCI 网络防火墙全面检查流量后,它将进入 OCI 负载平衡器,该负载平衡器首先终止 TLS/SSL 连接。然后,连接的 WAF 对解密的流量执行深度数据包检查,以确保在将其转发到后端服务器之前它是干净的。然后,负载平衡器执行负载平衡路由并启动与所选后端服务器的辅助连接。
对于来自后端服务器的返回流量,后端服务器最初会响应 OCI 负载平衡器(以红色显示并在第 7 层运行)。达到负载平衡器后,连接的 WAF 会首先检查返回的流量以确保其满足安全标准。WAF 检查后,负载平衡器会将流量路由回专用 IP,其中 OCI 网络防火墙对响应执行其他安全检查。防火墙检查后,流量将根据与 NGFW 子网关联的路由表路由到 Internet 网关。从 IGW,返回的流量将通过互联网流向原始客户端。
目标
本教程的主要目标是通过与 OCI Network Firewall 结合有效设置 OCI WAF 区域来增强用户云工作负载的能力。通过为 OCI 负载平衡器前端整合来自 Let’s Encrypt 的签名 X.509 证书,用户可以确保安全且经过验证的连接。该教程进一步指导用户实施面向南北流量的 OCI 网络防火墙优秀实践,并部署应用 OCI 负载平衡器。值得注意的是,此配置战略性地使用非自签名证书将 OCI 负载平衡器指定为唯一组件 - Let’s Encrypt 证书,而使用传输层安全 (Transport Layer Security,TLS) 的其他元素则使用无麻烦的自签名证书,这些证书更易于管理。
-
任务 1:在本地部署 OCI Web 应用防火墙 (Web Application Firewall,WAF)。
-
任务 2:使用 Let’s Encrypt 签名服务器证书。
-
任务 3:配置 OCI 负载平衡器。
-
任务 4:配置 OCI 网络防火墙。
-
任务 5:配置 OCI 路由。
先决条件
-
活动 OCI 租户。您必须具有在 OCI 中创建和管理网络资源的必要权限。
-
基本了解 Linux OS、OCI、Oracle Linux,包括如何在 Linux 中安装和配置软件。
-
充分了解如何使用 OCI 控制台或 Oracle Cloud Infrastructure 命令行界面 (OCI CLI) 创建和管理网络资源。
-
充分了解如何使用和配置 OCI Network Firewall 和 OCI WAF 本地。
-
对 SSL/TLS 技术和 X.509 数字证书有很好的了解。有关更多信息,请参见此建议指南以深入了解 X.509 证书:X509 Certificates 和 SSL/TLS: Understand TLS/SSL encryption technology 。
任务 1:部署 OCI Web 应用程序防火墙本地
我们要部署的第一个组件是本地 WAF。
-
登录到 OCI 控制台,然后单击 Web 应用程序防火墙。
-
在策略中,单击创建 WAF 策略并输入以下信息。单击下一步。
-
在 Access Control policy(访问控制策略)中,如果需要访问控制,请选择 Enable access control(启用访问控制)。有关更多信息,请参见 Access Controls for Web Application Firewall Policies 。
-
在速率限制策略中,如果需要速率限制,请选择启用配置速率限制规则。有关详细信息,请参阅 Web 应用防火墙的速率限制。
-
在保护中,如果需要配置保护,请选择启用以配置保护规则。有关详细信息,请参阅 Web 应用程序防火墙保护。
-
在选择实施点中,此菜单的用途是将新创建的 WAF 策略附加到现有负载平衡器。如果未创建负载平衡器,或者目前没有负载平衡器可用,则可以在创建负载平衡器时跳过此步骤并附加策略。
任务 2:使用 Let’s Encrypt 签名服务器证书
在本教程中,我们将使用名为 Let’s Encrypt 的免费公共 CA 服务来签署我们的服务器证书。因此,链证书将显示如下:
1.-End-user Certificate - Issued to: *.example.com; Issued By: Let’s Encrypt R3
2.-Intermediate Certificate 1 - Issued to: Let’s Encrypt R3 (RSA 2048, O = Let's Encrypt, CN = R3); Issued By: Signed by ISRG Root X1:ISRG Root X1 (RSA 4096, O = Internet Security Research Group, CN = ISRG Root X1)
3.-Root certificate - Issued by and to: ISRG Root X1 (RSA 4096, O = Internet Security Research Group, CN = ISRG Root X1) , Selfsigned
In PEM format:
-----BEGIN CERTIFICATE-----
MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD
EwJSMzAeFw0yNDAxMTUxNjAyMTNaFw0yNDA0MTQxNjAyMTJaMBgxFjAUBgNVBAMM
DSouZnd0ZXN0LnNpdGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC1
3NkuEB3r0m/cIWjYBvXEg8QAcib3QjkGO2YwDRu9IwjyxTYTqiWp0F8ZYh2hM1zP
...xxxx
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
oIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjAwOTA0MDAwMDAw
WhcNMjUwOTE1MTYwMDAwWjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
RW5jcnlwdDELMAkGA1UEAxMCUjMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
AoIBAQC7AhUozPaglNMPEuyNVZLD+ILxmaZ6QoinXSaqtSu5xUyxr45r+XXIo9cP
R5QUVTVXjJ6oojkZ9YI8QqlObvU7wy7bjcCwXPNZOOftz2nwWgsbvsCUJCWH+jdx
sxPnHKzhm+/b5Dt....XXXX
-----BEGIN CERTIFICATE-----
oOFTJOwT2e4ZvxCzSow/iaNhUd6shweU9GNx7C7ib1uYgeGJXDR5
bHbvO5BieebbpJovJsXQEOEO3tkQjhb7t/eo98flAgeYjzYIlefiN5YNNnWe+w5y
sR2bvAP5SQXYgd0FtCrWQemsAXaVCg/Y39W9Eh81LygXbNKYwagJZHduRze6zqxZ
Xmidf3LWicUGQSk+WT7dJvUsWqNMQB9GoZm1pzpRboY7nn1ypxIFeFntPlF4
FQsDj43QLwWyPntKHEtzBRL8xurgUBN8Q5N0s8p0544fAQjQMNRbcTa0B7rBMDBc
SLeCO5imfWCKoqMpgsy6vYMEG6KDA0Gh1gXxG8K28Kh8hjtGqEgqiNx2mna/H2ql
PRmP6zjzZN7IKw0KKP/32+IVQtQi0Cdd4Xn+GOd....xxx
-----END CERTIFICATE-----
因此,在使用 Let’s Encrypt 之前,我们需要安装某些软件,以帮助我们创建 Let’s Encrypt 证书或签署一个 CSR 进行签名。有关更多信息,请参见 Let's Encrypt 。
对于签名,我们将使用 Let’s Encrypt 中的 certbot。有关设置说明的更多信息,请参阅设置说明。要在 Oracle Linux 上安装,请参见 Let's Encrypt - Free Certificates on Oracle Linux (CertBot) 。
安装 certbot 后,您可以通过执行以下命令轻松创建带符号的 x.509 证书。
sudo certbot certonly --manual --preferred-challenges=dns --email YOUR EMAIL ADDRESS --server https://acme-v02.api.letsencrypt.org/directory --agree-tos -d *.example.com --key-type rsa
由于我们正在使用通配符域 (_.example.com
),因此 certbot 需要验证挑战以确认 _.example.com
的所有权。我们使用 – preferred-challenges=dns 选项选择 DNS 质询。在执行 certbot 期间,我们将收到有关 DNS 质询的消息,如下图所示。
由于我们使用的是 OCI DNS 服务,因此我们只在 example.com
区域中创建 txt 记录。
现在,certbot 应该完成这个过程,允许你获得最终用户证书,完成完整的 CA 链,以及相应的私钥。我们将在本教程的后面部分中将此最终用户证书(及其完整链)用于负载平衡器 https 监听程序。
任务 3:配置 OCI 负载平衡器
完成 OCI WAF 本地设置后,我们的下一个目标是在第 4 层到第 7 层部署 OCI 负载平衡器(也称为 OCI Flexible Load Balancer),作为面向公共的服务,并在其中附加一个本地 WAF。
-
打开 OCI 控制台,单击网络和负载平衡器。
-
单击创建负载平衡器并输入以下信息,然后单击下一步。
-
负载平衡器名称:输入负载平衡器的名称。
-
选择可见性类型:选择公共负载平衡器。
-
带宽:选择负载平衡器配置和其他配置详细信息。
-
选择网络:选择至少具有两个公共子网的 VCN;一个用于 OCI 负载平衡器,另一个用于 OCI 网络防火墙。
-
显示高级选项:选中使用 Web 应用程序防火墙策略来防止第 7 层攻击,然后选择以前创建的本地 WAF。
-
-
跳过选择后端部分,因为在创建负载平衡器后,稍后我们将添加后端服务器,然后单击下一步。
-
在配置监听程序中,输入以下信息,然后单击下一步。
我们将配置传入请求负载平衡器监听程序,实质上是从外部接收所有连接的负载平衡器的主要入口点。我们需要在默认端口
443
上为安全 HTTP 设置 HTTPS,这不可避免地需要使用 X.509 证书(SSL 证书)。通过使用 HTTPS,我们将确保所有连接都将安全加密。在公共负载平衡器充当 Internet 上最终用户的主要入口点的典型场景中,必须上载由信誉良好的公共证书颁发机构 (Certificate Authority,CA) 签名的 SSL 证书,例如 Digicert、Global Sign、Let's Encrypt 等。此外,暴露于互联网的这些证书需要在到期日期附近续订,以确保客户不会遇到不必要的消息,例如您的连接不是私有的!!ERR_CERT_DATE_INVALID.
话虽如此,您将需要上载您创建的 Let’s Encrypt 证书的公共和专用详细信息。确保两个组件都正确上载,以便于安全连接。确保在公共部分上载全链证书(包括中间和/或根 CA)。
-
管理日志记录是可选配置,不在本教程的范围内。单击提交。
-
过一段时间,将创建负载平衡器。现在,我们需要配置后端服务器。由于 SSL 将用于后端服务器,因此我们需要首先在负载平衡器的证书部分中至少创建一个证书,用于设置与后端服务器的 SSL 连接。如上所述,可以使用第三方工具手动创建此证书包,也可以使用 OCI 证书管理服务。在本教程中,我们将使用 XCA 工具。
转至网络、负载平衡器、负载平衡器、负载平衡器详细信息和证书。
-
在证书部分中,选择证书资源作为负载平衡器管理证书,然后单击添加证书。
添加用于对后端服务器的 SSL 证书进行签名的公共 CA 根证书或中间 CA 证书。作为提醒,我们一直在使用具有任何通用名称和 SAN 的自签名证书,并且没有到期日期。无需在此处安装任何服务器证书,因为负载平衡器将仅使用根 CA 进行后端服务器证书验证。
-
要创建后端服务器,请选择后端集并单击创建后端集。
-
在创建后端集中,输入以下信息。
- 后端集名称:输入后端集名称。
- 选择 SSL 。
- 选择负载平衡器管理证书。
- 添加您在步骤 7 中创建的证书。如果要确保负载平衡器检查收到的 SSL 证书签名,请单击验证对等证书。
- 健康检查:
- Protocol(协议):选择
HTTP
。 - 端口:选择
443
端口。 - 间隔和超时:保留默认间隔和超时(10000 和 3000 毫秒)。
- 对于运行状况检查的运行状况响应,选择 200。
- URL 路径 (URI):从 Web 服务器上存在的 URL 添加任何资源。例如:
index.html
、mainpage.html
等。
- Protocol(协议):选择
任务 4:配置 OCI 网络防火墙
在设置 OCI 负载平衡器后,我们的目标是配置 OCI 网络防火墙以保护南北流量。防火墙将放置在新配置的负载平衡器和互联网网关之间。要继续设置 OCI 网络防火墙,请参见使用 OCI 网络防火墙进行 SSL 转发代理和入站检查(使用解密规则)并完成以下操作。
-
为 SSL 入站检查模式部署 OCI 网络防火墙策略。有关更多信息,请参见 Using OCI Network Firewall for SSL decryption 。
-
为解密概要信息创建映射的密钥时,请使用先前上载到 OCI 负载平衡器监听程序的相同自签名证书(包含公钥和私钥)。我们建议按照本教程来创建 JSON 文件,请参阅从 OCI 网络防火墙的定制 PEM 证书创建完全兼容的 JSON 模板。
-
在附加之前创建的 OCI 网络防火墙策略时,将 OCI 网络防火墙部署到 NGFW Pub 子网 (192.168.5.0/24) 中。此操作会将上述子网中的专用 IP 地址分配给 OCI 网络防火墙,以后进行路由配置时需要该地址。
任务 5:配置 OCI 路由
OCI 网络防火墙已部署,我们需要确保南北流量在两个方向上遍历它。首先,要为与 OCI 网络防火墙所在的 VCN 关联的互联网网关创建专用路由表。
-
在 VCN 中创建路由表,并将目标类型的条目添加为
private IP
,将目标添加为 CIDR 块,为此教程192.168.6.0/24
和目标引入负载平衡器子网 CIDR 块,作为分配给任务 6 中部署的 OCI 网络防火墙的专用 IP。 -
将路由表与 Internet 网关关联,单击三个点和关联路由表,然后选择路由表。
-
将此路由表与 Internet 网关关联后,定向到公共负载平衡器
192.168.6.0/24
的所有流量最初将重定向到 OCI 网络防火墙所在的专用 IP192.168.5.78
。在 OCI 网络防火墙专用 IP
192.168.5.78
中,在从 OCI 网络防火墙进行数据包检查后,数据包将保持迁移到 OCI 负载平衡器的历程。从那里,它们将被定向到所选后端服务器中的最终目的地,由负载平衡器的路由配置确定。现在,务必确保返回互联网用户的包以相反的顺序遵循相同的路径,并遍历 OCI 网络防火墙以检查响应。我们需要为负载平衡器公共子网创建路由表,以便通过 OCI 网络防火墙专用 IP
192.168.5.78
从后端服务器路由响应,如下图所示。
在 OCI 网络防火墙子网中,我们需要通过向 Internet 网关添加 0.0.0.0/0
路由来确保响应路由到 Internet 网关。
连接到 Internet 网关后,软件包将路由回其源。作为测试,导航到 https://www.test.com
。
相关链接
确认
- Authors — Luis CatalánHernández(OCI 云网络专家和多云),Sachin Sharma(OCI 云网络专家)
更多学习资源
浏览 docs.oracle.com/learn 上的其他实验室,或者访问 Oracle Learning YouTube 渠道上的更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Secure Your Applications using OCI Network Firewall and OCI WAF Regional with Let's Encrypt Certificates
G17251-01
October 2024