Aller au contenu

Pare-feu

Pare-feu iptables (IPv4 + IPv6) appliqué au boot par un service systemd. nftables n'est pas utilisé ; AppArmor complète la défense.

Mise en œuvre

Élément Chemin
Service /etc/systemd/system/firewall.service (actif, enabled, démarre après docker.service)
Script IPv4 /home/jonathan/scripts/systeme/firewall-v4.sh
Script IPv6 /home/jonathan/scripts/systeme/firewall-v6.sh

Politique

INPUT   : DROP    (fermé par défaut)
OUTPUT  : ACCEPT  (sortie libre)
FORWARD : NON modifié  ->  laissé à Docker (chaînes DOCKER / DOCKER-USER)

Règles INPUT (IPv4)

  1. lo (loopback) → ACCEPT
  2. connexions ESTABLISHED,RELATED (conntrack) → ACCEPT
  3. paquets INVALID → DROP
  4. ICMP echo-request (ping) → ACCEPT
  5. LAN 192.168.2.0/24 → ACCEPT (accès complet : Samba, SSH…)
  6. WAN → uniquement 22 (SSH), 80 (HTTP), 443 (HTTPS)

Règles INPUT (IPv6)

Identique, mais ICMPv6 doit rester ACCEPT (NDP, PMTUD) sous peine de casser l'IPv6. Docker IPv6 activé (daemon.json: ipv6=true) → chaînes Docker préservées.

Le firewall hôte ne filtre PAS les ports publiés par Docker

Les ports publiés par les conteneurs (ports: en 0.0.0.0:…) passent par les chaînes DOCKER / DOCKER-USER, pas par INPUT. Pour restreindre un port de conteneur exposé, il faut agir dans DOCKER-USER (ou ne pas publier sur 0.0.0.0). Beaucoup de services sont publiés en 127.0.0.1: ou seulement sur dockernet — voir chaque page de stack.

Ports ouverts (hôte)

  • 22 SSH · 80/443 HTTP(S) (NPM) · 139/445 Samba.
  • Mail (Mailu) : 25, 110, 143, 465, 587, 993, 995, 4190.
  • Nombreux ports de conteneurs publiés en 0.0.0.0 (Grafana 3000, HA 8123, dockmate 5005…) ou 127.0.0.1 — inventaire live : _auto/firewall.md et _auto/conteneurs.md.