Ich habe in den letzten zwei Artikeln gezeigt, wie ich die Firewall ufw einrichte und Docker installiere. Docker kann jedoch standardmäßig die Firewall-Regeln manipulieren, um den Datenverkehr zu den Docker-Containern zu ermöglichen. Dies kann jedoch ein Sicherheitsrisiko darstellen, da es die Firewall-Regeln des Systems ändert, ohne dass ich es speziell erlaube.
Die Firewall Regeln werden in Linux-Systemen mit iptables verwaltet. Es ermöglicht Benutzern, den Datenverkehr zu kontrollieren, der in und aus einem System fließt, und so die Sicherheit des Systems zu verbessern. Iptables ist ein Teil des Linux-Kernels und bietet eine flexible und anpassbare Methode zur Konfiguration von Firewall-Regeln. Es kann verwendet werden, um Regeln basierend auf IP-Adressen, Ports, Protokollen und anderen Kriterien zu definieren. Das Firewall-Tool ufw und Docker manipulieren diese Tabellen.
Für Docker möchte ich die Manipulation der Firewall-Regeln verbieten. Dazu erstelle bzw. modifiziere ich die Datei /etc/docker/daemon.json.
sudo nano /etc/docker/daemon.json
Der Datei füge ich folgendes hinzu:
{ "iptables": false }
Anschließend muss ich noch den Docker-Service neu starten.
sudo service docker restart
Jetzt kann Docker die selbstständige Freigabe von Ports nicht mehr vornehmen.
!!! WARNUNG – Funktion nicht beständig !!!
Kurze Zeit hat das bei mir funktioniert, aber ein Tag später hat Docker die Ports wieder freigegeben. Also konnte ich weiterhin die Ports der Docker-Container erreichen. Ich habe einen anderen Workaround gesucht. Bei dem Port-Mapping bei Docker-Containern gebe ich die lokale IP mit an.
-p "127.0.0.1:81:81"
Unter Portainer sieht das beispielsweise bei mir so aus:
Das ist für mich eine verlässliche Alternative.