FlatKey.firewalld
ansible-firewalld-role
Permet de configurer firewalld.
Options de configuration :
- zone par défaut
- interface d'une zone
- source d'une zone
- règles de service (avec suppression des règles non définies, si nécessaire)
- règles de port
- règles avancées
Exigences
Testé uniquement sur RHEL 7, CentOS 7 et Fedora 29.
Ansible 2.0 ou supérieur
Variables de rôle
Il n'est pas nécessaire d'utiliser tous ces blocs de variables, vous pouvez utiliser uniquement les options de configuration dont vous avez vraiment besoin.
La variable suivante est utilisée pour définir la zone par défaut de firewalld :
default_zone: (facultatif, par défaut : public)
Les variables suivantes sont utilisées pour définir les interfaces assignées aux zones :
firewalld_zone_interfaces:
- name: (obligatoire, par exemple public)
interfaces: (obligatoire, liste d'interfaces, une ou plusieurs possibles)
Exemple :
firewalld_zone_interfaces:
- name: trusted
interfaces:
- eth1
- eth2
- name: public
interfaces:
- eth0
Les variables suivantes sont utilisées pour définir la source d'une zone :
firewalld_zone_source:
public:
zone: (obligatoire, nom de la zone)
source: (obligatoire, tableau de sources par exemple [ 192.168.1.1/24, 10.16.16.23 ])
state: (facultatif, uniquement les valeurs : enabled|disabled, par défaut : enabled)
permanent: (facultatif, uniquement les valeurs : true|false, par défaut : true)
immediate: (facultatif, uniquement les valeurs : true|false, par défaut : true)
Les variables suivantes sont utilisées pour définir une règle de service :
firewalld_service_rules:
name:
service: (facultatif, par défaut : utiliser le nom si le service n'est pas défini)
state: (facultatif, uniquement les valeurs : enabled|disabled, par défaut : enabled)
zone: (facultatif, par défaut : public)
permanent: (facultatif, uniquement les valeurs : true|false, par défaut : true)
immediate: (facultatif, uniquement les valeurs : true|false, par défaut : true)
Exemples :
firewalld_service_rules:
ssh:
state: enabled
zone: public
permanent: true
immediate: true
ou
firewalld_service_rules:
ssh_trusted:
service: ssh
state: enabled
zone: trusted
ssh_public:
service: ssh
state: enabled
zone: public
Les variables suivantes sont utilisées pour purger les règles de service et de port actives non définies :
firewalld_purge_services: (facultatif, uniquement les valeurs : true|false, par défaut : false)
firewalld_purge_ports: (facultatif, uniquement les valeurs : true|false, par défaut : false)
Les variables suivantes sont utilisées pour définir une règle de port :
firewalld_port_rules:
name:
port: (obligatoire, port ou plage de ports)
protocol: (facultatif, uniquement les valeurs : tcp|udp, par défaut : tcp)
state: (facultatif, uniquement les valeurs : enabled|disabled, par défaut : enabled)
zone: (facultatif, par défaut : public)
permanent: (facultatif, uniquement les valeurs : true|false, par défaut : true)
immediate: (facultatif, uniquement les valeurs : true|false, par défaut : true)
Les variables suivantes sont utilisées pour définir une règle avancée :
firewalld_rich_rules:
name:
rule: (obligatoire, une règle complète en langage rich de firewalld)
state: (facultatif, uniquement les valeurs : enabled|disabled, par défaut : enabled)
zone: (facultatif, par défaut : public)
permanent: (facultatif, uniquement les valeurs : true|false, par défaut : true)
immediate: (facultatif, uniquement les valeurs : true|false, par défaut : true)
La variable suivante est utilisée pour définir les ipsets. Seul le type hash:ip est supporté. REMARQUE : les ipsets créés en dehors de cette variable ne seront pas gérés ni supprimés.
firewalld_ipsets:
- name: example1
entries:
- 192.168.0.1
- 192.168.0.5
- name: example2
entries:
- 192.168.0.7
- 192.168.0.11
Gestionnaires
Voici les gestionnaires définis dans ce rôle :
- redémarrer firewalld
Exemple de Playbook
- hosts: serveur
become: yes
become_user: root
become_method: su
roles:
- ansible-firewalld-role
vars:
default_zone: public
firewalld_zone_interfaces:
- name: trusted
interfaces:
- eth1
- eth2
- name: public
interfaces:
- eth0
firewalld_zone_source:
trusted:
zone: trusted
source:
- "192.168.1.0/24"
- "10.0.16.12"
state: enabled
permanent: true
immediate: true
firewalld_service_rules:
ssh:
state: enabled
zone: public
permanent: true
immediate: true
firewalld_port_rules:
smtp:
port: 25
protocol: tcp
state: enabled
zone: public
permanent: true
immediate: true
firewalld_rich_rules:
ftp_audit:
rule: 'rule service name="ftp" audit limit value="1/m" accept'
state: enabled
zone: public
permanent: true
immediate: true
firewalld_ipsets:
- name: example1
entries:
- 192.168.0.1
- 192.168.0.5
- name: example2
entries:
- 192.168.0.7
- 192.168.0.11
firewalld_purge_services: true
firewalld_purge_ports: true
Licence
MIT
firewalld configuration through variables
ansible-galaxy install FlatKey.firewalld