#!/bin/sh # {{ ansible_managed }} # N'autorise que le WAF (et les sources listées) à joindre les ports publiés # des applis. Les règles vont dans DOCKER-USER, consultée par Docker avant # ses propres règles ; --ctorigdstport filtre sur le port publié (avant DNAT). set -eu IFACE="{{ ansible_default_ipv4.interface }}" PORTS="{{ apps_ports.values() | min }}:{{ apps_ports.values() | max }}" iptables -N BWPOC 2>/dev/null || iptables -F BWPOC {% for src in [waf_ip] + apps_direct_access_sources %} iptables -A BWPOC -s {{ src }} -j RETURN {% endfor %} iptables -A BWPOC -j DROP RULE="-i $IFACE -p tcp -m conntrack --ctstate NEW --ctorigdstport $PORTS -j BWPOC" # shellcheck disable=SC2086 iptables -C DOCKER-USER $RULE 2>/dev/null || iptables -I DOCKER-USER $RULE