Files
firewall/README.md
T
Ludovic Cartier 6730fdfd08 handle fail2ban
2026-05-27 19:27:06 +02:00

2.1 KiB

firewall

Role Ansible pour déployer un pare-feu iptables/ip6tables via un script shell et un service systemd.

Prérequis

  • Distribution Debian/Ubuntu (gestion des paquets via apt)
  • Privilèges root (become: true)
  • Fact gathering activé (utilisé pour l'interface réseau par défaut)

Comportement

Variables

Variables par défaut dans defaults/main.yml.

  • firewall_public_interface: interface publique pour les logs optionnels. Si null, utilise ansible_default_ipv4.interface.
  • firewall_docker_safe: préserve les chaînes Docker lors d'un restart du firewall.
  • firewall_admin_sources: liste des CIDR autorisés sur les services admin.
  • firewall_admin_rules_ipv4: liste des règles IPv4 limitées aux sources admin.
  • firewall_public_tcp_ports_ipv4: ports TCP IPv4 ouverts publiquement.
  • firewall_public_tcp_ports_ipv6: ports TCP IPv6 ouverts publiquement.

Exemple d'inventaire

firewall_admin_sources:
  - cidr: "203.0.113.10/32"
    comment: "bastion"

firewall_docker_safe: true

firewall_admin_rules_ipv4:
  - proto: "udp"
    dport: 51820
    comment: "wireguard"
  - proto: "tcp"
    dport: 22
    comment: "ssh admin"

firewall_public_tcp_ports_ipv4:
  - 22
  - 80
  - 443

firewall_public_tcp_ports_ipv6:
  - 80
  - 443

Exemple de playbook

- name: Configure firewall
  hosts: all
  become: true
  roles:
    - role: firewall

Notes

  • Le script applique une politique restrictive (DROP sur INPUT/OUTPUT/FORWARD) puis ouvre explicitement les flux requis.
  • Toute erreur de syntaxe shell du template est validée avant déploiement via /bin/sh -n.
  • En mode docker-safe, les chaînes Docker existantes sont préservées pour éviter de casser la connectivité des conteneurs au restart.
  • Après un start/reload du firewall, fail2ban est relancé s'il est présent afin de réappliquer les chaînes f2b.