Öffnen Sie iptables im Docker-Compose-Netzwerk und auf einem externen Server

Öffnen Sie iptables im Docker-Compose-Netzwerk und auf einem externen Server

Ich versuche, mit Docker Compose ein System bereitzustellen, das einen MySQL-Server enthält. Der Server wird von den Docker-Containern im selben Netzwerk gemeinsam genutzt.

Ich muss von einem bestimmten externen Server in unserem Netzwerk auf die MySQL-Datenbank zugreifen, daher habe ich den MySQL-Port (3306) in der Docker-Compose-Datei veröffentlicht.

Aus Sicherheitsgründen möchte ich jedoch jede andere IP blockieren, die versucht, auf diesen Port zuzugreifen.

Ich habe viele iptables-Regeln ausprobiert und alle haben entweder Container innerhalb der Docker-Compose blockiert oder anderen Servern den Zugriff auf den Port gestattet.

PS: Ich werde alle Benutzerberechtigungen innerhalb des MySQL-Servers ändern, aber das Blockieren des Ports ist das Erste, was wir tun möchten.

Antwort1

Sie können die iptables-Einträge in der Tabelle DOCKER-USER konfigurieren. Dies geschieht außerhalb von Docker. Wenn Sie sich beispielsweise über Anfragen an die eth0-Schnittstelle an Port 3306 von einem anderen Netzwerk als 10.0.0.0/24 Sorgen machen:

iptables -I DOCKER-USER -i eth0 ! -s 10.0.0.0/24 -p tcp \
  -m conntrack --ctorigdstport 3306 -j DROP

Beachten Sie, dass conntrackzum Umgang mit den NAT-Regeln und der Portzuordnung der ursprüngliche Zielport des Conn-Tracks und keine normale TCP-Portregel erforderlich sind.

verwandte Informationen