• Docker
  • Problème avec Docker et IPTABLE

Bonjour à tous,

Je suis sur un problème depuis quelques jours et je ne trouve pas la solution (même si je sens que ça vas être un truc bête que je loupe depuis le départ).

J'ai un serveur sur lequel sont hébergés plusieurs conteneur docker dans lesquels je redirige 6 ports chacun.
Je souhaite que ces ports ne soient accessibles que depuis certaines adresse IP exterieures et via le réseau local.

J'avais réussi à réaliser la manipulation sur un ancien serveur, mais depuis le passage vers le nouveau (même OS - Debian 10) plus moyen.

Je précise que si je "purge" mon iptable tout fonctionne.

Merci par avance si quelqu'un à une astuce 🙂

Ci-dessous le résultat de mon iptables -L

Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     all  --  ADRESSEIPEXTERIEURE1  anywhere
ACCEPT     all  --  ADRESSEIPEXTERIEURE2  anywhere
ACCEPT     all  --  ADRESSEIPEXTERIEURE3    anywhere
ACCEPT     all  --  ADRESSEIPEXTERIEURE4    anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere             ctstate ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ftp
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:32400
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:6288
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:imaps
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:submission
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:smtp
DROP       udp  --  anywhere             anywhere             udp dpt:1900
ACCEPT     icmp --  anywhere             anywhere

Chain FORWARD (policy DROP)
target     prot opt source               destination
DOCKER-USER  all  --  anywhere             anywhere
DOCKER-ISOLATION-STAGE-1  all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
DOCKER     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain DOCKER (1 references)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             172.17.0.5           tcp dpt:51413
ACCEPT     udp  --  anywhere             172.17.0.5           udp dpt:51413
ACCEPT     tcp  --  anywhere             172.17.0.5           tcp dpt:9117
ACCEPT     tcp  --  anywhere             172.17.0.5           tcp dpt:9091
ACCEPT     tcp  --  anywhere             172.17.0.5           tcp dpt:8989
ACCEPT     tcp  --  anywhere             172.17.0.5           tcp dpt:7878
ACCEPT     tcp  --  anywhere             172.17.0.8           tcp dpt:51413
ACCEPT     udp  --  anywhere             172.17.0.8           udp dpt:51413
ACCEPT     tcp  --  anywhere             172.17.0.8           tcp dpt:9117
ACCEPT     tcp  --  anywhere             172.17.0.8           tcp dpt:9091
ACCEPT     tcp  --  anywhere             172.17.0.8           tcp dpt:8989
ACCEPT     tcp  --  anywhere             172.17.0.8           tcp dpt:7878
ACCEPT     tcp  --  anywhere             172.17.0.4           tcp dpt:51413
ACCEPT     udp  --  anywhere             172.17.0.4           udp dpt:51413
ACCEPT     tcp  --  anywhere             172.17.0.4           tcp dpt:9117
ACCEPT     tcp  --  anywhere             172.17.0.4           tcp dpt:9091
ACCEPT     tcp  --  anywhere             172.17.0.4           tcp dpt:8989
ACCEPT     tcp  --  anywhere             172.17.0.4           tcp dpt:7878
ACCEPT     tcp  --  anywhere             172.17.0.7           tcp dpt:51413
ACCEPT     udp  --  anywhere             172.17.0.7           udp dpt:51413
ACCEPT     tcp  --  anywhere             172.17.0.7           tcp dpt:9117
ACCEPT     tcp  --  anywhere             172.17.0.7           tcp dpt:9091
ACCEPT     tcp  --  anywhere             172.17.0.7           tcp dpt:8989
ACCEPT     tcp  --  anywhere             172.17.0.7           tcp dpt:7878
ACCEPT     tcp  --  anywhere             172.17.0.6           tcp dpt:51413
ACCEPT     udp  --  anywhere             172.17.0.6           udp dpt:51413
ACCEPT     tcp  --  anywhere             172.17.0.6           tcp dpt:9117
ACCEPT     tcp  --  anywhere             172.17.0.6           tcp dpt:9091
ACCEPT     tcp  --  anywhere             172.17.0.6           tcp dpt:8989
ACCEPT     tcp  --  anywhere             172.17.0.6           tcp dpt:7878
ACCEPT     tcp  --  anywhere             172.17.0.3           tcp dpt:51413
ACCEPT     udp  --  anywhere             172.17.0.3           udp dpt:51413
ACCEPT     tcp  --  anywhere             172.17.0.3           tcp dpt:9117
ACCEPT     tcp  --  anywhere             172.17.0.3           tcp dpt:9091
ACCEPT     tcp  --  anywhere             172.17.0.3           tcp dpt:8989
ACCEPT     tcp  --  anywhere             172.17.0.3           tcp dpt:7878
ACCEPT     tcp  --  anywhere             172.17.0.2           tcp dpt:51413
ACCEPT     udp  --  anywhere             172.17.0.2           udp dpt:51413
ACCEPT     tcp  --  anywhere             172.17.0.2           tcp dpt:9117
ACCEPT     tcp  --  anywhere             172.17.0.2           tcp dpt:9091
ACCEPT     tcp  --  anywhere             172.17.0.2           tcp dpt:8989
ACCEPT     tcp  --  anywhere             172.17.0.2           tcp dpt:7878
ACCEPT     tcp  --  anywhere             172.17.0.9           tcp dpt:https

Chain DOCKER-ISOLATION-STAGE-1 (1 references)
target     prot opt source               destination
DOCKER-ISOLATION-STAGE-2  all  --  anywhere             anywhere
RETURN     all  --  anywhere             anywhere

Chain DOCKER-ISOLATION-STAGE-2 (1 references)
target     prot opt source               destination
DROP       all  --  anywhere             anywhere
RETURN     all  --  anywhere             anywhere

Chain DOCKER-USER (1 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere

Bonjour,

Je te conseille d'utiliser un proxy comme traefik, ça t’évitera d'exposer les ports mis à par le 80 et 443.

    laster13 Bonjour et merci pour ta réponse, j'ai fait déjà du reverse proxy pour l'accès "classique" à ces services.
    Cependant, j'ai également des applications tierces qui se connectent directement au serveur sur les ports indiqués et pour lesquelles le passage par proxy n'est pas possible.
    Donc cette solution ne règle pas totalement mon problème.

      D' après tes ports tu as donc radarr sonarr transmission, jacket. Ton application tierce c est quoi ? Nzb360 ?

        ludwigvdb Cependant, j'ai également des applications tierces qui se connectent directement au serveur sur les ports indiqués et pour lesquelles le passage par proxy n'est pas possible.

        T'es sur de ça? en ce qui me concerne je n'expose pas les ports de sonarr/radarr et autres et j'arrive à me connecter par exemple avec nzb360 avec l'adresse proxy comme par exemple
        https://user:pass@sonarr.domaine.com

        Sinon la règle iptable pour te connecter à un port exclusivement pour une certaine ip en considerant que tu aies mis en place un iptable avec blocage en amont de tous le traffic entrant
        -I INPUT -p tcp -s xx.xx.xx.xx --dport yyy -j ACCEPT

        Dans docker compose pour exposer le port en local (par exemple)
        - 127.0.0.1:7878:7878

        https://upandclear.org/2016/06/25/iptables-faut-pas-en-avoir-peur-regles-openvpn-secu/

        5 jours plus tard

        Impeccable tout est rentré dans l'ordre.

        Merci pour le coup de main 🙂

        Répondre…