geerlingguy.firewall

Rôle Ansible : Pare-feu (iptables)

CI

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.

À propos du projet

Simple iptables firewall for most Unix-like systems.

Installer
ansible-galaxy install geerlingguy.firewall
Licence
mit
Téléchargements
1.2M
Propriétaire
Father, author, developer, maker. Sometimes called "an inflammatory enigma". #stl #drupal #ansible #k8s #raspberrypi #crohns