2

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?

Antwort

1

Ich sehe Null Probleme dabei.

Während es möglich ist, "cap add" zu verwenden und Sicherheitslücken zu verursachen, ist die Verwendung von Port 80 kein Problem. Es ist nur ein TCP/IP-Port, an dem Ihre Software horcht, und aus Sicherheitsgründen unterscheidet sie sich nicht von anderen zufälligen Portnummern.

0

Für den Moment würde ich empfehlen, nur an andere Ports zu binden. Man leitet sie immer an einen anderen Port weiter, wenn der Container erstellt wird. Sich mit der Sicherheit herumzuschlagen und unnötige Privilegien im Container zu hinterlassen, scheint zu viel Mühe zu bereiten, nur intern an einen bestimmten Port zu binden.

+0

Auf welcher Grundlage empfehlen Sie dies? Ist da ein Angriffsszenario eröffnet? – aef

Verwandte Themen