使用瞻博网络vSRX创建气隙
只有在创建隔离恢复环境并使用瞻博网络® vSRX 隔离环境时,才需要执行以下步骤。
Ansible® playbook 用于配置瞻博网络 vSRX 以允许从生产环境中的 Veeam 备份代理向隔离恢复环境中的 Veeam® Linux® 加固存储库传输流量。 网络备份完成后,使用 Ansible playbook 阻止流量,将 Veeam Linux 加固存储库与生产环境隔离。 Ansible playbook 由自动化服务器上的 cron 作业启动。
该文档还介绍了第二个 Ansible 游戏本,可用于安排气隙的打开和关闭。
可对游戏簿进行扩展,以触发 Veeam 备份工作,而不是按照由 Veeam 备份服务器控制的计划运行备份工作。 有关使用 Veeam PowerShell 模块的更多信息,请参阅 Start-VBRJob。
作为替代方案,可以在备份任务前后使用脚本,连接到自动化服务器并启动 Ansible playbook。 有关更多信息,请参阅 Script 设置 和 New-PSSession。
New-PSSession 模块需要 PowerShell 7. 有关详细信息,请参阅 安装 MSI 软件包。
另一种方法是使用 Posh-Junos® PowerShell 模块,直接从 Veeam 备份服务器与 vSRX 连接。 有关更多信息,请参阅 如何编写脚本:Windows® PowerShell。
打开和关闭气隙
该文件没有描述瞻博网络 vSRX 的配置。 您必须创建所需的配置。 播放书假定 vSRX 配置包括以下项目:
- 一个名为
sa-ansible
的用户,带有 SSH 密钥。- 设置系统登录用户 sa-ansible
uid 2002
- 设置系统登录用户 sa-ansible
class super-user
- 设置系统登录用户 sa-ansible
authentication ssh-rsa <public_key>
- 设置系统登录用户 sa-ansible
- NETCONF 已启用。
- 设置系统服务 netconf ssh 端口
830
- 从目标地址设置防火墙过滤器 PROTECT-IN term NETCONF
<vSRX_private_ip>/32
- 从协议 TCP 设置防火墙过滤器 PROTECT-IN term NETCONF
- 从目标端口设置防火墙过滤器 PROTECT-IN term NETCONF
830
- 设置防火墙过滤器 PROTECT-IN term NETCONF,然后接受
- 设置系统服务 netconf ssh 端口
- 安全区的配置如下。
IBM_CLOUD_PRIVATE
上的reth0
(不受信任的网络)IBM_CLOUD_PUBLIC
上的reth1
(不受信任的网络)IRE_PRIVATE
上的reth2
(可信网络)IRE_PUBLIC
上的reth3
(可信网络)
- 在名为
CYBER
的地址簿中,为 Veeam 代理和 Veeam Linux加固存储库创建地址簿条目。- 设置安全地址簿
CYBER
地址 PROXY_1<proxy_1_ip>/32
- 设置安全地址簿
CYBER
地址 PROXY_2<proxy_2_ip>/32
- 设置安全地址簿
CYBER
地址 LHBR_1<lhbr_ip>/32
- 设置安全地址簿
CYBER
地址设置 CYBER_PROD 地址 PROXY_1 - 设置安全地址簿
CYBER
地址设置 CYBER_PROD 地址 PROXY_2 - 设置安全地址簿
CYBER
地址设置 CYBER_IRE 地址 LHBR_1 - 设置安全地址簿
CYBER
附加区域IBM_CLOUD_PRIVATE
- 设置安全地址簿
CYBER
附加区域IRE_PRIVATE
- 设置安全地址簿
- 一个自定义应用程序,用于定义 TCP 端口
2500 - 3300
,这是 Veeam 用作数据传输通道的默认端口范围。- 设置应用程序 - 应用程序 VEEAM_DATA 协议 TCP
- 设置应用程序 - 应用程序 VEEAM_DATA 目的地端口 2500-3300
- 定义的安全策略可拒绝从 Veeam 代理到 Veeam Linux加固存储库的流量。
- 设置区域
IBM_CLOUD_PRIVATE
至区域IRE_PRIVATE
的安全策略 policy AIRGAP match source-address CYBER_PROD - 设置区域
IBM_CLOUD_PRIVATE
至区域IRE_PRIVATE
的安全策略 policy AIRGAP match destination-address CYBER_IRE - 将安全策略从区域
IBM_CLOUD_PRIVATE
设置为区域IRE_PRIVATE
策略 AIRGAP 匹配应用程序 VEEAM_DATA - 将安全策略从区域
IBM_CLOUD_PRIVATE
设置为区域IRE_PRIVATE
策略 AIRGAP 然后拒绝 - 将安全策略从区域
IBM_CLOUD_PRIVATE
设置为区域IRE_PRIVATE
策略 AIRGAP,然后登录会话启动 - 将安全策略从区域
IBM_CLOUD_PRIVATE
设置为区域IRE_PRIVATE
策略 AIRGAP,然后记录会话-关闭 - 将安全策略从区域
IBM_CLOUD_PRIVATE
设置为区域IRE_PRIVATE
策略 AIRGAP 然后计数
- 设置区域
Ansible playbook 使用 junipernetworks.junos.junos_config
模块,可管理运行瞻博网络 JUNOS 的设备上的配置。 该模块要求在被管理的远程设备上启用 NETCONF 系统服务。 可使用 ansible-galaxy collection install junipernetworks.junos
命令在 Ansible 服务器上安装该模块。
Ansible hosts
文件包含以下几行:
[vsrx]
gateway01 ansible_host=<vsrx_private_ip> ansible_user=sa-ansible ansible_connection=ansible.netcommon.netconf ansible_network_os=junipernetworks.junos.junos
[vsrx]
需要与 airgap.yml 文件中的- hosts: vsrx
项匹配。<vsrx_private_ip>
是运行 Ansible 的自动化服务器可访问的 vSRX 的私有 IP 地址。- ansible 用户需要与 vSRX, 例如
set system login user sa-ansible
.
使用 ansible-playbook airgap.yml --tag open
或 ansible-playbook airgap.yml --tag close
运行 Ansible 游戏本。
-
脚本通过 NETCONF 以用户 sa-ansible 和 SSH 密钥的身份通过专用 IP 地址连接到 vSRX。
-
使用命令
show security policies policy-name AIRGAP
并显示输出。 -
如果使用
--tag close
选项,则运行set security policies from-zone IBM_CLOUD_PRIVATE to-zone IRE_PRIVATE policy AIRGAP then deny
命令。 -
如果使用
--tag open
选项,则运行set security policies from-zone IBM_CLOUD_PRIVATE to-zone IRE_PRIVATE policy AIRGAP then permit
命令。 -
再次使用命令
show security policies policy-name AIRGAP
并显示输出结果。 -
在 vSRX 设备上使用
ansible - airgap opened
或ansible - airgap closed
注释时,可以看到show system commit
注释。0 2022-04-22 10:48:40 UTC by sa-ansible via netconf ansible - airgap opened 1 2022-04-22 10:30:21 UTC by sa-ansible via netconf ansible - airgap closed
Ansible playbook 文件 airgap.yml
包含以下几行:
- hosts: vsrx
connection: local
gather_facts: no
tasks:
- name: Get show security policies policy-name AIRGAP
junipernetworks.junos.junos_command:
commands:
- show security policies policy-name AIRGAP
register: airgap_policy
tags:
- open
- close
- name: Display AIRGAP security policy
debug:
var: airgap_policy.stdout_lines
tags:
- open
- close
- name: Close airgap
junipernetworks.junos.junos_config:
lines:
- set security policies from-zone IBM_CLOUD_PRIVATE to zone IRE_PRIVATE policy AIRGAP then deny
comment: ansible - airgap closed
tags: close
- name: Open airgap
junipernetworks.junos.junos_config:
lines:
- set security policies from-zone IBM_CLOUD_PRIVATE to zone IRE_PRIVATE policy AIRGAP then permit
comment: ansible - airgap opened
tags: open
- name: Get show security policies policy-name AIRGAP
junipernetworks.junos.junos_command:
commands:
- show security policies policy-name AIRGAP
register: airgap_policy
tags:
- open
- close
- name: Display AIRGAP security policy
debug:
var: airgap_policy.stdout_lines
tags:
- open
- close
安排
下面的文件 sched_airgap.yml
使用自动化服务器上的 cron 根据计划打开和关闭气隙。 ansible-playbook sched_airgap.yml --tags set
命令配置 cron 作业,而 ansible-playbook sched_airgap.yml --tags cancel
命令则删除 cron 作业。 您可以使用 crontab -l
命令进行验证。 Ansible 的输出记录在日志文件 /swlib/ansible/airgap.log
中。 以下示例在每天 01:00 打开气隙,05:00 关闭气隙。
- hosts: localhost
connection: local
gather_facts: no
tasks:
- name: Create the airgap-open cron job
ansible.builtin.cron:
name: airgap-open
weekday: "*"
minute: "*"
hour: "1"
job: "ansible-playbook -i /swlib/ansible/hosts /swlib/ansible/airgap.yml --tags open >>/swlib/ansible/airgap.log"
tags: set
- name: Create the airgap-close cron job
ansible.builtin.cron:
name: airgap-close
weekday: "*"
minute: "*"
hour: "5"
job: "ansible-playbook -i /swlib/ansible/hosts /swlib/ansible/airgap.yml --tags close >>/swlib/ansible/airgap.log"
tags: set
- name: Delete the airgap-open cron job
ansible.builtin.cron:
name: airgap-open
state: absent
tags: cancel
- name: Delete the airgap-close cron job
ansible.builtin.cron:
name: airgap-close
state: absent
tags: cancel
如果您正在创建网络恢复隔离恢复环境解决方案架构,请参阅 生产环境配置 了解详细信息。