So verwenden Sie `iptables` innerhalb eines Discourse Docker-Containers

Wie kann ich iptables im Discourse-Docker-Container konfigurieren?

Ich benötige speziell die Firewall-Steuerung innerhalb des Docker-Containers, da ich bedingte Regeln basierend auf der Benutzer-ID hinzufügen möchte.

Anfangs habe ich jeglichen Internetzugriff für den Docker-Container komplett blockiert (dies ist möglich, wenn Sie web.socketed.template.yml verwenden, da Nginx über Unix-Domain-Sockets anstelle des Netzwerks kommuniziert) mittels dockerd ... --iptables=false.

[root@osestaging1 templates]# grep ExecStart /usr/lib/systemd/system/docker.service
#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --iptables=false
[root@osestaging1 templates]# 

…aber mir ist aufgefallen, dass der Docker-Container zumindest Internetzugriff haben sollte, damit er sein Basis-Betriebssystem (derzeit Debian 10) mit kritischen Sicherheitsupdates über unattended-upgrades aktualisieren kann. Daher möchte ich lieber nur root und apt Internetzugriff gewähren und alles andere über iptables blockieren, das innerhalb des Discourse-Docker-Containers ausgeführt wird.

Ich habe das eingerichtet. Der komplizierteste Teil war, dass man selbst als root bei dem Versuch, iptables-Regeln im Standard-Discourse-Docker-Container anzuzeigen oder zu bearbeiten, immer noch Fehlermeldungen wie „permission denied

:warning: Wer auch immer Sie sind, was auch immer Sie tun, bitte versuchen Sie dies nicht zu Hause, in der Schule oder an einem anderen Ort!

Ich bin mir ziemlich sicher, dass Sie Ihre Discourse-Instanz beeinträchtigen, indem Sie den Zugriff auf das Internet für die Prozesse unicorn und sidekiq (im Besitz des Benutzers discourse) untersagen. Aber ja, ich bin mir sicher, dass Sie wissen, was Sie tun.

Welches Problem wird damit gelöst?