IPTABLES: Blockieren des Ports nur für externe Benutzer
471
Ed de Almeida
Ich habe einen Server mit zwei Docker-Containern. Eines davon ist das Frontend einer kleinen Anwendung, die mit bedient wird http-server. Diese Anwendung verwendete die Javascript-Abruf-API, um Daten aus einer wirklich einfachen Datenbank abzurufen, die auf dem Json-Server-Modul von Node.js basiert, das in dem anderen Container ausgeführt wird.
Es kommt vor, json-serverdass Port 3000 für externe Benutzer verfügbar ist. Wenn also jemand auf einen Browser verweist http://example.com:3000, sind meine Daten ohne Filterung und Präsentation des Frontends verfügbar. Das will ich nicht.
Ich möchte den Port 3000 für die Außenwelt blockieren, während mein anderer Docker-Container wie üblich Daten abrufen kann. Ich denke, dass dies auf einer IP-Basis gemacht werden kann, aber ich weiß nicht, wie es geht.
Dies ist meine aktuelle Iptables-Konfiguration, die standardmäßig von Docker selbst erstellt wurde.
In der obigen Konfiguration ist IP 172.17.0.2 meine Frontend-Anwendung, während 172.17.0.3 die IP meines Datenbankcontainers ist.
Der Frontend-Container wird mit gestartet
docker run -p 80:8080 --name=frontend -d mtr/frontend
und der zweite mit
docker run -p 3000:3000 --name=database -d mtr/database
Ich dachte auch über die Möglichkeit nach, Docker zu verwenden, um diesen Zugriff einzuschränken, aber nach langem Suchen konnte ich nichts finden.
Irgendwelche Vorschläge, wie ich das machen kann?
1 Antwort auf die Frage
1
bcs78
Da Sie "ACCEPT" "TCP" Verbindungen von "irgendwo" zum Host "172.17.0.3" auf "TCP" Port "dpt: 3000" und ich denke, gibt es auch eine DNAT-Regel, die jede eingehende Verbindungen an "you-public" weiterleitet -ip-address: 3000 "bis" 172.17.0.3:3000 "(siehe iptables -t nat -L --line-numbers), das ist normal.