Anforderungen: Ein privates Home-Album-System wurde mit Docker-Containern gebaut, das auf Zugriff und Anzeigen im Heim-LAN beschränkt ist, da das Docker-Image von einem Drittanbieter entwickelt wurde und ich nicht weiß, ob es eine Sicherheitssituation darstellen wirdDatenschutzverletzungen erzeugenUm dieses Problem besser zu lösen, möchten wir eine Datenschutzgarantie hinzufügen, indem wir Docker-Containern den Zugriff auf das Internet (externes Netzwerk) verbieten.
Dieser Artikel verwendet ein CentOS7-System, Docker-Version: 20.10.20, und verwendet nginx-Bilder zur Bereitstellung von Tests.
Internetzugang (Extranet) ist standardmäßig erlaubt
Erstellen Sie einen neuen nginx-Container, der Webdienste bereitstellt, auf die von18080 Portzugang: Der Container kann standardmäßig auf das Internet (externes Netzwerk) zugreifen, der Befehl lautet wie folgt:
Betreten Sie den Container und fordern Sie die Ressourcen dieser Seite über den Curl-Befehl an, der wie in der untenstehenden Abbildung gezeigt werden kann, wie in der folgenden Abbildung gezeigt:
Deaktivieren von Docker-Containern am Internetzugang (Extranet)
Zuerst müssen wir ein benutzerdefiniertes Netzwerk über Docker erstellen und eine virtuelle Netzwerkkarte mit folgendem Befehl erstellen:
Setzen Sie eine Regel auf der virtuellen NIC über iptables, um den Zugang zum Internet mit folgendem Befehl zu verbieten:
Unabhängig davon, ob der iptables-Dienst verfügbar ist oder nicht, unabhängig davon, ob die Firewall aktiviert ist oder nicht,IPTables-Regeln, die per Befehl hinzugefügt wurden, treten sofort in Kraft!!!
Hinweis: Dieser Plan ist angemessenWenn verschiedene Container sich mit demselben Netzwerk verbinden, können die Container nicht miteinander kommunizieren!!!!
Schauen Sie sich die DOCKER-USER-Regel an, wie unten gezeigt:
Erstelle erneut einen neuen nginx-Container, der Container stellt den Webservice bereit, und der18081 Der Port stellt Dienste für die Außenwelt bereit, und dem Container ist der Zugang zum Internet (öffentliches Netzwerk) verboten; der Befehl lautet wie folgt:
Wir haben unser Ziel erreicht, aber,Nach dem Neustart des Servers verschwinden die in iptables erstellten RegelnWie können wir unsere benutzerdefinierten Regeln automatisch laden, nachdem der Server neu gestartet wurde?
Der Befehl iptables-save wird verwendet, um die iptables-Tabelle im Linux-Kernel an einen Standardausgabeanbieter zu exportieren, wobei üblicherweise die I/O-Umleitungsfunktion in der Shell verwendet wird, um die Ausgabe in eine bestimmte Datei zu speichern. Speichere die bestehende iptables-Regel
Füge die Restore iptables-Regel zum Boot-Boot hinzu, die Boot-Boot-Datei ist /etc/rc.d/rc.local, bearbeite die Datei und füge am Ende folgenden Befehl hinzu:
Fügen Sie schließlich die Ausführungsberechtigung mit folgendem Befehl hinzu:
Nachdem die Einstellungen abgeschlossen sind, treten die iptables-Regeln auch dann in Kraft, wenn der Server neu gestartet wird.
Alle Container in Docker dürfen nicht auf das Internet zugreifen (Extranet),Nicht getestet, lautet der Befehl wie folgt:
(Ende)
|