J'ai un serveur Ubuntu avec Docker pour servir MySQL et SSH/SFTP et j'ai besoin de tous les ports sauf 3306 et 22 doit être protégé par un pare-feu, une exigence plutôt standard et triviale, non ?
Maintenant, j'ai réussi à trouver un une sorte de solution mais il ne fonctionne pas complètement pour moi comme après l'avoir appliqué, non plus :
- Je ne peux accéder à aucun des services mentionnés (par défaut)
- Je ne peux pas accéder à l'internet à partir des conteneurs (si je mets
iptables: false
dans l'interface de Docker daemon.json fichier de configuration)
J'ai essayé un certain nombre d'autres résultats de recherche, mais ils sont pour la plupart si complexes que je ne comprends pas ce qu'ils font ou qu'ils sont lourdement scriptés, ce qui fait de moi, un profane d'iptables, une tâche impossible pour en tirer quelque chose.
La solution proposée semble plutôt simple et facile à comprendre, mais la complexité de la mise en réseau des Dockers la rend beaucoup plus difficile à déboguer.
Quelqu'un peut-il partager ses règles iptables fonctionnelles pour les hôtes Docker ou au moins me guider dans la bonne direction ?
J'utilise docker-compose pour lancer les services et voici mon yaml :
version: '3.7'
services:
mysql:
container_name: 'mysql'
image: mysql:8.0.13
command: --default-authentication-plugin=mysql_native_password
user: 1000:1000
ports:
- "3306:3306"
volumes:
- ./data:/var/lib/mysql
- ./config/custom.cnf:/etc/mysql/conf.d/custom.cnf
networks:
- database
restart: always
networks:
database:
driver: bridge
Edit : Ce que j'ai trouvé, c'est que permettre à Docker de gérer les règles d'iptables est recommandé et moins exigeant, du moins à long terme, et qu'il n'y a pas de problème à laisser Docker ouvrir les ports nécessaires, même si je ne l'ai pas fait de la manière que je préfère, mais cela reste valable. Ce que je veux à ce stade, c'est savoir s'il est possible d'utiliser iptables pour bloquer les ports ouverts par Docker et comment (via mangle prerouting peut-être ?). Avez-vous des suggestions ? Merci beaucoup !
0 votes
Redémarrez-vous le moteur docker après avoir modifié iptables ?
0 votes
@BMitch Absolument. Le truc, c'est que les règles de l'article ci-dessus sont faites pour que les charges de travail Docker n'aient pas besoin d'être redémarrées après avoir apporté des modifications au pare-feu. Vous avez des règles à partager ?
0 votes
Je configure généralement un hôte avec quelques règles restrictives par défaut, puis je lance Docker. La chose la plus importante pour moi est d'ajouter des ports pour le mode essaim. Pour moi, tout fonctionne à partir de là.
0 votes
Assurez-vous qu'il n'y a rien d'autre qui s'immisce dans les entrées iptables, comme firewalld.
0 votes
Non, j'utilise Ubuntu et iptables sans aucun front-end.