Das Docker-Handbuch ( http://docs.docker.com/installation/ubuntulinux/#docker-and-ufw ) besagt, dass es nicht erforderlich ist, UFWs DEFAULT_FORWARD_POLICY auf "ACCEPT" zu setzen, damit Docker-Container sich gegenseitig erreichen können.
Was bedeutet dies für die Sicherheit auf einem Server mit öffentlich zugänglichen Netzwerkschnittstellen?
Was ist zu tun, um einen solchen Docker-Host zu sichern?
Antworten:
Sie scheinen diesen Teil des Problems zumindest in der neuesten Version 1.4.1 gelöst zu haben. Meine FORWARD-Richtlinie lautet, Pakete zu verwerfen, und die Kommunikation zwischen Containern funktioniert problemlos.
Dies sind die Standardregeln in der von Docker erstellten FORWARD-Kette:
Von unten nach oben:
Keine Probleme hier. (Es sei denn, Sie möchten ausgehende Filter)
Sie können die FORWARD + INPUT-Richtlinie problemlos auf DROP / REJECT setzen.
Jetzt möchten Sie möglicherweise einen Dienst im Internet bereitstellen. ZB ein einfacher Webserver:
OK, gehen Sie jetzt zu yourserver.com. Sie sehen die Standard-Nginx-Seite. Warum? Docker hat einige spezielle Regeln in iptables für Sie hinzugefügt.
Diese Regeln umgehen alle ufw-Regeln, wenn ein Container lauscht. ufw macht nichts in der nat-Tabelle und Docker legt seine Regeln an erster Stelle in der FORWARD-Kette fest. Es ist Ihnen also nicht möglich, eine IP-Adresse zu blockieren oder Ratenbegrenzungen jeglicher Art vorzunehmen.
Mögliche Lösungen:
--iptables=false
und erledigen Sie alles manuell. Sorgfältige Lösung, da bei jedem Neustart eines Containers eine neue IP-Adresse abgerufen wird (dies ist derzeit geplant).-p 127.0.0.1:30080:80
und erstellen Sie Ihre eigenen iptables-Regeln, um dorthin zu gelangen.service docker start
. Obwohl ein bisschen hacky es funktioniert ...quelle