Ansible 和 Check Point 入门
Ansible 和 Check Point 入门
现代基础设施的规模和复杂性不仅要求您能够为系统定义安全策略,还要求您能够以编程方式应用该安全策略或作为对外部事件的响应进行更改。因此,合适的自动化工具是必要的构建块,使您能够以快速、简单和一致的方式应用适当的操作。
Check Point 拥有经过认证的 Ansible 内容集合模块,可帮助组织自动化其响应和修复实践,并采用 DevOps 模型以提高运营效率来加速应用程序部署。这些模块基于 Check Point 安全管理 API,也可在 Ansible Galaxy 上获得,在 Check Point 管理服务器集合 的上游版本中。
API 的操作流程与 Check Point 安全管理 GUI SmartConsole 完全相同,即 登录 > 获取会话 > 进行更改 > 发布 > 注销。
安全专业人员可以利用这些模块来自动执行各种任务,以识别、搜索和响应安全事件。此外,结合 Ansible 安全自动化中包含的其他模块,现有的 Check Point 基础设施可以集成到涉及多种安全技术的编排流程中。
DevOps 专业人员可以在自动化工作流程中使用相同的模块来支持物理和虚拟化下一代防火墙的部署和维护。
为了更好地理解如何使用这些新模块,我将提供一系列基于安全自动化社区项目中代码的示例,在 **Ansible 安全自动化** 示例剧本 GH 存储库 中。集成正常工作并按预期运行的先决条件是,鉴于此 修补程序 已应用,Check Point R80 版本受此集成支持。
Ansible Check Point 模块
cp_mgmt_*
模块已随 Ansible 2.9 发布。目前可以在 文档 的“最新”分支中找到它们。
有相当多的模块可用于管理 Check Point 设备,在 Check Point Mgmt 集合中,它们被分为两类
-
cp_mgmt_*
:所有这些模块都使用上述 API 在 Check Point 设备上 **发布** API 对象。 -
cp_mgmt_*_facts
:所有事实模块都使用相同的 API 从 Check Point 设备获取事实。
例如,如果我们查看专用于主机对象的模块,则会以以下方式反映出来
- cp_mgmt_host - 管理 Check Point 设备上的主机对象,包括创建、更新和删除对象。
- cp_mgmt_host_facts - 获取 Check Point 设备上的主机对象事实。
此外,还有总共九个 checkpoint_* 模块,这些模块是在 **Ansible** **2.8** 中引入的,但这些模块已弃用,建议并鼓励使用在 **Ansible 2.9** 中引入的最新 cp_mgmt_*
模块,除非需要。
cp_mgmt_* 模块示例:如何执行主机配置
这是一个如何使用 **cp_mgmt_host** 模块配置 **主机** 的示例
--- - hosts: check_point connection: httpapi tasks: - name: Create host object cp_mgmt_host: color: dark green ipv4_address: 192.0.2.2 name: New CP_MGMT Host 1 state: present auto_publish_session: true
当模块参数 **auto_publish_session** 设置为 True 时,您将使 Ansible 运行以立即在您的 Check Point 设备上生效。然后,您必须 **发布** 更改,这就是 **auto_publish_session** 实现的功能。请注意,默认情况下,**auto_publish_session** 的值为 **False**。如果用户希望在 **任务** 级别发布更改,则可以使用此模块参数。
但是,如果我们希望在运行完 **“n”** 个任务后,在剧本运行结束时发布更改,我们只需在剧本末尾运行可用的 **cp_mgmt_publish** 模块,所有完成的更改都会在您的 Check Point 设备上生效。
要运行剧本,请使用 ansible-playbook 命令
要检查这是否已按预期有效地更改了 Check Point 配置,请登录到 Check Point SmartConsole 并查看 **网络对象 -> 主机** 下,在那里我们将看到列出的新主机
模块可以保持状态(在适用情况下),因此当我们重新运行剧本时,它不会显示“已更改”,而只会显示 **确定**,而不会对 Check Point 设备进行任何更改。这也称为 **幂等性**(另请参阅 Ansible 文档)。
示例:如何收集主机事实
Check Point **事实** 模块允许我们查询不同的 Check Point 对象,例如网络、地址、DNS 域名、主机记录等。
让我们看一下一个专注于获取有关通过先前示例剧本配置的 **主机** 信息的 Ansible 剧本片段
--- - hosts: check_point connection: httpapi tasks: - name: collect-host facts cp_mgmt_host_facts: name: New CP_MGMT Host 1 register: cp_host - name: display host facts debug: msg: "{{ cp_host }}"
使用 ansible-playbook 命令运行剧本,如下所示
剧本输出:与查询的主机名 即 **“New CP_MGMT Host 1”** 相关的所有主机事实
上述剧本显示了我们如何查询 Check Point 以收集有关对象(在本例中为主机)的特定信息。然后,这些事实可以通过 Ansible 剧本使用,并允许设备或设备组充当可能正在更改的信息的单一事实来源。要详细了解 Ansible 变量、事实和 set_fact 模块,请参阅 Ansible 变量文档。
如何在响应和修复方案中使用 Check Point 模块
Ansible 安全自动化支持 SOC 或安全团队在其响应和修复活动中使用的许多安全技术之间的互操作性。
为了帮助安全专业人员将 Ansible 作为安全通用自动化语言,我们编写了许多角色,可以立即使用这些角色来加速这些场景下的生产力。
这些角色的一个示例是 acl_manager,它可用于自动化诸如在受支持的技术(如 Check Point NGFW)上阻止和取消阻止 IP 和 URL 等任务。
如何使用 acl_manager 角色在 Check Point 中阻止 IP
--- - hosts: checkpoint connection: httpapi tasks: - include_role: name: acl_manager tasks_from: blacklist_ip vars: source_ip: 192.0.2.2 destination_ip: 192.0.2.12 ansible_network_os: checkpoint
角色可用于抽象常见的安全任务,以无缝支持特定用例,而无需深入了解底层模块的功能。
Check Point 管理 API 和其他 Check Point API 在 Check Point API 参考 中定义。