注意:

使用 Oracle Cloud Infrastructure Network Firewall 保护网站和应用

简介

Oracle Cloud Infrastructure (OCI) Network Firewall 是由 Palo Alto Networks ®提供支持的 Oracle Cloud Infrastructure VCN 的下一代托管网络防火墙和入侵检测和预防服务。

OCI 负载平衡器服务可将流量从一个入口点自动分配到可从虚拟云网络 (VCN) 访问的多台服务器。该服务为负载平衡器提供了可选的公共或专用 IP 地址和预配的带宽。

动态路由网关 (Dynamic Routing Gateway,DRG) 充当虚拟路由器,为内部部署网络与 VCN 之间的流量提供路径,还可用于在 VCN 之间路由流量。使用不同类型的附件,可以使用不同区域和租户中的组件构建定制网络拓扑。

通过将 OCI 网络防火墙与连接到动态路由网关的 OCI 负载平衡器结合使用,您可以保护指向专用 VPN 中部署的网站或应用程序的南北流量。

体系结构

本教程将创建一个新环境来尝试测试 OCI 网络防火墙和 OCI 负载平衡器功能。这是我们将要使用的最终体系结构。

创建 OCI Virtual Cloud Network (VCN)

请注意,我们具有单独的 VCN:公共 VCN 和专用 VCN。这两个 VCN 将托管我们的网络防火墙和负载平衡器基础设施,并在专用环境中托管我们网站的后端服务器。

目标

先决条件

任务 1:创建网络元素

创建公共和专用 VCN、子网和 DRG。

任务 1.1:创建公共和专用 VCN

  1. 要创建 VCN,请转至 OCI 控制台,然后单击虚拟云网络

    创建 OCI Virtual Cloud Network (VCN)

  2. 单击创建 VCN

    单击“创建 VCN”按钮

  3. 创建虚拟云网络页中,输入所需的信息。

    填写 VCN 设置所需的信息,然后单击“Create VCN(创建 VCN)”按钮

  4. 对要在环境中创建的每个 VCN 重复步骤 1 到 3。

    已成功创建公共和专用 VCN

任务 1.2:创建子网

创建两个 VCN 后,必须在每个 VCN 中创建子网,以便它们托管 OCI 网络防火墙、负载平衡器和将托管要访问的网站的服务器。

对于每个 VCN,将具有以下子网:

  1. 单击每个 VCN 名称以创建子网。

    创建专用子网和公共子网 - 单击 VCN 名称

  2. 单击创建子网

    单击“创建子网”按钮

  3. 创建子网页面中,输入所需的信息。

    1. 名称:输入子网名称。
    2. 区间:选择要在其中创建子网的区间。
    3. 子网类型:根据建议选择区域
    4. IPv4 CIDR 块:输入要用于子网的 CIDR。对于本教程,我们在任务 1.2 中定义了地址。
    5. 子网访问:对于将安装防火墙和负载平衡器的子网,请选择公共子网。用于将安装应用程序或网站服务器的子网。

    填写所有信息以创建子网

  4. 输入所有必要信息后,单击创建子网

注:不要忘记检查已创建 VCN 的安全列表是否允许在环境中使用流量。例如,如果要允许通过网络防火墙访问 HTTP,则安全列表必须允许 VCN 上的此入站通信。

任务 1.3:创建动态路由网关 (DRG)

DRG 是将公共 VCN(包含 OCI 网络防火墙)和 OCI 负载平衡器与专用 VCN 互连的路由器,该专用 VCN 将包含要通过 Internet 访问的服务器。

  1. 要创建 DRG,请转至 OCI 控制台,单击网络动态路由网关

    访问“DRG 服务”页

  2. 动态路由网关页中,单击创建动态路由网关

    单击 "Create dynamic routing gateway" 按钮

  3. 输入 DRG 的名称,然后单击创建动态路由网关

    为 DRG 提供名称,然后单击“Create(创建)”按钮

    等待创建完成,DRG 生命周期状态显示为可用

    等待 DRG 可用

    • 创建完成后,单击 DRG 以查看其详细信息,并为要创建的 VCN 之间的连接创建必要的附加。

    • 通过创建 DRG 路由表和 DRG 路由分配,您可以定义在附加之间路由通信的路由策略。

    • 您可以将多个 VCN 连接到单个 DRG,并通过这些附加使用 DRG 路由功能在 VCN 之间路由流量。

  4. 要附加在任务 1.1 中创建的 VCN,请单击创建虚拟云网络附加

    将 VCN 连接到 DRG

  5. 将打开一个新窗口。输入附加的名称并选择要创建的附加将哪个 VCN 附加到 DRG。单击创建 VCN 附加以完成创建。

    • 附件名称:att_public
    • 虚拟云网络:Public_VCN

    为您的附件指定名称,定义此附件将可用于哪个 VCN,然后单击“创建 VCN 附加”

  6. 对 VCN Private_VCN 重复步骤 1 到 5。

任务 2:创建 OCI 网络防火墙

在创建 OCI 网络防火墙之前,需要创建将在防火墙中使用的策略。在此任务中,策略创建将非常简单,仅允许 HTTP 流量。但是,OCI 网络防火墙能够检查加密流量,并具有高级 L7 防火墙功能。

有关 OCI 网络防火墙服务的功能的详细信息,请参阅 OCI 网络防火墙

任务 2.1:创建网络防火墙策略

注:建议对于生产环境,规则尽可能具体,始终遵循最少访问策略。本教程中使用的示例纯粹是教育性的,不应在实际生产环境中复制。

  1. 要创建将部署在网络防火墙中的策略,请转到 OCI 控制台,单击身份和安全网络防火墙策略

    访问“OCI 网络防火墙策略服务”页

  2. 网络防火墙策略页中,单击创建网络防火墙策略以开始创建防火墙规则。

    创建网络防火墙策略

  3. 在向导请求时输入信息,然后单击创建网络防火墙策略

    填写所有必需信息后,单击 ** 创建网络防火墙策略 **

    注:有关在 OCI 网络防火墙策略中可配置哪些参数的更多信息,请参阅策略创建网络防火墙服务策略

创建策略后,您需要在该策略中创建资源。这些资源将详细说明策略将如何保护环境。

本教程将使用策略的简单版本。我们只允许 HTTP 和 HTTPS 入站流量。有关创建 OCI 网络防火墙策略的更多信息,请参见 Creating a Network Firewall Service PolicyCreating Network Firewall Service Policy Components

要创建本教程中使用的策略,您需要以下网络防火墙策略资源。

  1. 创建地址列表资源

    1. 单击 Address List(地址列表)Create address list(创建地址列表)

      单击地址列表

    2. 创建地址列表页中,输入所需的信息,然后单击创建地址列表

      • 名称:Frontend_Web(输入最适合环境的名称)。
      • IP 地址/CIDR:输入负载平衡器专用 CIDR。

      创建地址列表

    创建完地址列表后,您现在可以创建服务资源。

  2. 创建服务资源

    1. 单击服务创建服务

      单击服务

    2. 创建服务页中,输入所需的信息,然后单击创建服务

      • 名称:HTTP-HTTPS(输入最适合环境的名称)。
      • 协议:选择 TCP
      • 端口范围:输入 80-80。要添加其他范围,请单击 +Another 范围并添加 443-443

      创建地址列表

    创建完服务后,您现在可以创建服务列表资源。

  3. 创建服务列表资源

    1. 单击服务创建服务列表

      单击服务列表

    2. 创建服务列表页中,输入所需的信息,然后单击创建服务列表

      • 名称:输入最适合环境的名称。
      • 可用服务:选择在步骤 2 中创建的服务,然后单击添加到选定项
      • 所选服务:检查是否已将所需服务导入到所选服务

      创建地址列表

    创建完服务列表后,您现在可以创建网络防火墙的安全规则。

  4. 创建安全规则

    1. 单击安全规则创建安全规则

      单击服务列表

    2. 创建安全规则页中,输入所需的信息,然后单击创建安全规则

      • 名称:输入策略的名称。
      • 源地址:默认值。源值为任何地址
      • 目标地址:选择在步骤 1 中创建的地址列表。单击选择地址列表,然后选择创建的地址列表。
      • 应用程序:默认值。应用程序值是任何应用程序
      • 服务:选择在步骤 3 中创建的服务列表。单击选择服务列表,然后选择创建的服务列表。
      • URL:默认。URL 值为任何 URL
      • 规则操作:为环境选择规则操作。对于本教程,我们将使用允许流量
      • 规则顺序:选择策略的顺序。

      创建地址列表 创建地址列表 创建地址列表

完成策略创建后,您将能够访问其详细信息。

注:根据环境访问需求创建策略。本教程中使用的示例纯粹是教育性的。

创建 OCI 网络防火墙策略后,您现在可以继续创建 OCI 网络防火墙实例本身。

任务 2.2:创建 OCI 网络防火墙

  1. 我们已创建了将在环境中使用的访问策略,必须创建 OCI 网络防火墙。转到 OCI 控制台,单击身份和安全网络防火墙

    访问 OCI 网络防火墙服务页面

  2. Network firewalls 页面中,单击 Create network firewall 以创建网络防火墙。

    单击 "Create Network Firewall" 按钮开始

  3. Create network firewall(创建网络防火墙)页面中,输入所需的信息,然后单击 Create network firewall(创建网络防火墙)

    1. 名称:NFW_INBOUND(输入最适合环境的名称)。
    2. 区间:选择将在其中创建网络防火墙的区间。
    3. (区间)中的网络防火墙策略:选择在任务 2.1 中创建的策略。
    4. (区间)中的虚拟云网络:选择将安装网络防火墙的 VCN。对于本教程,我们将选择名为 VCN_Public 的 VCN,如任务 1 的拓扑中所示。
    5. 子网(区间):选择将安装网络防火墙的子网。对于本教程,我们将选择名为 Subnet_FW 的子网,如本文档的任务 1.2 中所述。

    填写所有必需信息

    注:完成网络防火墙创建大约需要 40 到 50 分钟。

  4. 单击网络防火墙名称并查看有关资源的详细信息。

    现在您有了 OCI 网络防火墙实例

    注:

    • 请注意为网络防火墙创建的专用 IP。它将来将用于使用 DRG 配置 intra-vcninter-vcn 路由,以便防火墙可以发送和检查环境中的所有通信。

    • OCI 网络防火墙的专用 IP 可能与本教程中显示的 10.0.0.8 不同。这样,要在环境中创建的所有路由都必须考虑在实施期间创建的 OCI 网络防火墙 IP。

任务 3:创建虚拟服务器和负载平衡器

我们创建了整个网络环境,DRG,策略和网络防火墙,我们可以开始创建将托管我们测试网站的负载平衡器和服务器。

任务 3.1:创建虚拟服务器或 Web 服务器

  1. 虚拟服务器创建既简单又快速。要创建虚拟服务器,请转至 OCI 控制台,单击计算实例

    访问“OCI 计算实例服务”页面

  2. 实例页中,单击创建实例

    单击“Create Instance(创建实例)”按钮以开始

  3. 在实例创建页面中输入所需的信息。在本教程中,我们创建了以下实例。

    • srv1_app1:用于托管网站 #1 的服务器 #1。它是在子网 subnet_app1 内的 VCN_Private 中创建的。
    • srv2_app1:用于托管网站 #1 的服务器 #2。它是在子网 subnet_app1 内的 VCN_Private 中创建的。
    • srv1_app2:用于托管网站 #1 的服务器 #1。它是在子网 subnet_app2 内的 VCN_Private 中创建的。
    • srv2_app2:用于托管网站 #1 的服务器 #2。它是在子网 subnet_app2 内的 VCN_Private 中创建的。

    对于我们的服务器,我们使用了 Oracle Linux 9.x 托管。为了使服务器准备好运行,在服务器创建期间,我们使用 Cloud-init 脚本来处理 httpd 服务器的安装,创建简单的 index.html 文件并禁用 firewalld 守护进程。有关 Cloud-init 脚本的更多信息,请参见 Using Custom Cloud-init Initialization Scripts to Set Up Managed Nodes 。使用以下脚本。

    #!/bin/bash
    echo "############################################" > /etc/motd
    echo "#       OCI NETWORK FIREWALL LAB           #" >> /etc/motd
    echo "############################################" >> /etc/motd
    
    # Installing nginx on Oracle Linux
    sudo yum install httpd -y
    
    # Starting httpd
    sudo systemctl start httpd
    
    # Opening HTTP port in Firewalld
    sudo firewall-cmd --zone=public --add-service=http
    
    # Configuring a simple webpage to our server
    sudo touch /var/www/html/index.html
    sudo chown apache:apache /var/www/html/index.html
    
    export HOSTNAME=`hostname`
    
    sudo cat <<EOF > /var/www/html/index.html
    <html>
            <center><img src="https://estuary.dev/static/638f52fd4afa2f02e6d522065f7268f4/26ce8/thumbnail_Group_22548_cda168ff12.png"></img></center>
            <center>
                    <h1>Welcome to the OCI Network Firewall Lab webpage!</h1>
                    <h2>CONGRATULATIONS!</h2><P>
                    <h3>if you are seeing this page it is because the OCI Network Firewall lab worked! <p>refresh the browser and see the server hostname changing below (because of the Round-Robin policy placed at the OCI LoadBalancers).</h3>
            </center>
            <br>
            <center><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/8/84/Eo_circle_green_arrow-down.svg/2048px-Eo_circle_green_arrow-down.svg.png" width="100" height="100"></center>
            <h1><center>This is server $HOSTNAME!</center></h1>
    </html>
    EOF
    

环境拓扑将有助于了解服务器应安装的位置。

我们的拓扑

Apache Web 服务器 (httpd) 安装在这些服务器上,并在其 documentRoot 中创建一个简单的页面,以便从 Internet 访问。

有关在 OCI 中创建和配置实例的详细信息超出了本教程的范围。有关详细信息,请参阅创建实例

任务 3.2:创建 OCI 负载平衡器

创建虚拟服务器后,需要创建 OCI 负载平衡器,该负载平衡器将通过 Round-Robin 进行负载平衡,以访问新创建的 Web 服务器。

  1. 要创建 OCI 负载平衡器,请转至 OCI 控制台,单击网络负载平衡器

    访问 OCI 负载平衡器服务页面

  2. 负载平衡器服务页面中,单击创建负载平衡器以开始在此教程中创建两个负载平衡器。

    单击“Create load balancer(创建负载平衡器)”按钮以开始

  3. 创建负载平衡器页中,输入所需的信息,以便可以启动创建,然后单击下一步

    1. 负载平衡器名称:输入负载平衡器的名称。
    2. 可见性:选择 Public,因为负载平衡器将通过 Internet 访问。
    3. 分配公共 IP 地址:选择 Ephemeral IP address。如果具有保留 IP,则可以使用选项 Reserve IP address
    4. 选择网络:选择将部署负载平衡器的 VCN。在本教程中,VCN 将为 Public_VCN
    5. (区间)中的子网:选择将在其中部署负载平衡器的子网。在本教程中,子网将为 subnet_loadbalancer

    填写创建 OCI 负载平衡器所需的信息

    填写创建 OCI 负载平衡器所需的信息

  4. 选择后端页中,输入所需的信息,然后单击下一步

    1. 指定负载平衡策略:为负载平衡器选择策略。在本教程中,我们将使用 Round-Robin
    2. 添加后端:如果已创建将在环境中托管页面的服务器。要添加它们,请单击添加后端
    3. 协议:在上载简单网站时,请选择 HTTP 作为后端健康检查的协议。
    4. 端口:在要使用 HTTP 的情况下,运行状况检查必须查找端口 80/TCP 上的连接。
    5. 使用 SSL:如果要对 HTTPS 进行健康检查,请选择 Use SSL 项来配置将使用哪个证书。此类型的健康检查超出了本教程的范围。有关更多信息,请参见 SSL Certificate for Load Balancers

    填写创建 OCI 负载平衡器所需的信息

    填写创建 OCI 负载平衡器所需的信息

  5. 配置监听程序页中,输入以下信息,然后单击下一步

    1. 监听程序名称:输入监听程序名称。
    2. 指定监听程序处理的流量类型:选择将通过监听程序的流量类型。对于本教程,我们将使用 HTTP。
    3. 指定监听程序监视入站流量的端口:选择监听程序应侦听哪个端口以捕获定向到 Web 服务器的入站流量。对于本教程,我们将使用端口 80/TCP。

    填写创建 OCI 负载平衡器所需的信息

  6. 启用 OCI 负载平衡器日志,然后单击提交以开始创建。

    正在您的负载平衡器中启用日志

    注:必须为每个网站或应用程序创建不同的负载平衡器。在本教程中,我们将创建两个负载平衡器(每个要测试的站点一个)。

    我们的 2 个 OCI 负载平衡器实例

    请注意,每个 OCI 负载平衡器都具有不同的公共 IP。因此,每个网站都可以通过单独的地址访问。

  7. 创建 OCI 负载平衡器后,您可以手动将后端服务器插入到每个负载平衡器实例中。单击要配置的负载平衡器的名称以及后端集,如下图中所示。

    配置后端服务器

  8. 查看后端集时,单击其名称以能够插入后端。在后端集信息页中,单击后端添加后端

    配置后端服务器

  9. 为要配置的网站或应用程序选择将成为后端一部分的服务器。单击添加完成。

    配置后端服务器

注:此时将配置 OCI 负载平衡器,但后端将进入严重模式,因为尚未配置 vcn 内部路由和 DRG 路由。

任务 4:创建 DRG 和 VCN 内路由

配置路由,以便可以通过 Internet 访问网站,并通过 OCI 网络防火墙分析访问流量。

任务 4.1:在公共 VCN 中创建路由

  1. 要访问 VCN 路由配置页面,请转至 OCI 控制台,单击网络虚拟云网络

    访问“虚拟云网络”服务页面

  2. 单击 Public_VCN

    单击 Public_VCN

  3. 单击路由表菜单和创建路由表以开始创建路由表。

    创建新路由表

  4. 创建路由表页中,输入所需的信息,然后单击创建

    1. 名称:输入路由表的名称。
    2. 在区间中创建:选择可在其中创建路由表的区间。

    注:我们不会使用 VCN 默认路由表。

    填写所需信息以创建新路由表

  5. 对 Public_VCN 中的以下路由表重复此过程。

    • RT_Firewall:应附加到 OCI 网络防火墙子网以实现 vcn 内部连接的路由表。
    • RT_LoadBalancers:应附加到负载平衡器子网以实现 vcn 内部连接的路由表。
    • RT_to_nfw:必须附加到 Public_VCN 网络的 Internet 网关的路由表。
      1. 在 RT_Firewall 中为 Subnet_Firewall 创建路由

      创建路由表后,在每个表中创建以下路由。

      RT_Firewall 表必须由 Subnet_Firewall 使用。将子网默认路由表替换为此定制路由表。

      表:RT_Firewall

      CIDR 下一个跃点
      0.0.0.0/0 IGW
      • IGW: Internet 网关。
        1. 在 RT_LoadBalancers 中为 Subnet_LoadBalancers 创建路由

      RT_LoadBalancers 表必须由 Subnet_Loadbalancers 使用。将子网默认路由表替换为此定制路由表。

      CIDR 下一个跃点
      0.0.0.0/0 <OCI_NETWORK_FIREWALL_IP>
      192.168.0.0/24 DRG
      192.168.1.0/24 DRG
      • DRG:动态路由网关。
      • 192.168.0.0/24:这是 VCN Private_VCN 子网的专用网络,其中安装了我们的网站 #1 的服务器。
      • 192.168.0.0/24:这是 VCN 子网 Private_VCN 的专用网络,其中安装了我们的网站服务器 #2。
        1. 在 RT_to_nfw 中为 Internet 网关创建路由

      RT_to_nfw 表必须附加到 VCN_Public Internet Gateway。

      CIDR 下一个跃点
      10.0.1.0/24 <OCI_NETWORK_FIREWALL_IP>

任务 4.2:在专用 VCN 中创建路由

  1. 要访问 VCN 路由配置页面,请转至 OCI 控制台,单击网络虚拟云网络

    访问“虚拟云网络”服务页面

  2. 单击 Private_VCN

    单击 Private_VCN

  3. 单击路由表菜单和Private_VCN 的默认路由表

    创建新路由表

  4. 对于 Private_VPN,我们只创建一个路由,将路径从 10.0/16 网络指向 DRG。

    CIDR 下一个跃点
    10.0.0.0/16 DRG

    一旦创建了路由,一切都应该正常工作。VCN_Public 的 vcn 内部路由会将所有流量转发到 OCI 网络防火墙,而 VCN(VCN_Public 和 VCN_Private)之间的连接将由 DRG 处理。

  5. 返回到 OCI 负载平衡器配置并查看后端是否确定。如果是,请打开浏览器并访问其中一个负载平衡器的 IP。

    检查负载平衡器的后端健康状况

任务 5:访问网页

一旦正确配置了环境路由并且 OCI 负载平衡器实例可以访问在后端(在专用网络中)托管测试站点的服务器,您将能够访问负载平衡器的地址并最终访问测试网页。

捕获负载平衡器的有效 IP 地址并将其放置在浏览器中。如果一切设置正确,您应该看到以下页面。

访问您的网页

确认

更多学习资源

浏览 docs.oracle.com/learn 上的其他实验室,或者通过 Oracle Learning YouTube 频道访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。

有关产品文档,请访问 Oracle 帮助中心