--- # Les ports 80/443 sont publiés par Docker (docker-compose du conteneur waf), donc # UFW seul ne suffit pas : Docker insère ses propres règles NAT/FORWARD directement # dans iptables et les contourne. On filtre donc dans la chaîne DOCKER-USER, seul # point garanti d'être évalué avant les règles de Docker. # # Résultat : seul le load-balancer (IP VPN) peut atteindre 80/443 sur ces hôtes, # tout le reste d'internet est bloqué. SSH et le reste du trafic ne sont pas touchés. - name: Restreindre l'accès HTTP/HTTPS des serveurs applicatifs au load-balancer hosts: prod:replica-prod become: true gather_facts: false vars: lb_vpn_ip: "{{ hostvars['load-balancer']['vpn_ip'] }}" tasks: - name: Installer iptables-persistent ansible.builtin.apt: name: iptables-persistent state: present update_cache: yes - name: Bloquer les connexions 80/443 non issues du load-balancer ansible.builtin.iptables: chain: DOCKER-USER protocol: tcp match: multiport destination_ports: "80,443" jump: DROP action: insert comment: "app-firewall: bloque 80/443 hors load-balancer" - name: Autoriser les connexions 80/443 depuis le load-balancer (VPN) ansible.builtin.iptables: chain: DOCKER-USER protocol: tcp source: "{{ lb_vpn_ip }}/32" match: multiport destination_ports: "80,443" jump: RETURN action: insert comment: "app-firewall: autorise 80/443 depuis le load-balancer" - name: Sauvegarder les règles iptables (persistance au reboot) ansible.builtin.command: netfilter-persistent save changed_when: false