spatula
Спатула
Эта роль Ansible применяет шаблоны лучших практик безопасности к устройствам Palo Alto Networks.
Цель
Эта роль использует лучшие практические шаблоны Iron Skillet для обеспечения конфигурации брандмауэров PAN-OS в соответствии с рекомендациями лучших практик Palo Alto Networks. Эти шаблоны загружаются из следующего репозитория на GitHub при выполнении плейбука и применяются к каждому устройству или к консоли управления Panorama.
После применения этих шаблонов может быть проведена оценка лучших практик, чтобы оценить эффективность полученной конфигурации.
Требования
Эта роль использует библиотеки Python, указанные ниже. Все они доступны через PyPI и могут быть установлены с помощью установщика pip
. Рекомендуется использовать virtualenv
, чтобы избежать конфликтов с системными библиотеками.
- pandevice - Фреймворк для взаимодействия с устройствами Palo Alto Networks через API.
- pan-python - Многофункциональный набор инструментов для Palo Alto Networks PAN-OS, Panorama, WildFire и AutoFocus.
- xmltodict - Преобразование между XML строкой и Python dict.
- 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 | Тип IP-адреса управления Panorama | |
PANORAMA_NAME | строка | panorama01 | x | Имя хоста Panorama | |
PANORAMA_IP | строка | 192.168.55.7 | x | IP-адрес Panorama | |
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 | IP-адрес сервера Syslog |
API_KEY_LIFETIME | строка | 525600 | x | x | Срок действия ключа API в минутах |
INCLUDE_PAN_EDL | yes,no | yes | x | x | Включить предопределенные правила безопасности внешних списков Palo Alto Networks |
Зависимости
Эта роль зависит от официальных модулей Ansible для Palo Alto Networks, которые содержатся в следующей роли Galaxy:
Модули Ansible Palo Alto Networks используют dict
для передачи учетных данных инвентаря и аутентификации. Этот dict
может быть определен один раз в плейбуке с переданными значениями переменных ip_address
, username
и password
любым поддерживаемым способом.
vars:
credentials:
ip_address: '{{ ip_address }}'
username: '{{ username }}'
password: '{{ password }}'
Примеры плейбуков
Ниже приведены примеры плейбуков Ansible, которые используют эту роль для применения шаблонов лучших практик безопасности к Panorama и брандмауэру:
Panorama:
---
- name: Настроить Panorama с шаблонами лучших практик для PAN-OS 9.0
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
Информация об авторе
Роль создана Робертом Хагеном (@stealthllama).
ansible-galaxy install PaloAltoNetworks/ansible-role-spatula