Exigences : Un système d’album domestique privé a été construit avec des conteneurs Docker, qui est limité à l’accès et à la visualisation sur le réseau local domestique, car l’image Docker est développée par un développeur tiers, et je ne sais pas si ce sera une situation de sécuritéGénérer des violations de la vie privéePour mieux résoudre ce problème, nous souhaitons ajouter une garantie de confidentialité en interdisant aux conteneurs Docker d’accéder à Internet (réseau externe).
Cet article utilise un système CentOS7, version Docker : 20.10.20, et utilise des images nginx pour fournir des tests.
L’accès à Internet (extranet) est autorisé par défaut
Créer un nouveau conteneur nginx qui fournit des services web accessibles par18080 Accès au port, le conteneur peut accéder à Internet (réseau externe) par défaut, la commande est la suivante :
Entrez dans le conteneur et demandez les ressources de ce site via la commande curl, qui peut être obtenue normalement, comme montré dans la figure ci-dessous :
Désactiver l’accès à Internet des conteneurs Docker (extranet)
Tout d’abord, nous devons créer un réseau personnalisé via docker et créer une carte réseau virtuelle, avec la commande suivante :
Fixez une règle sur la carte réseau virtuelle via iptables pour interdire l’accès à Internet avec la commande suivante :
Que le service iptables soit disponible ou non, que le pare-feu soit activé ou non,Les règles iptables ajoutées par commande prennent effet immédiatement!!!
Note : Ce plan est appropriéSi différents conteneurs rejoignent le même réseau, ils ne pourront pas communiquer entre eux !!!!
Regardez la règle DOCKER-USER comme illustrée ci-dessous :
Créez à nouveau un nouveau conteneur nginx, le conteneur fournit le service web, et le18081 Le port fournit des services au monde extérieur, et le conteneur n’a pas accès à Internet (réseau public), la commande est la suivante :
Nous avons atteint notre objectif, mais,Après avoir redémarré le serveur, les règles que nous avons créées dans iptables disparaissentComment pouvons-nous charger automatiquement nos règles personnalisées après le redémarrage du serveur ?
La commande iptables-save sert à exporter la table iptables dans le noyau Linux vers un fournisseur de sortie standard, généralement en utilisant la fonction de redirection d’E/S dans le shell pour enregistrer sa sortie dans un fichier spécifié. Sauvegarder la règle iptables existante
Ajoutez la règle de restauration iptables au démarrage, le fichier de démarrage est /etc/rc.d/rc.local, modifiez le fichier, et ajoutez la commande suivante à la fin :
Enfin, ajoutez la permission d’exécution avec la commande suivante :
Une fois les paramètres terminés, les règles iptables resteront en vigueur même si le serveur est redémarré.
Tous les conteneurs dans Docker sont interdits d’accès à Internet (extranet),Non testé, la commande est la suivante :
(Fin)
|