在 IBM Cloud 中执行 vSRX 虚拟防火墙高级任务
使用防火墙
IBM Cloud™ Juniper vSRX 虚拟防火墙使用安全区域的概念,其中每个 vSRX 虚拟防火墙接口都映射到一个“区域”,以处理有状态防火墙。无状态防火墙由防火墙过滤器控制。
策略用于允许和阻止这些定义的区域之间的流量,此处定义的规则是有状态的。
在 IBM Cloud 中,vSRX 虚拟防火墙旨在具有四个不同的安全区域:
区 |
独立接口 |
HA 接口 |
---|---|---|
SL-Private(未标记) |
ge-0/0/0.0 或 ae0.0 |
reth0.0 |
SL-Public(未标记) |
ge-0/0/1.0 或 ae1.0 |
1.1 |
客户专用(已标记) |
ge-0/0/0.1 或 ae0.1 |
reth2.1 |
客户公开(已标记) |
ge-0/0/1.1 或 ae1.1 |
3.1 |
区域策略
以下是可以在策略中定义的一些属性:
-
源地址
-
目标地址
-
应用
-
操作(允许/拒绝/拒绝/计数/log)
由于这是一个有状态的操作,因此无需允许返回数据包(在这种情况下,Echo 会回复)。
要配置有状态的防火墙,请执行以下步骤:
-
创建安全区域并分配相应的接口:
独立场景:
set security zones security-zone CUSTOMER-PRIVATE interfaces ge-0/0/0.1
set security zones security-zone CUSTOMER-PUBLIC interfaces ge-0/0/1.1
高可用性场景:
set security zones security-zone CUSTOMER-PRIVATE interfaces reth2.1
set security zones security-zone CUSTOMER-PUBLIC interfaces reth2.1
-
定义两个不同区域之间的策略和规则。
以下示例说明了从客户专用区域到“客户公共”区域 ping 流量:
set security policies from-zone CUSTOMER-PRIVATE to-zone CUSTOMER-PUBLIC policy
set security policies from-zone CUSTOMER-PRIVATE to-zone CUSTOMER-PUBLIC policy
-
使用以下命令允许定向到 vSRX 虚拟防火墙的流量:
-
独立场景:
set security zones security-zone CUSTOMER-PRIVATE interfaces ge-0/0/0.0 host-inbound-traffic system-services all
-
高可用性场景:
set security zones security-zone CUSTOMER-PRIVATE interfaces reth2.0 host-inbound-traffic system-services all
-
-
要允许 OSPF 或 BGP 等协议,请使用以下命令:
-
独立场景:
set security zones security-zone trust interfaces ge-0/0/0.0 host-inbound-traffic protocols all
-
高可用性场景:
set security zones security-zone trust interfaces reth2.0 host-inbound-traffic protocols all
-
防火墙过滤器
默认情况下,IBM Cloud™ Juniper vSRX 虚拟防火墙允许对自身执行 ping、SSH 和 HTTPS,并通过将 PROTECT-IN 过滤器应用于 lo 接口来丢弃所有其他流量。
要配置新的无状态防火墙,请执行以下步骤:
-
创建防火墙过滤器和术语(以下过滤器仅允许 ICMP 并丢弃所有其他流量)
set firewall filter ALLOW-PING term ICMP from protocol icmp
set firewall filter ALLOW-PING term ICMP then accept
-
将过滤器规则应用于接口(以下命令将过滤器应用于所有专用网络流量)
set interfaces ge-0/0/0 unit 0 family inet filter input ALLOW-PING
使用 sNAT
您可以参考 vSRX 虚拟防火墙设备上的 sNAT 配置示例,其中网关后面路由的专用节点可以通过使用 sNAT 与外界通信
要为 IBM Cloud™ Juniper vSRX 虚拟防火墙配置 NAT,请参阅瞻博 网络网站上的网络地址转换用户指南 。
使用故障切换
您可以从主要 IBM Cloud™ Juniper vSRX 虚拟防火墙启动故障转移到备份设备,以便在故障转移后,所有控制和数据平面流量都会通过辅助网关设备进行路由。
仅当瞻博网络 vSRX 虚拟防火墙网关设备在高可用性模式下配置时,本节才适用。
执行以下过程:
-
登录您的主 vSRX 虚拟防火墙网关设备。
-
通过在控制台提示符下运行命令 cli,进入 CLI 模式。进入 CLI 模式后,控制台将显示主节点角色或辅助节点角色。
-
在主 vSRX 虚拟防火墙网关设备上,运行以下命令:
show chassis cluster status
Monitor Failure codes: CS Cold Sync monitoring FL Fabric Connection monitoring GR GRES monitoring HW Hardware monitoring IF Interface monitoring IP IP monitoring LB Loopback monitoring MB Mbuf monitoring NH Nexthop monitoring NP NPC monitoring SP SPU monitoring SM Schedule monitoring CF Config Sync monitoring Cluster ID: 2 Node Priority Status Preempt Manual Monitor-failures Redundancy group: 0 , Failover count: 1 node0 100 primary no no None node1 1 secondary no no None Redundancy group: 1 , Failover count: 1 node0 100 primary yes no None node1 1 secondary yes no None {primary:node0}
确保对于两个冗余组,同一个节点设置为主节点。不同的冗余组可能会将不同的节点设置为主要角色。
注意:默认情况下,vSRX 虚拟防火墙将冗余组 1 的 Preempt 设置为“是”,冗余组 0 设置为“否”。请参阅此链接,了解有关抢占和故障切换行为的更多信息。
-
通过在控制台提示符中运行以下命令,启动故障切换:
request chassis cluster failover redundancy-group <redundancy group number> node <node number>
从步骤 2 中命令输出中选择相应的冗余组编号和节点编号。要对两个冗余组进行故障转移,请执行上一个命令两次,每个组一个。
-
故障转移完成后,验证控制台输出。现在,它应列为辅助项。
-
登录对的另一个 vSRX 虚拟防火墙网关。通过再次执行命令 cli 进入 CLI 模式,然后验证控制台输出是否显示为主输出。
提示:当瞻博网络 vSRX 虚拟防火墙网关设备进入 CLI 模式时,从控制平面的角度来看,输出将显示为主要输出。始终检查 show 机箱群集状态输出,从数据平面的角度来看,确定哪个网关设备是主要网关设备。请参阅 vSRX 虚拟防火墙默认配置,了解有关冗余组以及控制和数据平面的更多信息。
使用路由
IBM Cloud™ Juniper vSRX 虚拟防火墙基于 JunOS,让您能够访问完整的瞻博网络路由堆栈。
-
Static routing—要配置静态路由,请运行以下命令:
设置默认路由 —
set routing-options static route 0/0 next-hop <Gateway IP>
-
Creating a static route—运行
set routing-options static route <PREFIX/MASK> next-hop <Gateway IP>
-
Basic OSPF routing—要仅使用区域 0 设置基本 OSPF 路由,请使用命令使用 md5 身份验证
set protocols ospf area 0 interface ge-0/0/1.0 authentication md5 0 key <key>
来运行以下命令。 -
Basic BGP routing
-
要设置基本 BGP 路由,请首先通过运行
set routing-options autonomous-system 65001
命令来定义本地 AS。 -
然后,配置 BGP 邻接方及其会话属性:
set protocols bgp group CUSTOMER local-address 10.1.1.1
set protocols bgp group CUSTOMER family inet unicast
set protocols bgp group CUSTOMER family inet6 unicast
set protocols bgp group CUSTOMER peer-as 65002
set protocols bgp group CUSTOMER neighbor 2.2.2.2
此示例为以下内容配置了 BGP:
-
要使用 10.1.1.1.1 的源 IP 地址建立会话
-
协商 ipv4 和 ipv6 单播系列
-
与属于 AS 65002 的邻接方对等
-
对等邻接方 IP 10.2.2.2
-
-
有关更多配置,请参阅 Junos OS 文档
使用 VPN
本主题详细介绍了两个站点之间基于路由的 VPN 配置示例。在此示例配置中,服务器 1(站点 A)可与服务器 2(站点 B)通信,并且每个站点都使用两阶段 IPSEC 身份验证。有关更多信息 ,请参阅使用 VPN 和
站点 A (达拉斯) 配置示例:
# show security address-book global address Network-A 10.84.237.200/29; [edit] # show security address-book global address Network-B 10.45.53.48/29; # show security ike proposal IKE-PROP { authentication-method pre-shared-keys; dh-group group5; authentication-algorithm sha1; encryption-algorithm aes-128-cbc; lifetime-seconds 3600; } policy IKE-POL { mode main; proposals IKE-PROP; pre-shared-key ascii-text "$9$ewkMLNs2aikPdbkP5Q9CKM8"; ## SECRET-DATA } gateway IKE-GW { ike-policy IKE-POL; address 10.158.100.100; external-interface ge-0/0/1.0; } #show security ipsec proposal IPSEC-PROP { protocol esp; authentication-algorithm hmac-sha1-96; encryption-algorithm aes-128-cbc; lifetime-seconds 3600; } policy IPSEC-POL { perfect-forward-secrecy { keys group5; } proposals IPSEC-PROP; } vpn IPSEC-VPN { bind-interface st0.1; vpn-monitor; ike { gateway IKE-GW; ipsec-policy IPSEC-POL; } establish-tunnels immediately; } #show interfaces ge-0/0/0 { description PRIVATE_VLANs; flexible-vlan-tagging; native-vlan-id 1121; unit 0 { vlan-id 1121; family inet { address 10.184.108.158/26; } } unit 10 { vlan-id 1811; family inet { address 10.184.237.201/29; } } unit 20 { vlan-id 1812; family inet { address 10.185.48.9/29; } } } st0 { unit 1 { family inet { address 10.169.200.0/31; } } #show security policies from-zone CUSTOMER-PRIVATE to-zone VPN { policy Custprivate-to-VPN { match { source-address any; destination-address Network-B; application any; } then { permit; } } } from-zone VPN to-zone CUSTOMER-PRIVATE { policy VPN-to-Custprivate { match { source-address Network-B; destination-address any; application any; } then { permit; } }
站点 B(伦敦)配置示例:
# show interfaces ge-0/0/0 { description PRIVATE_VLANs; flexible-vlan-tagging; native-vlan-id 822; unit 0 { vlan-id 822; family inet { address 10.45.165.140/26; } } unit 10 { vlan-id 821; family inet { address 10.45.53.49/29; } } } st0 { unit 1 { family inet { address 10.169.200.1/31; } } #show security ike proposal IKE-PROP { authentication-method pre-shared-keys; dh-group group5; authentication-algorithm sha1; encryption-algorithm aes-128-cbc; lifetime-seconds 3600; } policy IKE-POL { mode main; proposals IKE-PROP; pre-shared-key ascii-text "$9$H.fz9A0hSe36SevW-dk.P"; ## SECRET-DATA } gateway IKE-GW { ike-policy IKE-POL; address 10.169.100.100; external-interface ge-0/0/1.0; } # show security ipsec proposal IPSEC-PROP { protocol esp; authentication-algorithm hmac-sha1-96; encryption-algorithm aes-128-cbc; lifetime-seconds 3600; } policy IPSEC-POL { perfect-forward-secrecy { keys group5; } proposals IPSEC-PROP; } vpn IPSEC-VPN { bind-interface st0.1; vpn-monitor; ike { gateway IKE-GW; ipsec-policy IPSEC-POL; } establish-tunnels immediately; } #show security zone security-zone CUSTOMER_PRIVATE security-zone CUSTOMER-PRIVATE { interfaces { ge-0/0/0.10 { host-inbound-traffic { system-services { all; } } } } } security-zone VPN { interfaces { st0.1; } } #show security policies from-zone CUSTOMER-PRIVATE to-zone VPN policy Custprivate-to-VPN { match { source-address any; destination-address Network-A; application any; } then { permit; } } #show security zones security-zone VPN interfaces { st0.1; } #show security policies from-zone VPN to-zone CUSTOMER-PRIVATE policy VPN-to-Custprivate { match { source-address Network-A; destination-address any; application any; } then { permit; } }
性能考虑因素
为了获得最佳的 IPSEC VPN 性能,请使用 AES-GCM 作为 IKE 和 IPSEC 提议的加密算法。
例如:
set security ike proposal IKE-PROP encryption-algorithm aes-128-gcm
set security ipsec proposal IPSEC-PROP encryption-algorithm aes-128-gcm
使用 AES-GCM 作为加密算法,无需在同一提议中指定身份验证算法。AES-GCM 同时提供加密和身份验证。
有关 VPN 配置的更多信息,请参阅 安全设备 IPsec VPN 用户指南 和 示例:配置基于路由的 VPN
保护主机操作系统
IBM Cloud™ Juniper vSRX 虚拟防火墙在安装有 Ubuntu 和 KVM 的裸机服务器上作为虚拟机运行。要保护主机操作系统的安全,应确保同一操作系统上没有其他关键服务托管。
SSH 访问
IBM Cloud™ Juniper vSRX 虚拟防火墙可通过公共和私有网络接入或专用网络访问进行部署。。默认情况下,在新配置和操作系统重新加载时,将禁用基于密码的 SSH 对主机操作系统公共 IP 的访问。可通过专用 IP 地址访问主机。或者,可以使用基于密钥的身份验证来访问公共 IP。为此,请在下达新网关顺序时指定公共 SSH 密钥。
IBM Cloud™ Juniper vSRX 虚拟防火墙的某些现有部署可能允许基于密码的 SSH 访问主机操作系统的公共 IP。对于这些部署,您可以按照以下步骤手动禁用基于密码的 SSH 对操作系统公共 IP 的访问:
-
修改 /等/ssh/sshd_config
-
请确保设置了以下值。
ChallengeResponseAuthentication no PasswordAuthentication no
-
将以下过滤器规则添加到文件的末尾。
Match Address 10.0.0.0/8 Password Authentication yes
-
-
使用命令 /usr/sbin/service ssh restart重新启动 SSH 服务。
上述过程可确保私有基础架构网络 10.0.0.0/8 子网中的地址允许 SSH 访问。需要此访问权限才能执行如下操作:OS 重新加载、群集重建、版本升级。
防火墙
如果不按所需规则实施 Ubuntu 防火墙(UFW、Iptables 等),可能会导致 vSRX 虚拟防火墙 HA 群集被禁用。vSRX 虚拟防火墙解决方案依赖于主节点和辅助节点之间的心跳通信。如果防火墙规则不允许节点之间的通信,则群集通信将丢失。
vSRX 虚拟防火墙架构会影响下面讨论的防火墙规则。有关这两种架构的详细信息,请参阅 vSRX 默认配置。
对于使用传统架构运行的 vSRX 虚拟防火墙 18.4 HA 部署,需要以下规则才能允许 UFW 进行群集通信:
-
要允许 /etc/ufw/before.rules 中的协议 47(用于心跳通信):
-A ufw-before-input -p 47 -j ACCEPT
-
要允许专用网络通信:
ufw allow in from 10.0.0.0/8 to 10.0.0.0/8
-
要启用 UFW:
ufw enable
对于使用更新架构运行的 vSRX 虚拟防火墙版本,防火墙规则必须允许组播通信。
在某些情况下,故障排除操作可能需要禁用防火墙才能访问公共存储库。在这些情况下,您应该与 IBM Support 合作,了解如何继续。
大多数网关操作都需要 SSH 访问主机操作系统和 vSRX 虚拟防火墙的专用 10.0.0.0/8 子网。使用防火墙阻止此访问可能会导致以下操作失败:操作系统重新加载、群集重建和版本升级
因此,如果为 10.0.0.0/8 子网禁用 SSH 访问,则必须在执行上述任一操作之前重新启用 SSH 访问。
配置管理接口
IBM Cloud™ Juniper vSRX 虚拟防火墙节点提供默认情况下未配置的内置管理接口 (“fxp0”)。配置这些专用接口后,可用于与单个节点通信,这在高可用性群集中可用于监控通过 SSH、ping、SNMP 等的辅助节点的状态。由于 vSRX 虚拟防火墙的专用 IP 浮动到主节点,因此无法直接访问辅助节点。
fxp0 接口的配置要求子网中的 IP 连接到网关的专用传输 VLAN。虽然网关附带的主子网有可能可用的 IP,但不建议这样做。这是因为主子网是为网关配置基础架构保留的,如果同一 Pod 中部署了其他网关,可能会发生 IP 冲突。
您可以为专用传输 VLAN 分配一个辅助子网,并使用此子网中的 IP 配置 fxp0 和主机桥接接口,以实现 PING 和 SSH 访问。为此,请执行以下过程: