geerlingguy.firewall
Rôle Ansible : Pare-feu (iptables)
Installe un pare-feu basé sur iptables pour Linux. Prend en charge à la fois IPv4 (iptables
) et IPv6 (ip6tables
).
Ce pare-feu privilégie la simplicité à la complexité et ouvre seulement quelques ports spécifiques pour le trafic entrant (configurables via des variables Ansible). Si vous avez des connaissances de base sur iptables
et/ou sur les pare-feu en général, ce rôle devrait être un bon point de départ pour un pare-feu système sécurisé.
Après l'exécution du rôle, un service d'init firewall
sera disponible sur le serveur. Vous pouvez utiliser service firewall [start|stop|restart|status]
pour gérer le pare-feu.
Exigences
Aucune.
Variables du Rôle
Les variables disponibles sont listées ci-dessous, avec leurs valeurs par défaut (voir defaults/main.yml
) :
firewall_state: started
firewall_enabled_at_boot: true
Contrôle l'état du service de pare-feu ; s'il doit être actif (firewall_state
) et/ou activé au démarrage du système (firewall_enabled_at_boot
).
firewall_flush_rules_and_chains: true
Indique s'il faut vider toutes les règles et chaînes chaque fois que le pare-feu est redémarré. Mettez ceci sur false
s'il y a d'autres processus gérant iptables (par exemple, Docker).
firewall_template: firewall.bash.j2
Le modèle à utiliser lors de la génération des règles du pare-feu.
firewall_allowed_tcp_ports:
- "22"
- "80"
...
firewall_allowed_udp_ports: []
Une liste de ports TCP ou UDP (respectivement) à ouvrir pour le trafic entrant.
firewall_forwarded_tcp_ports:
- { src: "22", dest: "2222" }
- { src: "80", dest: "8080" }
firewall_forwarded_udp_ports: []
Transférer le port src
vers le port dest
, soit TCP ou UDP (respectivement).
firewall_additional_rules: []
firewall_ip6_additional_rules: []
Toutes règles supplémentaires (personnalisées) à ajouter au pare-feu (dans le même format que vous les ajouteriez via la ligne de commande, par exemple iptables [règle]
/ip6tables [règle]
). Voici quelques exemples d'utilisation :
# Autoriser uniquement l'IP 167.89.89.18 à accéder au port 4949 (Munin).
firewall_additional_rules:
- "iptables -A INPUT -p tcp --dport 4949 -s 167.89.89.18 -j ACCEPT"
# Autoriser uniquement l'IP 214.192.48.21 à accéder au port 3306 (MySQL).
firewall_additional_rules:
- "iptables -A INPUT -p tcp --dport 3306 -s 214.192.48.21 -j ACCEPT"
Voir Iptables Essentials : Règles et Commandes Communes de Pare-feu pour plus d'exemples.
firewall_log_dropped_packets: true
Indique s'il faut enregistrer les paquets rejetés dans syslog (les messages seront précédés de "Rejeté par le pare-feu : ").
firewall_disable_firewalld: false
firewall_disable_ufw: false
Mettez sur true
pour désactiver firewalld (installé par défaut sur RHEL/CentOS) ou ufw (installé par défaut sur Ubuntu).
firewall_enable_ipv6: true
Mettez sur false
pour désactiver la configuration d'ip6tables (par exemple, si votre GRUB_CMDLINE_LINUX
contient ipv6.disable=1
).
Dépendances
Aucune.
Exemple de Playbook
- hosts: server
vars_files:
- vars/main.yml
roles:
- { role: geerlingguy.firewall }
Dans vars/main.yml
:
firewall_allowed_tcp_ports:
- "22"
- "25"
- "80"
Licence
MIT / BSD
Informations sur l'Auteur
Ce rôle a été créé en 2014 par Jeff Geerling, auteur de Ansible for DevOps.
Simple iptables firewall for most Unix-like systems.
ansible-galaxy install geerlingguy.firewall