Pare-feu
Mithrandir peut optionnellement configurer UFW avec ufw-docker pour contrôler l'accès réseau à vos services.
Pourquoi ufw-docker ?
Docker manipule directement iptables, ce qui signifie que les règles UFW standard ne s'appliquent pas aux ports publiés par Docker. L'utilitaire ufw-docker résout ce problème en gérant les règles dans la chaîne iptables DOCKER-USER, que Docker respecte.
DANGER
Assurez-vous toujours que l'accès SSH fonctionne avant d'activer le pare-feu sur un serveur distant. L'installateur autorise toujours le port 22, mais vérifiez que vous pouvez vous connecter avant de fermer votre session actuelle.
Installation
mithrandir install firewallCela va :
- Installer UFW (s'il n'est pas déjà installé)
- Installer l'utilitaire ufw-docker
- Activer UFW avec une politique par défaut de refus des connexions entrantes
- Toujours autoriser SSH (port 22) pour éviter les verrouillages
- Ajouter des règles de pare-feu pour toutes les applications actuellement installées
Comment ça fonctionne
Une fois le pare-feu activé (ENABLE_FIREWALL=true dans .env), mithrandir gère automatiquement les règles UFW :
mithrandir install <app>— ajoute les règles UFW pour les ports de l'applicationmithrandir uninstall <app>— supprime les règles UFW pour les ports de l'applicationmithrandir install <stack>— ajoute les règles pour toutes les applications de la stack
Applications en réseau hôte vs réseau bridge
La plupart des conteneurs Docker utilisent le réseau bridge, où ils communiquent via le réseau virtuel de Docker et publient des ports spécifiques. Certaines applications utilisent le réseau hôte, où le conteneur partage directement la pile réseau de l'hôte. Cette distinction est importante pour les règles de pare-feu :
- Applications en réseau bridge (la plupart des applications) : Les règles sont gérées via
ufw-docker allow <container> <port>, qui fonctionne avec la chaîne iptablesDOCKER-USER. - Applications en réseau hôte (Home Assistant, DuckDNS) : Les règles sont gérées via le standard
ufw allow <port>, car Docker ne gère pas leurs entrées iptables.
Assistant de configuration
L'assistant de configuration inclut une étape pare-feu après l'installation des applications. Vous pouvez choisir de l'activer ou de l'ignorer. En mode --yes, le pare-feu est installé automatiquement.
Vérifier l'état
Affichez les règles de pare-feu actuelles :
sudo ufw statusLa commande mithrandir doctor vérifie également l'état du pare-feu et signale tout problème.
Configuration
| Variable | Par défaut | Description |
|---|---|---|
ENABLE_FIREWALL | (non défini) | Définir à true pour activer la gestion automatique des règles UFW |
WARNING
Le pare-feu nécessite l'utilitaire tiers ufw-docker, qui est téléchargé depuis GitHub. Il modifie /etc/ufw/after.rules pour s'intégrer aux chaînes iptables de Docker. Si vous avez des règles UFW personnalisées, vérifiez les modifications après l'installation.
Récupération d'urgence
Si vous perdez l'accès SSH après avoir activé le pare-feu, vous aurez besoin d'un accès physique ou d'un accès console hors bande (ex. IPMI, console du fournisseur cloud) à votre serveur. Une fois connecté, désactivez le pare-feu :
sudo ufw disablePuis examinez vos règles avec sudo ufw status avant de le réactiver.