paloaltonetworks.spatula
spatule
Ce rôle Ansible applique des modèles de meilleures pratiques de sécurité aux appareils de Palo Alto Networks.
But
Ce rôle utilise les modèles de meilleures pratiques Iron Skillet pour s'assurer que les pare-feu PAN-OS sont configurés conformément aux recommandations de meilleures pratiques de Palo Alto Networks. Ces modèles sont téléchargés depuis le dépôt GitHub suivant lors de l'exécution du playbook et appliqués à chaque appareil ou à une console de gestion Panorama.
Une évaluation des meilleures pratiques peut être effectuée après l'application de ces modèles pour évaluer l'efficacité de la configuration résultante.
Exigences
Ce rôle utilise les bibliothèques Python énumérées ci-dessous. Toutes sont disponibles via PyPI et peuvent être installées en utilisant l'installateur pip
. L'utilisation de virtualenv
est recommandée pour éviter les conflits de bibliothèques système.
- pandevice - Cadre pour interagir avec les appareils de Palo Alto Networks via API
- pan-python - Ensemble d'outils pour Palo Alto Networks PAN-OS, Panorama, WildFire et AutoFocus
- xmltodict - Convertir entre une chaîne XML et un dictionnaire Python
- passlib - Cadre complet pour le hachage de mots de passe supportant plus de 30 schémas
Variables du rôle
Les variables utilisées dans ce rôle sont listées dans le tableau ci-dessous avec leurs valeurs par défaut (voir defaults/main.yml). Les variables en minuscules sont des variables de playbook tandis que les variables EN MAJUSCULE sont utilisées pour la substitution de variables Jinja2 dans les modèles de configuration. Certaines variables sont marquées comme étant réservées à Panorama, tandis que d'autres sont applicables aux deux : Panorama et pare-feux.
Variable | Type | Par défaut | Panorama | Panos | Description |
---|---|---|---|---|---|
device_type | panorama,panos | panorama | x | x | Configuration de Panorama ou du pare-feu |
template_version | panos_v9.0,panos_v8.1,panos_v8.0 | panos_v9.0 | x | x | Version du modèle |
CONFIG_PANORAMA_IP | oui,non | oui | x | Configuration de l'interface de gestion Panorama | |
PANORAMA_TYPE | statique,cloud | statique | x | Type d'IP de gestion Panorama | |
PANORAMA_NAME | chaîne | panorama01 | x | Nom d'hôte de Panorama | |
PANORAMA_IP | chaîne | 192.168.55.7 | x | IP de Panorama | |
PANORAMA_MASK | chaîne | 255.255.255.0 | x | Masque de sous-réseau de Panorama | |
PANORAMA_DG | chaîne | 192.168.55.2 | x | Passerelle par défaut de Panorama | |
CONFIG_EXPORT_IP | chaîne | 192.0.2.3 | x | Adresse IP pour les exportations de configuration programmées | |
STACK | chaîne | sample_stack | x | Empilement de modèles pour Panorama | |
DEVICE_GROUP | chaîne | sample_devicegroup | x | Nom du groupe d'appareils pour Panorama | |
FW_NAME | chaîne | panos-01 | x | x | Nom d'hôte du pare-feu |
MGMT_TYPE | client-dhcp,statique | client-dhcp | x | x | Type d'IP de gestion du pare-feu |
MGMT_IP | chaîne | 192.0.2.6 | x | x | IP de gestion du pare-feu |
MGMT_MASK | chaîne | 255.255.255.0 | x | x | Masque de sous-réseau de gestion du pare-feu |
MGMT_DG | chaîne | 192.0.2.7 | x | x | Passerelle par défaut de gestion du pare-feu |
NTP_1 | chaîne | 0.pool.ntp.org | x | x | Serveur NTP |
NTP_2 | chaîne | 1.pool.ntp.org | x | x | Serveur NTP 2 |
ADMINISTRATOR_USERNAME | chaîne | admin | x | x | Nom d'utilisateur admin |
ADMINISTRATOR_PASSWORD | mot de passe | admin | x | x | Mot de passe admin |
DNS_1 | chaîne | 8.8.8.8 | x | x | Serveur DNS principal |
DNS_2 | chaîne | 8.8.4.4 | x | x | Serveur DNS secondaire |
SINKHOLE_IPV4 | chaîne | 72.5.65.111 | x | x | Adresse sinkhole IPv4 |
SINKHOLE_IPV6 | chaîne | 2600:5200::1 | x | x | Adresse sinkhole IPv6 |
INTERNET_ZONE | chaîne | untrust | x | x | Zone non fiable à filtrer dans les rapports |
EMAIL_PROFILE_GATEWAY | chaîne | 192.0.2.1 | x | x | Adresse de la passerelle email pour les alertes critiques |
EMAIL_PROFILE_FROM | chaîne | sentfrom@votredomaine.com | x | x | Adresse de l'expéditeur dans les alertes email |
EMAIL_PROFILE_TO | chaîne | sendto@votredomaine.com | x | x | Adresse du destinataire dans les alertes email |
SYSLOG_SERVER | chaîne | 192.0.2.2 | x | x | Adresse IP du serveur Syslog |
API_KEY_LIFETIME | chaîne | 525600 | x | x | Durée de vie de la clé API en minutes |
INCLUDE_PAN_EDL | oui,non | oui | x | x | Inclure les règles de sécurité des listes externes préétablies de Palo Alto Networks |
Dépendances
Ce rôle dépend des modules Ansible officiels de Palo Alto Networks, qui sont contenus dans le rôle Galaxy suivant :
Les modules Ansible de Palo Alto Networks utilisent un dict
pour passer l'inventaire et les informations d'identification d'authentification. Ce dict
peut être défini une fois dans le playbook avec des valeurs pour les variables ip_address
, username
et password
passées via n'importe quelle méthode prise en charge.
vars:
credentials:
ip_address: '{{ ip_address }}'
username: '{{ username }}'
password: '{{ password }}'
Exemples de Playbooks
Voici des exemples de playbooks Ansible qui utilisent ce rôle pour appliquer des modèles de meilleures pratiques de sécurité à Panorama et à un pare-feu :
Panorama :
---
- name: Configurer Panorama avec des modèles de meilleures pratiques pour 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
Pare-feu :
---
- name: Configurer le pare-feu avec des modèles de meilleures pratiques pour 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
Licence
Apache 2.0
Informations sur l'auteur
Rôle créé par Robert Hagen (@stealthllama).
Applies security best practice templates to Palo Alto Networks devices
ansible-galaxy install paloaltonetworks.spatula