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_address
、username
和 password
变量的值。
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)。