paloaltonetworks.spatula

抹刀

这个 Ansible 角色将安全最佳实践模板应用于 Palo Alto Networks 设备。

目的

这个角色利用 Iron Skillet 的最佳实践模板,以确保 PAN-OS 防火墙根据 Palo Alto Networks 的 最佳实践建议 配置。这些模板在执行剧本时从以下 GitHub 仓库下载并应用于每个设备或 Panorama 管理控制台。

在应用这些模板后,可以运行 最佳实践评估,以评估配置的有效性。

要求

这个角色使用以下列出的 Python 库。所有库都可以通过 PyPI 获得,并可以使用 pip 安装。建议使用 virtualenv 以避免系统库冲突。

  • pandevice - 通过 API 与 Palo Alto Networks 设备交互的框架
  • pan-python - Palo Alto Networks PAN-OS、Panorama、WildFire 和 AutoFocus 的多工具集
  • xmltodict - 在 XML 字符串和 Python 字典之间转换
  • passlib - 支持 30 多种方案的全面密码哈希框架

角色变量

这个角色中使用的变量列在下面的表格中,并附有默认值(见 defaults/main.yml)。小写 变量是剧本变量,而 大写 变量用于配置模板中的 Jinja2 变量替换。一些变量标记为仅适用于 Panorama,其他则适用于 Panorama 和防火墙。

变量 类型 默认值 Panorama Panos 描述
device_type panorama,panos panorama x x Panorama 或防火墙配置
template_version panos_v9.0,panos_v8.1,panos_v8.0 panos_v9.0 x x 模板版本
CONFIG_PANORAMA_IP yes,no yes x Panorama 管理接口配置
PANORAMA_TYPE static,cloud static x Panorama 管理 IP 类型
PANORAMA_NAME 字符串 panorama01 x Panorama 主机名
PANORAMA_IP 字符串 192.168.55.7 x Panorama IP
PANORAMA_MASK 字符串 255.255.255.0 x Panorama 子网掩码
PANORAMA_DG 字符串 192.168.55.2 x Panorama 默认网关
CONFIG_EXPORT_IP 字符串 192.0.2.3 x 定期配置导出的 IP 地址
STACK 字符串 sample_stack x Panorama 的模板堆栈
DEVICE_GROUP 字符串 sample_devicegroup x Panorama 的设备组名称
FW_NAME 字符串 panos-01 x x 防火墙主机名
MGMT_TYPE dhcp-client,static dhcp-client x x 防火墙管理 IP 类型
MGMT_IP 字符串 192.0.2.6 x x 防火墙管理 IP
MGMT_MASK 字符串 255.255.255.0 x x 防火墙管理子网掩码
MGMT_DG 字符串 192.0.2.7 x x 防火墙管理默认网关
NTP_1 字符串 0.pool.ntp.org x x 网络时间协议服务器
NTP_2 字符串 1.pool.ntp.org x x 网络时间协议服务器 2
ADMINISTRATOR_USERNAME 字符串 admin x x 管理员用户名
ADMINISTRATOR_PASSWORD 密码 admin x x 管理员密码
DNS_1 字符串 8.8.8.8 x x 主要 DNS 服务器
DNS_2 字符串 8.8.4.4 x x 次要 DNS 服务器
SINKHOLE_IPV4 字符串 72.5.65.111 x x Sinkhole 地址 IPv4
SINKHOLE_IPV6 字符串 2600:5200::1 x x Sinkhole 地址 IPv6
INTERNET_ZONE 字符串 untrust x x 在报告中过滤的非信任区域
EMAIL_PROFILE_GATEWAY 字符串 192.0.2.1 x x 关键警报的邮件网关地址
EMAIL_PROFILE_FROM 字符串 sentfrom@yourdomain.com x x 邮件警报中的发件人地址
EMAIL_PROFILE_TO 字符串 sendto@yourdomain.com x x 邮件警报中的收件人地址
SYSLOG_SERVER 字符串 192.0.2.2 x x Syslog 服务器 IP 地址
API_KEY_LIFETIME 字符串 525600 x x API 密钥的有效期(分钟)
INCLUDE_PAN_EDL yes,no yes x x 包括预定义的 Palo Alto Networks 外部列表安全规则

依赖关系

这个角色依赖于官方的 Palo Alto Networks Ansible 模块,它们包含在以下 Galaxy 角色中:

Palo Alto Networks Ansible 模块使用提供程序 dict 来传递清单和认证凭证。这个 dict 可以在剧本中定义一次,使用支持的方法传递 ip_addressusernamepassword 变量的值。

vars:
  credentials:
    ip_address: '{{ ip_address }}'
    username: '{{ username }}'
    password: '{{ password }}'

示例剧本

以下是一些 Ansible 剧本示例,通过此角色将安全最佳实践模板应用于 Panorama 和防火墙:

Panorama:

---
- name: 使用最佳实践模板为 PAN-OS 9.0 配置 Panorama
  hosts: all
  connection: local
  gather_facts: False

  vars:
    credentials:
      ip_address: '{{ ip_address }}'
      username: '{{ username }}'
      password: '{{ password }}'
    device_type: 'panorama'
    template_version: 'panos_v9.0'
  vars_files:
    - panorama_vars.yml
      
  roles:
    - role: PaloAltoNetworks.spatula

防火墙:

---
- name: 使用最佳实践模板为 PAN-OS 8.1 配置防火墙
  hosts: all
  connection: local
  gather_facts: False

  vars:
    credentials:
      ip_address: '{{ ip_address }}'
      username: '{{ admin }}'
      password: '{{ password }}'
    device_type: 'panos'
    template_version: 'panos_v8.1'
  vars_files:
    - fw_vars.yml
      
  roles:
    - role: PaloAltoNetworks.spatula

许可证

Apache 2.0

作者信息

角色由 Robert Hagen 创建 (@stealthllama)。

关于项目

Applies security best practice templates to Palo Alto Networks devices

安装
ansible-galaxy install paloaltonetworks.spatula
许可证
apache-2.0
下载
4.5k
拥有者
We ensure each day is safer and more secure than the one before.