简介

IBM 在 IBM Cloud 中为客户提供网络和计算资源。在这个隔离的产品中,客户负责管理提供给他们的环境的网络安全性。本文将介绍 IBM Cloud 客户如何根据 IBM Cloud 最佳实践来创建一个隔离网络,以保护客户资产。

安全边界

网络隔离的一个基础方面是建立安全边界。这个安全边界控制与公有互联网之间来回传输的流量,以及托管在 IBM Cloud 中的客户资产。该边界还会通过使用虚拟私有网络(VPN)隧道和 IBM Cloud Direct Link,与客户企业建立直接连接。

安全边界会保护该环境中的资产,但是,在安全边界内的资产之间实现网络隔离也很有用。这种隔离(或分割)有很多好处,其中包括访问控制和网段之间的服务流量隔离。这里使用了术语“安全边界网段 (SPS)”来定义公有边界背后的网络隔离。

一个 SPS 是一组支持客户有效负载的 VLAN。一个 SPS 有两个虚拟局域网 (VLAN) – 一个前端 VLAN 和一个后端 VLAN。这些 VLAN 连接到一个 Vyatta,这个 Vyatta 管理与 SPS 之间传输的流量。

需要的 IBM Cloud 权限

客户应该拥有 Vyatta 配置方面的经验。 请参阅 Vyatta V5.1 配置指南来了解详细的配置设置。

https://console.bluemix.net/docs/infrastructure/virtual-router-appliance/getting-started.html#getting-started

https://console.bluemix.net/docs/infrastructure/virtual-router-appliance/vra-docs.html#supplemental-vra-documentation

设置隔离区域的客户应该熟悉 IBM Cloud,而且至少需要拥有由帐户所有者配置的以下用户权限。

使用 https://console.bluemix.net/登录到 IBM Cloud

IAM 权限

导航到 IAM 权限页面

选择要修改的用户并启用以下权限。

访问策略

区域 设置
服务 所有启用了身份和访问的服务
地区 所有地区
分配平台访问角色 管理员
分配平台访问角色 管理员

 

Cloud Foundry 访问权

CF 访问权 角色
组织 经理
空间 开发人员

 

IAAS 访问权

  • ‘View only’ 访问权

 

基础架构权限

导航到基础架构权限页面

选择帐户下的用户列表

IAAS用户管理,启用以下内容:

IAAS 用户管理

  • 生成 API 密钥
  • 提供 VPN SSL 访问

选择用户并选择“门户权限”

设置 IAAS 门户权限

支持 设备 网络 服务 帐户
  • 查看通知单
  • 添加通知单
  • 编辑通知单
  • 查看硬件细节
  • 查看虚拟服务器细节
  • 重新启动服务器并查看 IPMI 系统信息
  • 升级服务器
  • 硬件防火墙
  • 发出 OS 重载命令并启动救援内核
  • 管理负载平衡器
  • 编辑主机名/域
  • 管理端口控制
  • 查看客户软件密码
  • 管理网络子网路由
  • 管理网络 VLAN 跨度
  • 管理 IPSEC 网络隧道
  • 管理网络网关
  • 为计算节点添加公有网络端口
  • 添加 IP 地址
  • 管理 SSH 密钥
  • 管理存储
  • 管理 DNS、逆向 DNS 和 WHOIS
  • 查看证书 (SSL)
  • 管理证书 (SSL)
  • 查看帐户摘要
  • 添加/升级云实例
  • 取消服务器
  • 添加/升级服务
  • 取消服务
  • 添加服务器
  • 添加存储

 

客户还需要为其账户提供IBM云基础设施VPN访问。一旦公众对VYATAS的访问被禁用,客户将不得不使用私有IPS通过IBM云基础设施VPN访问VyATAS。

创建安全边界

第一步是从公有互联网创建一个外部边界,将一个 SPS 放在该边界后面。这个外部边界提供了隔离 SPS 的安全措施。IBM Cloud 基础架构提供的一个公有 VLAN 是一个可通过互联网访问的公有网络,需要一个网关和防火墙来连接这个公有 VLAN 和一个 SPS。Vyatta 提供了这个网关和防火墙边界。

Vyatta 根据本文中定义的配置来保护安全边界。为了实现冗余性,可以将两个 Vyatta 实例配置为一对高可用的实例,并同步它们的配置。

通过将 SPS 公有和私有 VLAN 置于 Vyatta 的控制之下,将一个 SPS 放在这个边界内。

在创建 SPS 之前,应该提前获取以下信息:

描述
数据中心 客户需要在其中放置安全边界的 IBM Cloud 数据中心。地区可以根据 https://www.ibm.com/cloud-computing/bluemix/data-centers 进行确定,而且每个地区内都包含各个位置。
将鼠标悬停在某个地区上方,就会显示一个位置列表和一个可用容量指示器。
Vyatta 主机名 便于识别 Vyatta 实例的用途的友好名称。
客户域名。
公有 VLAN 名称 便于识别公有 VLAN 的用途的友好名称。
私有 VLAN 名称 便于识别私有 VLAN 的用途的友好名称。

创建前端 VLAN

从 IBM Cloud 基础架构 Web 门户 (https://control.softlayer.com)

导航到 Order VLAN 表单:

Order -> Network -> Order VLAN -> +Order

填充订购表单:

  • 选择“Order by Router”
  • 从“Select Router”下拉列表中选择前端路由器,比如 fcrdal13

在“Primary Subnet Size”中选择“8 Static Public IP Addresses”

输入 VLAN 的名称(公有 VLAN 名称

按下“Continue”

在未来 30 天和 12 个月内所需的 IP 数量的下拉列表中选择“4”

完成表单中的剩余条目(联系人细节等)

选择复选框“Master Service Agreement”以同意其中的条款。

选择“Place Order”来下单

在 VLAN 列表 (https://control.softlayer.com/network/vlans) 中查看该 VLAN 并记下编号。

备注: 如果使用这个 VLAN 之前未将它放在 Vyatta 后面,则会向公有互联网公开它的使用权。推荐在配置 Vyatta 来隔离和保护该 VLAN 之前,不要使用它。

创建后端 VLAN

从 IBM Cloud 基础架构 Web 门户 (https://control.softlayer.com) 订购该 VLAN

导航到 Order VLAN 表单:Order -> Network -> Order VLAN -> +Order

填充订购表单:

  • 选择“Order by Router”
  • 从“Select Router”下拉列表中选择后端路由器,比如 bcrdal13

备注: 选择的路由器应与之前创建的 Vyatta 的关联网关 VLAN 使用的路由器相同(https://control.softlayer.com/network/gateways并单击 Vyatta)

在“Primary Subnet Size”中选择“8 Static Public IP Addresses”

输入 VLAN 的名称(私有 VLAN 名称

按下“Continue”

在未来 30 天和 12 个月内所需的 IP 数量的下拉列表中选择“4”

完成表单中的剩余条目(联系人细节等)

选择复选框“Master Service Agreement”以同意其中的条款。

选择“Place Order”来下单

在 VLAN 列表 (https://control.softlayer.com/network/vlans) 中查看该 VLAN 并记下编号。

在创建并配置 Vyatta 后,这些 VLAN 将用于托管安全边界网段。

创建 Vyatta 对

从 IBM Cloud 基础架构 Web 门户 (https://control.softlayer.com) 订购 Vyatta 对,并根据需要选择合适的 IBM Cloud 基础架构帐户。

导航到 Order Vyatta 表单:

Order -> Network -> Order Vyatta -> +Order

网关设备订购表单将打开

从 Data Center from 下拉列表中选择 Datacenter

选择“STARTING PRICE PER MONTH”作为目标服务器类型来托管 Vyatta – 推荐至少使用以下配置:

双英特尔至强 E5-2620 v4(16 核、2.10 GHz)

Vyatta 配置表单将打开

单击“High Availability Pair”复选框

选择 RAM 配置 – 推荐至少使用以下配置:64GB

选择操作系统(只有一个)

确保配置并添加了 4TB Sata 磁盘

网络配置 – 10G 双上行链路

选择“ADD TO ORDER”

CHECKOUT 表单将会打开

导航到 VLAN Selection

  • 在“Backend VLAN”下拉列表中选择 Private VLAN Name
  • 在“Frontend VLAN”下拉列表中选择 Public VLAN Name

添加 HostnameDomain

[可选] 在“SSH Keys”下拉列表中为每个服务器选择一个 ssh_key

备注: 必须按照以下指令预先配置 ssh 密钥:https://knowledgelayer.softlayer.com/procedure/add-ssh-key

选择“Submit Order”来完成 Vyatta 订购请求

等待表明 Vyatta 已设置的通知。在以下链接上监控创建情况:https://control.softlayer.com/network/gateways

配置 Vyatta

创建 Vyatta 后,该配置现在已可以启动。最初,主服务器和备用服务器同步被禁用。从以下链接中找出主 Vyatta 服务器: https://control.softlayer.com/network/gateways。选择要配置的网关实例,以查看 Vyatta 细节。

 

 

 

通过 SSH 连接到一个 Vyatta 服务器(公有或私有 IP 地址),在提示时使用 vyatta 作为用户名并输入来自上图的密码。请注意,列出的密码是根用户的。

ssh vyatta@<Gateway 1 IP>

获取 Vyatta 的虚拟 IP 地址 (VIP)

vyatta@vyatta:~$ show vrrp detail

vyatta@vyatta:~$ show vrrp detail
--------------------------------------------------
Interface: dp0bond0
--------------
  Group: 1
  ----------
  State:                        MASTER
…
  Source Address:               IP-ADDRESS
…
VIP count:                    1
<private vip>
Interface: dp0bond1
…
VIP count:                    1
<public vip>

 

根据 vrrp 输出中的 IP-ADDRESS,可以识别 MASTER 和 BACKUP Vyatta 服务器。另请注意上面的网关成员细节中各个 Vyatta 的 PRIORITY。在 Vyatta 上配置 VLAN 时需要该 PRIORITY。

 

使用一个 VIP(公有或私有)登录到主 Vyatta 服务器。

ssh vyatta@<vip>

输入以下命令来配置同步:

进入配置模式:

configure

删除现有的 sync-map 配置:

delete system config-sync sync-map SYNC

输入新配置:

set system config-sync sync-map SYNC rule 1 action 'include'
set system config-sync sync-map SYNC rule 1 location 'service nat'
set system config-sync sync-map SYNC rule 2 action 'include'
set system config-sync sync-map SYNC rule 2 location 'resources group'
set system config-sync sync-map SYNC rule 3 action 'include'
set system config-sync sync-map SYNC rule 3 location 'security firewall'
set system config-sync sync-map SYNC rule 4 action 'include'
set system config-sync sync-map SYNC rule 4 location 'security vpn'
set system config-sync sync-map SYNC rule 5 action 'include'
set system config-sync sync-map SYNC rule 5 location 'interfaces loopback'
set system config-sync sync-map SYNC rule 6 action 'include'
set system config-sync sync-map SYNC rule 6 location 'policy'
set system config-sync sync-map SYNC rule 7 action 'include'
set system config-sync sync-map SYNC rule 7 location 'interfaces tunnel'
set system config-sync sync-map SYNC rule 8 action 'include'
set system config-sync sync-map SYNC rule 8 location 'interfaces vti'
set system config-sync sync-map SYNC rule 9 action 'include'
set system config-sync sync-map SYNC rule 9 location 'system login banner'
set system config-sync sync-map SYNC rule 16 action 'exclude'
set system config-sync sync-map SYNC rule 16 location 'protocols static route 0.0.0.0'
set system config-sync sync-map SYNC rule 17 action 'exclude'
set system config-sync sync-map SYNC rule 17 location 'protocols static route 10.0.0.0'
set system config-sync sync-map SYNC rule 18 action 'include'
set system config-sync sync-map SYNC rule 18 location 'protocols'

应用并保存配置:

commit
save

登录到备用 Vyatta 服务器,重复上述步骤来更新备用服务器上的 sync-map 配置。

查看同步状态

show config-sync status

例如:

验证状态
remote-router:  <Private IP of MASTER>
version:              5.2R5S3
sync-map:             SYNC
last sync status:     succeeded
last sync time:       <date of last sync>
in-sync?:             yes
access-status:        connected
remote-router:  <Private IP of BACKUP>
version:              5.2R5S3
sync-map:             SYNC
last sync status:     succeeded
last sync time:       <date of last sync>
in-sync?:             yes
access-status:        connected

 

Verify the status

 

MASTER IP:                       correct

BACKUP IP:                       correct

2 x Sync Status:                succeeded

2 x In-sync:                        yes

安全边界网段

安全边界网段是一个放在隔离区域中的网络。该网络由所创建的两个 VLAN 组成,这两个 VLAN 与管理该隔离区域的 Vyatta 有关联。客户工作负载和 IBM 服务(比如 IBM Container Service)可以部署在这些 VLAN 上。

可以在 Vyatta 上执行路由和防火墙配置,以控制与这些 VLAN 之间的访问。

同一个核心隔离区域中可以存在多个 SPS。这样可以将工作负载分割到每个 SPS 中,只有经过允许的流量才能在它们之间传递。

VLAN 名称应在创建 SPS 之前确定。应选择以下名称来表示将放在 SPS 中的工作负载。

公有 VLAN 名称和私有 VLAN 名称

备注: 基础架构权限的最小设置,只有创建安全边界的用户才能创建安全的边界段,除非向另一用户授予安全边界网关设备。

创建 SPS

需要执行以下步骤:

  • 创建 VLAN
  • 将 VLAN 与 Vyatta 关联
  • 配置网关接口
  • 设置子网的默认防火墙规则
  • 启用 IBM Cloud Container Service Kubernetes 访问权

备注:如果已创建初始 SPS VLAN 并将它与 Vyatta 关联,则会在 SPS 中使用这些 VLAN。但是,如果在安全边界内创建了第二个 SPS,则需要创建前端和后端 VLAN。

创建前端 VLAN

从 IBM Cloud 基础架构 Web 门户 (https://control.softlayer.com)

导航到 Order VLAN 表单:

Order -> Network -> Order VLAN -> +Order

填充订购表单:

  • 选择“Order by Router”
  • 从“Select Router”下拉列表中选择前端路由器,比如 fcrdal13

在“Primary Subnet Size”中选择“8 Static Public IP Addresses”

输入 VLAN 的名称(公有 VLAN 名称

按下“Continue”

在未来 30 天和 12 个月内所需的 IP 数量的下拉列表中选择“4”

完成表单中的剩余条目(联系人细节等)

选择复选框“Master Service Agreement”以同意其中的条款。

选择“Place Order”来下单

在 VLAN 列表 (https://control.softlayer.com/network/vlans) 中查看该 VLAN 并记下编号。

备注: 如果使用这个 VLAN 之前未将它放在 Vyatta 后面,则会向公有互联网公开它的使用权。推荐在配置 Vyatta 来隔离和保护该 VLAN 之前,不要使用它。

创建后端 VLAN

从 IBM Cloud 基础架构 Web 门户 (https://control.softlayer.com) 订购该 VLAN

导航到 Order VLAN 表单:Order -> Network -> Order VLAN -> +Order

填充订购表单:

  • 选择“Order by Router”
  • 从“Select Router”下拉列表中选择后端路由器,比如 bcrdal13

备注: 选择的路由器应与之前创建的 Vyatta 的关联网关 VLAN 使用的路由器相同(https://control.softlayer.com/network/gateways并单击 Vyatta)

在“Primary Subnet Size”中选择“8 Static Public IP Addresses”

输入 VLAN 的名称(私有 VLAN 名称

按下“Continue”

在未来 30 天和 12 个月内所需的 IP 数量的下拉列表中选择“4”

完成表单中的剩余条目(联系人细节等)

选择复选框“Master Service Agreement”以同意其中的条款。

选择“Place Order”来下单

在 VLAN 列表 (https://control.softlayer.com/network/vlans) 中查看该 VLAN 并记下编号。

在创建并配置 Vyatta 后,这些 VLAN 将用于托管安全边界网段。

将 VLAN 与网关关联

这些 VLAN 需要与 Vyatta 关联并启用路由。

从 IBM Cloud 基础架构 Web 门户 (https://control.softlayer.com) 将 VLAN 与 Vyatta 关联。

导航到 Gateway Appliances 页面:Network -> Gateway Appliances

选择网关实例

网关细节页面将会打开

如果 SPS 公有 VLAN 还未与 Vyatta 关联,则从“Associate a VLAN”下拉列表中选择 SPS 公有 VLAN

选择“Associate”将公有 VLAN 关联到 Vyatta

使用 Actions -> Route VLAN 为 SPS 公有 VLAN 启用路由

如果 SPS 私有 VLAN 还未与 Vyatta 关联,则从“Associate a VLAN”下拉列表中选择 SPS 私有 VLAN

选择“Associate”将 SPS 私有 VLAN 关联到 Vyatta

使用 Actions -> Route VLAN 为 SPS 私有 VLAN 启用路由

现在已为 SPS VLAN 启用关联和路由。

需要配置 Vyatta 来充当公有和私有 VLAN 上的所有子网的网关。

为公有 VLAN 配置网关接口

获取 SPS 公有 VLAN 上所有子网的列表。

在 IBM Cloud 基础架构 Web 门户 (https://control.softlayer.com) 中查看 VLAN。

导航到 VLAN 页面:Network -> IP Management -> VLANs

选择并记下要添加的 SPS 公有 VLAN 实例的 VLAN 编号。

VLAN 细节页面将会打开。

选择需要在该网关上配置的子网的 CIDR(如果这是第一次向此 SPS 添加子网,那么应该重复此过程和以下步骤来添加列出的所有子网)

子网页面将会打开

获取子网的网关 IP 地址

导航到 Gateway Appliances 页面:Network -> Gateway Appliances

选择这个隔离网络的网关实例

获取并记下组编号值

在 Vyatta 主服务器上配置网关

定义并记下要在网关 (Vyatta) 中用来将流量路由到 SPS VLAN 的 IP 地址 (IP)。

使用以下公式创建该 IP 地址:
XX.REMAINDER = (VLAN Number * 4 + 16384) / 256

YY = (REMAINDER * 256) + 1

IP = 169.254.XX.YY

使用 ssh 登录到 Vyatta 主服务器。在请求时,提供用户名 vyatta 和正确的密码。

将 Vyatta 设置为配置模式。

configure

启用该 VLAN 的接口。

set interfaces bonding dp0bond1 vif <VLAN Number> address <IP>/30
set interfaces bonding dp0bond1 vif <VLAN Number> vrrp vrrp-group <GROUP Number> sync-group vgroup<GROUP Number>
set interfaces bonding dp0bond1 vif <VLAN Number> vrrp vrrp-group <GROUP Number> priority <MASTER PRIORITY>

 

向这个子网的 Vyatta 应用网关(对所有子网重复此步骤)

set interfaces bonding dp0bond1 vif <VLAN Number> vrrp vrrp-group <GROUP number> virtual-address <GATEWAY IP>/29

提交并保存更改

commit
save
exit

在 Vyatta 备用服务器上配置网关

定义要在网关 (Vyatta) 中用来将流量路由到 SPS VLAN 的 IP 地址 (IP)。

使用以下公式创建该 IP 地址:
XX.REMAINDER = (VLAN Number * 4 + 16384) / 256

YY = (REMAINDER * 256) + 2

IP = 169.254.XX.YY

使用 ssh 登录到 Vyatta 备用服务器。在请求时,提供用户名 vyatta 和正确的密码。

将 Vyatta 设置为配置模式。

configure

启用该 VLAN 的接口。

set interfaces bonding dp0bond1 vif <VLAN Number> address <IP>
set interfaces bonding dp0bond1 vif <VLAN Number> vrrp vrrp-group <GROUP Number> sync-group vgroup<GROUP Number>
set interfaces bonding dp0bond1 vif <VLAN Number> vrrp vrrp-group <GROUP Number> priority <BACKUP PRIORITY>

向这个子网的 Vyatta 应用网关(对所有子网重复此步骤)

set interfaces bonding dp0bond1 vif <VLAN Number> vrrp vrrp-group <GROUP Number> virtual-address <GATEWAY IP>/29

提交更改,保存并退出

commit
save
exit

验证与子网网关 IP 地址的连接(对 VLAN 中的每个子网重复此步骤)。确保 ping 获得了响应。

ping <GATEWAY IP>

为私有 VLAN 配置网关接口

获取 SPS 私有 VLAN 上所有子网的列表。

在 IBM Cloud 基础架构 Web 门户 (https://control.softlayer.com)

导航到 VLAN 页面:网络-IP 管理-VLAN

选择要添加的 SPS 专用 VLAN 实例的 VLAN 编号

VLAN 详情页打开

选择需要在网关上配置的子网的 CIDR(如果这是第一次子网被添加到这个 SPS 中,那么列出的所有子网应该通过重复这个步骤和以下步骤来添加)

子网页面将打开

检索子网的网关 IP 地址

导航到网关设备页面:网络->网关设备

选择此隔离网络的网关实例

检索组编号值

在 VYATA 主机上配置网关

定义要在网关(Vyatta 的)中使用的 IP 地址(IP),以将业务路由到 SPS VLAN。

使用以下公式创建 IP 地址:
XX.REMAINDER = (VLAN Number * 4) / 256

YY = (REMAINDER * 256) + 1

IP = 169.254.XX.YY

使用 SSH 登录到 VYATA 主机。在请求时提供用户名为 VYATA 和正确的密码。

将 VYATA 设置为配置模式。

configure

启用 VLAN 的接口。

set interfaces bonding dp0bond0 vif <VLAN Number> address <IP>/30
set interfaces bonding dp0bond0 vif <VLAN Number> vrrp vrrp-group <GROUP Number> sync-group vgroup<GROUP Number>
set interfaces bonding dp0bond0 vif <VLAN Number> vrrp vrrp-group <GROUP Number> priority <MASTER PRIORITY>

为这个子网应用 Vyatta的网关(对于所有子网重复)

set interfaces bonding dp0bond0 vif <VLAN Number> vrrp vrrp-group <GROUP Number> virtual-address <GATEWAY IP>/29

提交更改,保存和退出

commit
save
exit

在 Vyatta 备份上配置网关

定义要在网关(Vyatta 的)中使用的 IP 地址(IP),以将业务路由到 SPS VLAN。

使用以下公式创建 IP 地址:
XX.REMAINDER = (VLAN Number * 4) / 256
YY = (REMAINDER * 256) + 2
IP = 169.254.XX.YY

使用 SSH 登录到 VYATA 备份。在请求时提供用户名为 VYATA 和正确的密码。

将 VYATA 设置为配置模式。

configure

启用 VLAN 的接口。

set interfaces bonding dp0bond0 vif <VLAN Number> address <IP>
set interfaces bonding dp0bond0 vif <VLAN Number> vrrp vrrp-group <GROUP Number> sync-group vgroup<GROUP Number>
set interfaces bonding dp0bond0 vif <VLAN Number> vrrp vrrp-group <GROUP Number> priority <BACKUP PRIORITY>

为这个子网应用 Vyatta 的网关(对于所有子网重复)

set interfaces bonding dp0bond0 vif <VLAN Number> vrrp vrrp-group <GROUP Number> virtual-address <GATEWAY IP>/29

提交更改,保存和退出

commit
save
exit

验证子网网关 IP 地址的连通性(对于 VLAN 中的每个子网重复)。确保 ping 响应。

ping <GATEWAY IP>

启用网络调谐

使用 SSH 登录到 VYATA 主机。在请求时提供用户名为 VYATA 和正确的密码。

将 VYATA 设置为配置模式。

configure

在 Vyatta 设置以下内容。

set system session table-size '1048567'
set interfaces bonding dp0bond0 mtu '9000'

提交更改并保存

commit
save
exit

使用 SSH 登录到 VYATA 备份。在请求时提供用户名为 VYATA 和正确的密码。

将 VYATA 设置为配置模式。

configure

在 Vyatta 设置以下内容。

set system session table-size '1048567'
set interfaces bonding dp0bond0 mtu '9000'

提交更改并保存

commit
save
exit

设置防火墙规则

默认情况下,SPS 应该阻止所有的入站流量,除非白名单 IPS 除外。

使用 SSH 登录到 VYATA 主机。在请求时提供用户名为 VYATA 和正确的密码。

将 VYATA 设置为配置模式。

configure

可选步骤——为白名单入站 IP 创建一个资源组。白名单 IP 是客户选择允许进入的 IP 地址。

set resources group address-group WHITE_LIST address
set resources group address-group WHITE_LIST address
set resources group address-group WHITE_LIST address

为网关 VLAN 创建一个资源组。这些 IP 是公共 IP 地址和 VYATA 对的 VIP。

set resources group address-group GATEWAY-VLANS address <gateway public vip>
set resources group address-group GATEWAY-VLANS address <master public ip>
set resources group address-group GATEWAY-VLANS address <backup public ip>

为所需的 IBM 云基础设施 IPS 创建资源组。这取决于数据中心。对于正确的 IP,参考 https://knowledgelayer.softlayer.com/faqs/6 对于正确的 IP,这些被引用作为一个例子。

set resources group address-group SL_PUBLIC address '173.192.118.0/23'
set resources group address-group SL_PUBLIC address '184.172.118.0/23'
set resources group address-group SL_PUBLIC address '198.23.118.0/23'
set resources group address-group SL_PUBLIC address '169.46.118.0/23'
set resources group address-group SL_PUBLIC address '169.47.118.0/23'
set resources group address-group SL_PUBLIC address '169.48.118.0/24'

设置默认值以删除所有入站业务。

set security firewall name FIREWALL-INBOUND-TRAFFIC default-action 'drop'

允许 IBM 云基础设施公共组流量。

set security firewall name FIREWALL-INBOUND-TRAFFIC rule 20 action 'accept'
set security firewall name FIREWALL-INBOUND-TRAFFIC rule 20 description 'allow SL Public Networks'
set security firewall name FIREWALL-INBOUND-TRAFFIC rule 20 source address 'SL_PUBLIC'
set security firewall name FIREWALL-INBOUND-TRAFFIC rule 20 state 'enable'

允许入站 ICMP 到 Vyatta。

set security firewall name FIREWALL-INBOUND-TRAFFIC rule 30 action 'accept'
set security firewall name FIREWALL-INBOUND-TRAFFIC rule 30 description 'allow inbound icmp-ping'
set security firewall name FIREWALL-INBOUND-TRAFFIC rule 30 destination address GATEWAY-VLANS
set security firewall name FIREWALL-INBOUND-TRAFFIC rule 30 icmp name 'echo-request'
set security firewall name FIREWALL-INBOUND-TRAFFIC rule 30 state 'enable'

允许白名单组流量-如果上面配置了 WITEYLIST 应用

set security firewall name FIREWALL-INBOUND-TRAFFIC rule 40 action 'accept'
set security firewall name FIREWALL-INBOUND-TRAFFIC rule 40 description 'allow Networks'
set security firewall name FIREWALL-INBOUND-TRAFFIC rule 40 source address 'WHITE_LIST'
set security firewall name FIREWALL-INBOUND-TRAFFIC rule 40 state 'enable'

允许 IPSec 流量(VPN 所需)

set security firewall name FIREWALL-INBOUND-TRAFFIC rule 100 action 'accept'
set security firewall name FIREWALL-INBOUND-TRAFFIC rule 100 description 'allow IPSEC ESP/50 protocols'
set security firewall name FIREWALL-INBOUND-TRAFFIC rule 100 protocol 'esp'
set security firewall name FIREWALL-INBOUND-TRAFFIC rule 100 state 'enable'
set security firewall name FIREWALL-INBOUND-TRAFFIC rule 110 action 'accept'
set security firewall name FIREWALL-INBOUND-TRAFFIC rule 110 description 'allow IPSEC AH/51 protocols'
set security firewall name FIREWALL-INBOUND-TRAFFIC rule 110 protocol 'ah'
set security firewall name FIREWALL-INBOUND-TRAFFIC rule 110 state 'enable'
set security firewall name FIREWALL-INBOUND-TRAFFIC rule 120 action 'accept'
set security firewall name FIREWALL-INBOUND-TRAFFIC rule 120 description 'allow IPSEC IKE/500 protocols'
set security firewall name FIREWALL-INBOUND-TRAFFIC rule 120 destination port '500'
set security firewall name FIREWALL-INBOUND-TRAFFIC rule 120 protocol 'udp'
set security firewall name FIREWALL-INBOUND-TRAFFIC rule 120 state 'enable'
set security firewall name FIREWALL-INBOUND-TRAFFIC rule 130 action 'accept'
set security firewall name FIREWALL-INBOUND-TRAFFIC rule 130 description 'allow negotiation of NAT-Traversal in IKE'
set security firewall name FIREWALL-INBOUND-TRAFFIC rule 130 destination port '4500'
set security firewall name FIREWALL-INBOUND-TRAFFIC rule 130 protocol 'udp'

配置 IP 伪装。

set service nat source rule 5 description 'Exclude Gateway IPs from SRC NAT'
set service nat source rule 5 'exclude'
set service nat source rule 5 outbound-interface 'dp0bond1'
set service nat source rule 5 source address 'GATEWAY-VLANS'
set service nat source rule 6 description 'Exclude IBM Cloud public IPs from SRC NAT'
set service nat source rule 6 'exclude'
set service nat source rule 6 outbound-interface 'dp0bond1'
set service nat source rule 6 destination address 'SL_PUBLIC'
set service nat source rule 200 description 'hide all IPs'
set service nat source rule 200 destination address '!10.0.0.0/8'
set service nat source rule 200 outbound-interface 'dp0bond1'
set service nat source rule 200 translation address 'masquerade'

启用防火墙。

set interfaces bonding dp0bond1 firewall in 'FIREWALL-INBOUND-TRAFFIC'

备注: 这个命令也应该在备份 VYATA 服务器上运行。

提交更改,保存和退出

commit
save
exit

备注:在这一点上,通过公共 IP 访问 VyaTA 被禁用。从这一点上讲,客户将不得不使用私有IPS通过IBM云基础设施 VPN 访问 VyATAS。

Kubernetes 部署

必须从 SPS 允许通信到 IBM 容器服务控制平面。

检索 Kubernetes 控制平面和容器服务注册中心的 IP 地址,该区域的数据中心位置由该区域管理。最新的资料可从: https://console.bluemix.net/docs/containers/cs_firewall.html#firewall获得

重要的: 您必须允许向区域内的所有位置输出端口 443,以平衡引导过程中的负载。例如,如果您的群集在美国南部,则必须允许从端口443 到所有位置的 IP 地址(DAL10、DAL12 和 DAL13)。

使用 SSH 登录到 VYATA 主机。在请求时提供用户名为 VYATA 和正确的密码。

将 VYATA 设置为配置模式。

configure

允许控制平面目标地址(格式 x.x.x.x)

set resources group address-group CLUSTER-SERVERS address <REGION IP 1>
set resources group address-group CLUSTER-SERVERS address <REGION IP 2>
set resources group address-group CLUSTER-SERVERS address <REGION IP 3>
set resources group address-group CLUSTER-SERVERS address <REGION IP 4>

允许注册表 IP 地址(格式 x.x.x.x/x)

set resources group address-group CLUSTER-SERVERS address <REGISTRY IP 1>
set resources group address-group CLUSTER-SERVERS address <REGISTRY IP 2>
set resources group address-group CLUSTER-SERVERS address <REGISTRY IP 3>
set resources group address-group CLUSTER-SERVERS address <REGISTRY IP 4>

默认情况下删除所有出站流量。

set security firewall name NETWORK-SPS-OUTBOUND  default-action 'drop'

允许出站 icmp-ping。

set security firewall name NETWORK-SPS-OUTBOUND  rule 30 action 'accept'
set security firewall name NETWORK-SPS-OUTBOUND  rule 30 icmp name 'echo-request'
set security firewall name NETWORK-SPS-OUTBOUND  rule 30 state 'enable'

允许出站 PMTUD (type 3 代码 4)。

set security firewall name NETWORK-SPS-OUTBOUND  rule 50 action 'accept'
set security firewall name NETWORK-SPS-OUTBOUND  rule 50 icmp name 'fragmentation-needed'
set security firewall name NETWORK-SPS-OUTBOUND  rule 50 protocol 'icmp'
set security firewall name NETWORK-SPS-OUTBOUND  rule 50 state 'enable'

允许出站端口 443。

set security firewall name NETWORK-SPS-OUTBOUND  rule 60 action 'accept'
set security firewall name NETWORK-SPS-OUTBOUND  rule 60 description 'allow outgoing port 443'
set security firewall name NETWORK-SPS-OUTBOUND  rule 60 destination address CLUSTER-SERVERS
set security firewall name NETWORK-SPS-OUTBOUND  rule 60 destination port 443
set security firewall name NETWORK-SPS-OUTBOUND  rule 60 protocol 'tcp'
set security firewall name NETWORK-SPS-OUTBOUND  rule 60 state 'enable'

允许输出 UDP 端口 2000 至 327 67。

set security firewall name NETWORK-SPS-OUTBOUND  rule 70 action 'accept'
set security firewall name NETWORK-SPS-OUTBOUND  rule 70 description 'allow outgoing udp port 20000-32767'
set security firewall name NETWORK-SPS-OUTBOUND  rule 70 destination address CLUSTER-SERVERS
set security firewall name NETWORK-SPS-OUTBOUND  rule 70 destination port 20000-32767
set security firewall name NETWORK-SPS-OUTBOUND  rule 70 protocol 'udp'
set security firewall name NETWORK-SPS-OUTBOUND  rule 70 state 'enable'

允许传出TCP [取决于客户规则]。

set security firewall name NETWORK-SPS-OUTBOUND  rule 80 action 'accept'
set security firewall name NETWORK-SPS-OUTBOUND  rule 80 description 'allow outgoing tcp'
set security firewall name NETWORK-SPS-OUTBOUND  rule 80 protocol 'tcp'
set security firewall name NETWORK-SPS-OUTBOUND  rule 80 state 'enable'

允许外出 UDP [取决于客户规则]。

set security firewall name NETWORK-SPS-OUTBOUND  rule 90 action 'accept'
set security firewall name NETWORK-SPS-OUTBOUND  rule 90 description 'allow outgoing udp DNS'
set security firewall name NETWORK-SPS-OUTBOUND  rule 90 protocol 'udp'
set security firewall name NETWORK-SPS-OUTBOUND  rule 90 state 'enable'

允许传出 TCP。

set interfaces bonding dp0bond1 firewall out NETWORK-SPS-OUTBOUND

提交更改、保存和退出

commit
save
exit

使用 SSH 登录到 VYATA 备份。在请求时提供用户名为 VYATA 和正确的密码。

将 VYATA 设置为配置模式。

configure

允许传出 TCP。

set interfaces bonding dp0bond1 firewall out NETWORK-SPS-OUTBOUND

提交更改、保存和退出

commit
save
exit

用户 IP

SPS 可以支持客户提供的子网。该子网作为 SPS 专用 VLAN 上的覆盖网络应用。子网传递到部署配置,以供 KubNeNETs 集群使用。

使用所提供的子网范围,确定以下内容:

  • 企业子网 CIDR
  • 企业子网网关 IP
  • 企业允许 IP

注意,企业允许 IP 是一个 CIDR,允许将来自企业的流量传递给用户子网。

在 IBM 云基础设施门户网站中查看 VLAN (https://control.softlayer.com/)

导航到网关设备页面:网络->网关设备

选择此隔离网络的网关实例

检索组编号值

导航到 VLAN 页面:网络-IP 管理-VLAN

选择要添加的 SPS 专用 VLAN 实例的 VLAN 编号

使用 SSH 登录到 VYATA 主机。在请求时提供用户名为 VYATA 和正确的密码。

将 VYATA 设置为配置模式。

configure

在接口上设置用户子网网关 IP。

set interfaces bonding dp0bond0 vif <VLAN Number> vrrp vrrp-group <GROUP Number> virtual-address ‘<ENTERPRISE SUBNET GATEWAY IP>/<CIDR mask>’

注意:这个命令也应该在备份 VYATA 服务器上运行。

为子网设置路由策略。

set policy route prefix-list USERIP rule 2 action ‘permit’
set policy route prefix-list USERIP rule 2 prefix ‘<ENTERPRISE SUBNET CIDR>’
set policy route prefix-list SLPRIVATE rule 2 action ‘permit’
set policy route prefix-list SLPRIVATE rule 2 prefix ‘10.0.0.0/8’
set policy route route-map PRIVATEANDUSERIP rule 10 action ‘permit’
set policy route route-map PRIVATEANDUSERIP rule 10 match ip address prefix-list ‘SLPRIVATE’
set policy route route-map PRIVATEANDUSERIP rule 20 action ‘permit’
set policy route route-map PRIVATEANDUSERIP rule 20 match ip address prefix-list ‘USERIP’
set policy route route-map PRIVATEANDUSERIP rule 90 action ‘deny’

提交更改,保存和退出

commit
save
exit

使用以下指南配置具有用户 IP 范围的 Kubernetes 集群。

https://www.ibm.com/blogs/bluemix/2017/12/private-ip-addresses-in-cloud/

Kubernetes 部署

当在环境中部署一个 Kubernetes 集群(这里没有覆盖)时,在 SPS VLAN 上创建主子网。这些新的子网必须在 VYATA 主控和备份之前启用,才能正确使用。

注意,新创建的子网必须具有 VYATA 的子网网关(参见上面的配置网关接口)。

如果客户选择暴露在公共网络上的 Kubernetes 集群上运行的有效负载,那么需要对防火墙进行修改,以允许对子网或特定 IP 地址进行通信。决定要暴露的 IP 地址和/或子网,以及所需的端口。IP 是 Kubernetes 集群的入口控制器或负载均衡器。

使用 SSH 登录到 VYATA 主机。在请求时提供用户名 VYATA 和正确的密码。

将 VYATA 设置为配置模式。

configure

为公共入站子网和端口创建或更新资源组。

set resources group address-group PUBLIC_INGRESS address <INTERNAL_SUBNET>

为公共入站 IP 和端口创建或更新资源组。根据下面的示例,这可以是单个端口和一个端口范围:

set resources group port-group SERVICE-PORTS port 80
set resources group port-group SERVICE-PORTS port 443
set resources group port-group SERVICE-PORTS port 9000-9999
set resources group port-group SERVICE-PORTS port 30000-32767
set resources group port-group SERVICE-PORTS port <EXTERNAL PORT>

允许进入资源组。

set security firewall name FIREWALL-INBOUND-TRAFFIC rule 50 action 'accept'
set security firewall name FIREWALL-INBOUND-TRAFFIC rule 50 description 'allow Ingress access'
set security firewall name FIREWALL-INBOUND-TRAFFIC rule 50 destination address PUBLIC_INGRESS
set security firewall name FIREWALL-INBOUND-TRAFFIC rule 50 destination port SERVICE-PORTS
set security firewall name FIREWALL-INBOUND-TRAFFIC rule 50 protocol tcp
set security firewall name FIREWALL-INBOUND-TRAFFIC rule 50 state 'enable'
set security firewall name FIREWALL-INBOUND-TRAFFIC rule 60 action 'accept'
set security firewall name FIREWALL-INBOUND-TRAFFIC rule 60 description 'allow ping Ingress'
set security firewall name FIREWALL-INBOUND-TRAFFIC rule 60 destination address PUBLIC_INGRESS
set security firewall name FIREWALL-INBOUND-TRAFFIC rule 60 icmp name 'echo-request'
set security firewall name FIREWALL-INBOUND-TRAFFIC rule 60 state 'enable'

为负载均衡器、入口控制器和节点端口子网配置伪装豁免。

set service nat source rule 199 description 'exempt PUBLIC_INGRESS'
set service nat source rule 199 destination address '!10.0.0.0/8'
set service nat source rule 199 'exclude'
set service nat source rule 199 outbound-interface 'dp0bond1'
set service nat source rule 199 source address 'PUBLIC_INGRESS'

提交更改

commit
save
exit

 

现在可以将 IBM 容器服务集群部署到 IBM Cloud 安全周边中的安全外围段。

可以在安全的周边段中部署一个示例解决方案 实现专用的解决方案模式。

如果您是一个 IBM Cloud 专用客户,并希望使用 Kubernetes 应用程序集成在您的专用环境中的云计算应用程序和服务,请参见 在 IBM Cloud Dedicated 中集成 Kubernetes 与 Cloud Foundry

本文翻译自: Set up a Secure Perimeter in IBM Cloud (2018-03-16)

加入讨论