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)¶
lo(loopback) → ACCEPT- connexions
ESTABLISHED,RELATED(conntrack) → ACCEPT - paquets
INVALID→ DROP - ICMP echo-request (ping) → ACCEPT
- LAN
192.168.2.0/24→ ACCEPT (accès complet : Samba, SSH…) - 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…) ou127.0.0.1— inventaire live : _auto/firewall.md et _auto/conteneurs.md.