Sécurité
Proxmox en routeur sécurisé et service Docker
L'hôte Proxmox sert de passerelle filtrante entre le réseau de l'école et un réseau privé de conteneurs ; une application Docker y est publiée par redirection de port.
Problème
Les conteneurs vivent sur un réseau privé et ne doivent pas être exposés directement. L'hôte Proxmox doit faire office de passerelle, filtrer ce qui entre et ne publier que les services voulus.
Architecture
Réseau école --- vmbr0 (zone publique)
|
Proxmox : filtrage nftables, NAT, routage
|
vmbr1 (zone privée) 192.168.1.0/24
+-- CT100, CT101 … clones du modèle Debian
+-- CT141 Docker + application webMise en œuvre
Pare-feu nftables
Politique par défaut : tout est refusé en entrée, sauf ce qui est explicitement autorisé.
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
iif "lo" accept
ct state established,related accept
iifname "vmbr1" accept # LAN des conteneurs
iifname "vmbr0" tcp dport { 22, 80, 443, 8006 } accept
}
}
table ip nat {
chain postrouting {
type nat hook postrouting priority 100;
oif "vmbr0" masquerade # sortie Internet des CT
}
}
Le script est lancé par un service systemd pour que les règles survivent au redémarrage. Le noyau est durci avec sysctl : anti-usurpation (rp_filter), pas de proxy ARP, ping ignoré.
Service Docker dans un LXC
- Création d'un modèle Debian, puis clonage complet pour chaque conteneur.
- Activation du nesting sur le LXC pour que Docker puisse y fonctionner.
- Point de montage dédié pour les données : supprimer le conteneur ne supprime pas les données.
- Redirection d'un port de l'hôte vers le conteneur (DNAT) pour publier l'application.
Problèmes résolus
| Symptôme | Cause | Solution |
|---|---|---|
| Images Docker impossibles à télécharger (timeout TLS) | MTU trop grand derrière le NAT | MTU réduit à 1400 |
| Disque racine à 95 % | Images Docker volumineuses | Surveillance avec df -h, données sur un volume séparé |
| Connexion refusée alors que le service tourne | Règles iptables de Docker en conflit avec le routage de l'hôte | Isolation du problème couche par couche |
Limites et pistes d'amélioration
- Dans le jeu de règles ci-dessus, SSH (22) et l'interface d'administration Proxmox (8006) sont ouverts à toute la zone publique. Il faudrait les restreindre à des adresses sources précises.
- Docker et nftables manipulent tous deux le filtrage de paquets : les règles de Docker interfèrent avec celles de l'hôte, ce qui a causé un des blocages ci-dessus.
Compétences du référentiel mobilisées
- Sécuriser les équipements et les usages
- Installer, tester et déployer une solution
- Exploiter des services réseau