Um die Verwaltung von Service-Ports zwischen Docker-Containern zu vereinfachen, möchte ich zulassen, dass die enthaltenen HTTP-Services den HTTP-TCP-Port 80 der IP-Adresse des jeweiligen Containers abhören.Nebenwirkungen, die es einem Container erlauben, auf Port 80 zu hören
Das Abhören von Portnummern unter 1025 ist standardmäßig auf Benutzer mit speziellen Berechtigungen wie root
beschränkt. Der Grund dafür liegt meines Wissens darin, nichtprivilegierten Benutzern auf Mehrbenutzersystemen zu verbieten, als autoritativer HTTP-Dienst für die gesamte Maschine zu agieren.
In neueren Linux-Versionen ist es auch möglich, dies für bestimmte ausführbare Dateien zuzulassen, indem die Linux-Kernel-Fähigkeit CAP_NET_BIND_SERVICE
angewendet wird. Damit dies in Docker-Containern funktioniert, muss diese Funktion auch auf den Docker-Container selbst angewendet werden, entweder über das Flag --add-cap
auf dem Docker-Client oder den Abschnitt Docker-Compose cap_add
.
Theoretisch ist der Grund für diese Einschränkung der Portnummer in diesem Fall obsolet, da der Netzwerk-Namespacing des Linux-Kernels es den Prozessen innerhalb des Containers ermöglicht, nur an ihre eigenen IP-Adressen zu binden.
Meine Frage wäre jetzt, wenn es ernsthafte Vorbehalte dagegen gibt. Ist das oder könnte dies in irgendeiner Weise zu einem Sicherheitsproblem werden, das von mir nicht berücksichtigt wird? Oder gibt es andere Probleme, dies zu tun?
Auf welcher Grundlage empfehlen Sie dies? Ist da ein Angriffsszenario eröffnet? – aef