• Catégories
    • Toutes les catégories
    • Planète Warez
      Présentations
      Aide & Commentaires
      Réglement & Annonces
      Tutoriels
    • IPTV
      Généraliste
      Box
      Applications
      VPN
    • Torrent & P2P
    • Direct Download et Streaming
    • Autour du Warez
    • High-tech : Support IT
      Windows, Linux, MacOS & autres OS
      Matériel & Hardware
      Logiciel & Software
      Smartphones & Tablettes
      Graphismes
      Codage : Sites Web, PHP/HTML/CSS, pages perso, prog.
      Tutoriels informatiques
    • Culture
      Actualités High-Tech
      Cinéma & Séries
      Sciences
      Musique
      Jeux Vidéo
    • Humour & Insolite
    • Discussions générales
    • Espace détente
    • Les cas désespérés
  • Récent
  • Populaire
  • Résolu
  • Non résolu
Réduire

Planète Warez

,
  • Politique
  • Règlement
  • À propos
  • Annonces
  • Faire un don
  • Feedback
  • Team
  • Tutoriels
  • Bug Report
  • Wiki
    • Light
    • Default
    • Ubuntu
    • Lightsaber
    • R2d2
    • Padawan
    • Dim
    • FlatDark
    • Invaders
    • Metallic
    • Millennium
    • Leia
    • Dark
    • DeathStar
    • Starfighter
    • X-Wing
    • Sith Order
    • Galactic
ko-fi

all

🌟 La force vive du forum, chacun apportant sa propre lumière, ses connaissances et ses passions. Ensemble, ils créent un univers riche d’échanges, de discussions et de découvertes. Leur devise : "Dans l’espace du forum, chaque étoile compte"

Messages


    [Docker] comment améliorer la sécurité avec un Docker Socket Proxy ?
  • Violenceundefined Violence

    I. Présentation

    Dans un environnement Docker, certains services ont besoin d’un accès au socket de Docker pour fonctionner correctement, notamment pour consulter l’état des conteneurs Docker en cours d’exécution. Dans ce cas, on peut avoir tendance à aller au plus simple : exposer directement le socket Docker. Malheureusement, cette pratique ouvre la porte à un contrôle total du daemon Docker, et donc de l’ensemble de vos conteneurs. Se pose alors une question : comment exposer de manière sécurisée le Socket Docker ?

    Dans ce tutoriel, nous allons voir comment utiliser un proxy pour accéder au socket de Docker pour apporter plus de sécurité aux échanges avec l’API Docker. Pour cela, nous allons utiliser l’image d’un projet nommé docker-socket-proxy qui s’appuie sur une image Alpine et HAProxy pour filtrer les accès à l’API Docker.

    II. Exposer le socket de Docker : quels sont les risques ?

    Le simple fait de monter docker.sock dans un conteneur lui donne un pouvoir total sur le démon Docker. En disant cela, je référence à ce type d’instruction que nous pouvons retrouver dans les fichiers Docker Compose :

     volumes: - /var/run/docker.sock:/var/run/docker.sock
    

    Concrètement, si un attaquant parvient à compromettre ce conteneur, il peut agir sur l’ensemble de votre environnement conteneurisé. Il peut envisager les actions suivantes :

    • Supprimer ou modifier n’importe quel conteneur.
    • Créer de nouveaux conteneurs (ce qui lui permettrait d’injecter du code malveillant).
    • Accéder à l’hôte Docker en lui-même dans le pire des cas.

    Monter le socket de Docker en lecture seule ne permet pas de se prémunir contre une attaque potentielle : l’attaquant peut créer un conteneur Docker avec un shell au sein duquel il monte la racine du volume système, qui lui ouvrira la voie royale.

    C’est précisément pour éviter ce scénario catastrophe que le proxy pour le socket Docker entre en jeu…

    III. Le rôle du Docker Socket Proxy

    Le Docker Socket Proxy joue un rôle d’intermédiaire entre vos applications et Docker. Ainsi, au lieu d’exposer directement docker.sock à vos conteneurs (et risquer le pire), ce proxy agit comme un filtre qui ne laisse passer que ce qui est strictement nécessaire et autorisé selon la configuration. C’est lui qui définit quelles actions sont autorisées.

    Dans le cas du projet Docker Socket Proxy que nous allons utiliser, le principe est le suivant :

    • Par défaut, le proxy autorise les accès aux sections de l’API EVENTS, PING, VERSION.
    • Tous les autres accès sont refusés par défaut : CONTAINERS, IMAGES, NETWORKS, VOLUMES, etc…

    Vous souhaitez autoriser un accès dans votre proxy ? Vous devez l’autoriser explicitement avec une directive sous la forme suivante : CONTAINERS=1.

    Au final, ce proxy est un moyen efficace de concilier praticité et sécurité, sans bouleverser l’architecture existante. Vous n’aurez qu’à effectuer quelques ajustements dans la configuration de vos conteneurs.

    Note: la mise en place d’un proxy pour le socket Docker est un très bon moyen de réduire la surface d’attaque de votre système.

    IV. Déployer un Docker Socket Proxy

    Désormais, nous allons passer au déploiement de Docker Socket Proxy dans un conteneur Docker. Vous devez disposer d’une machine sur laquelle Docker est installé et vous y connecter.

    Créez un dossier pour ce projet, puis enchainez sur la création du fichier Docker Compose :

    mkdir /opt/docker-compose/docker-socket-proxynano /opt/docker-compose/docker-socket-proxy/docker-compose.yml
    

    Voici le code utilisé pour déployer cette application :

    services: docker-proxy: image: tecnativa/docker-socket-proxy:latest container_name: docker-socket-proxy restart: unless-stopped environment: - LOG_LEVEL=info - CONTAINERS=1 volumes: - /var/run/docker.sock:/var/run/docker.sock:ro networks: - frontend networks: frontend: external: true
    

    Comme toujours, quelques explications s’imposent :

    • Ce conteneur s’appuie sur la dernière image du projet tecnativa/docker-socket-proxy
    • Ce conteneur a accès au socket Docker en direct, via la directive sous volumes: (ce sera le seul à avoir cette ligne désormais).
    • Le réseau auquel se connecte le conteneur se nomme frontend et il existe déjà, mais sinon, vous pouvez tout à fait le créer (ici, c’est dans un contexte avec Traefik). Ainsi, le proxy sera accessible par les autres conteneurs connectés à ce même réseau (qui est isolé).
    • Ici, le port 2375 n’est pas directement exposé sur l’hôte Docker pour des raisons de sécurité. Néanmoins, c’est sur ce port que devront se connecter les autres conteneurs qui ont besoin de solliciter le proxy, mais via le réseau frontend directement, donc pas besoin de l’exposer.

    Nous pouvons constater également la ligne précisée ci-dessous, dont l’objectif est de donner accès à l’endpoint /containers/ de l’API. Il y a un lien entre les variables d’environnement supportées par le proxy et les endpoints présents dans l’API de Docker (voir cette documentation).

    CONTAINERS=1
    

    Il est important de noter que par défaut, la méthode POST est désactivée ! C’est essentiel d’un point de vue sécurité, car cela signifie que tous les endpoints de l’API sont accessibles en lecture seule. Sinon, un accès à l’endpoint CONTAINERS pourrait, en principe, permettre de créer un conteneur, mais là ce n’est pas le cas.

    Vous n’avez plus qu’à lancer la construction du projet :

    docker compose up -d
    

    La suite se passe du côté de vos applications.

    V. Cas d’usage

    A. Utiliser le proxy Socket Docker avec Portainer

    Pour commencer, nous allons voir comment configurer Portainer avec le Docker Socket Proxy. Pour rappel, Portainer est une application open source qui facilite l’administration des conteneurs Docker et des éléments associés : volumes, réseaux, images… De ce fait, l’application a besoin d’un ensemble de permissions.

    Tout d’abord, dans le fichier Docker Compose de Portainer, vous devez supprimer la liaison avec le socket Docker :

     volumes: - /var/run/docker.sock:/var/run/docker.sock
    

    À la place, ajoutez une commande pour connecter Docker via le proxy (attention au nom du conteneur) :

     command: -H tcp://docker-socket-proxy:2375# ou command: -H tcp://docker-socket-proxy:2375 --tlsskipverify
    

    Ce qui donne le fichier docker-compose.yml suivant :

    services: portainer: container_name: portainer image: portainer/portainer-ce:lts command: -H tcp://docker-socket-proxy:2375 restart: always volumes: - ./portainer_data:/data ports: - 9443:9443 networks: - frontend networks: frontend: external: true
    

    Néanmoins, en l’état, cela ne fonctionnera pas car la configuration de notre proxy est trop restrictive. En effet, nous autorisons uniquement un accès en lecture seule aux conteneurs, ce qui n’est pas suffisant pour Portainer. Il doit pouvoir gérer le réseau, les images, les volumes, etc… Vous devez donc ajuster les permissions de votre proxy pour adopter cette configuration :

     environment: - LOG_LEVEL=info - CONTAINERS=1 - INFO=1 - TASKS=1 - SERVICES=1 - NETWORKS=1 - VOLUMES=1 - IMAGES=1 - SYSTEM=0 - EXEC=0 - POST=1
    

    L’instruction POST=1 est uniquement utile si vous souhaitez autoriser la création d’éléments via Portainer. Ainsi, nous autorisons les requêtes POST vers les endpoints de l’API qui sont autorisés, donc création / modification de ressources (démarrer/arrêter des conteneurs, créer des services, etc.). Si vous l’utilisez seulement pour de la lecture, ce n’est pas nécessaire d’ajouter cette instruction.

    À l’inverse, nous bloquons l’exécution de docker exec via l’API grâce à l’instruction EXEC=0, donc c’est un bon point pour la sécurité. L’idée ici étant de trouver un bon compromis entre sécurité et fonctionnement de Portainer. Nous bloquons aussi les accès sur l’endpoint système avec SYSTEM=0.

    Note: rien ne vous empêche de déployer un proxy socket spécifique pour Portainer afin de ne pas ouvrir les permissions pour tous les conteneurs.

    Vous pouvez modifier les permissions du proxy à tout moment. Ensuite, en consultant les journaux, vous verrez quelles sont les requêtes autorisées ou refusées en regardant les codes HTTP.

    docker logs docker-socket-proxy # Exemples :dockerfrontend dockerbackend/dockersocket 0/0/0/2/2 200 9298 - - ---- 2/2/0/0/0 0/0 "GET /v1.51/images/json HTTP/1.1"dockerfrontend/<NOSRV> 0/-1/-1/-1/0 403 192 - - PR-- 2/2/0/0/0 0/0 "GET /v1.41/info HTTP/1.1"
    

    Portainer pourra ensuite se connecter à votre instance Docker par l’intermédiaire de notre proxy (en mode API).

    B. Utiliser le proxy Socket Docker avec Traefik

    Cette section explique comment utiliser le proxy Socket Docker avec le reverse proxy Traefik. C’est un très bon exemple, car Traefik est souvent couplé avec Docker et il a un accès aux conteneurs Docker, notamment pour lire les informations sur les labels. Ainsi, un accès en lecture seule sur les conteneurs lui suffit pour fonctionner ! Soit la configuration suivante dans le proxy :

     environment: - LOG_LEVEL=info - CONTAINERS=1
    

    Dans le fichier Docker Compose de Traefik, il convient donc de supprimer cette ligne :

     volumes: - /var/run/docker.sock:/var/run/docker.sock
    

    Puis, dans le fichier de configuration⁣ traefik.yml, le fournisseur Docker doit être modifié. En principe, vous avez l’instruction endpoint: "unix:///var/run/docker.sock" qui donne un accès direct au socket Docker grâce au volume.

    Celle-ci doit être remplacée par une connexion TCP vers le conteneur du proxy sur le port 2375. Ce qui donne :

    providers: docker: #endpoint: "unix:///var/run/docker.sock" endpoint: "tcp://docker-socket-proxy:2375" exposedByDefault: false
    

    Une fois l’opération arrêtée, vous devez relancer la construction du conteneur Traefik avec cette nouvelle configuration. Voilà, votre reverse proxy Traefik fonctionne normalement, et en plus, l’accès aux conteneurs est sécurisé.

    VI. Conclusion

    L’utilisation d’un proxy pour exposer le Socket de Docker est une bonne manière de filtrer les accès entre vos applications et l’API de Docker. Rien ne vous oblige à le faire, mais c’est un plus pour réduire la surface d’attaque de votre hôte Docker, dans le cas où vous utilisez des applications qui “se connectent” au socket Docker.

    FAQ

    Pourquoi le socket Docker représente-t-il un risque de sécurité ?

    Le socket Docker donne un accès direct au Docker Daemon, c’est-à-dire au moteur Docker en lui-même. Tout conteneur ou application ayant accès à docker.sock sans contrôle peut créer, modifier ou supprimer des conteneurs, accéder aux volumes, manipuler les réseaux et potentiellement compromettre l’hôte en lui-même.

    Quel est le rôle du Docker Socket Proxy ?

    Le Docker Socket Proxy agit comme un intermédiaire sécurisé (rôle de base du proxy) entre les conteneurs et le démon Docker. Il permet de définir précisément quelles actions sont autorisées (lecture des informations des conteneurs, création de conteneurs, gestion des images, etc.). Cela évite d’exposer le socket brut et réduit considérablement les risques d’escalade : la surface d’attaque est maîtrisée.

    Le Docker Socket Proxy fonctionne-t-il avec Docker Swarm ?

    Oui. Il peut limiter les permissions liées à Docker Swarm. Cela implique d’ajuster la configuration du proxy pour autoriser les endpoints nécessaires (SERVICES, TASKS, NETWORKS, etc.).

    Le Docker Socket Proxy est-il adapté pour un usage en production ?

    Oui, à condition de configurer précisément les endpoints autorisés : des tests approfondis peuvent s’avérer nécessaires pour bien identifier les besoins de certaines applications. Le Docker Socket Proxy permet de respecter un principe de moindre privilège, essentiel dans une architecture Docker en production.


    – Source :

    https://www.it-connect.fr/docker-comment-ameliorer-la-securite-avec-un-docker-socket-proxy/


  • On ne se moque pas de ces choses là.
  • michmichundefined michmich

    @duJambon sérieusement challengée par les enturbannés de la république islamique d’Iran, dont certains estiment la répression à 20’000 morts.


  • [Topic Unique] YGG Torrent
  • Psyckofoxundefined Psyckofox

    @hardlinepluto3 a dit dans [Topic Unique] YGG Torrent :

    que ce soit dans un sens

    Pour ma part, plus les années passent et plus ça pousse à très très grand pas dans le mauvais sens ^^


  • Télé-Cigognes - Ben - 2025
  • michmichundefined michmich

    L’hécatombe de 2025 en partie expliquée:

    https://www.sarralbe.fr/les-annees-se-suivent-et-ne-se-ressemble-pas-


  • [Topic Unique] YGG Torrent
  • hardlinepluto3undefined hardlinepluto3

    J’ai toujours dit que l’humanité ne cessera de me surprendre, que ce soit dans un sens ou dans un autre haha


  • On ne se moque pas de ces choses là.
  • duJambonundefined duJambon

    Le titre de «Tyran de l’année» décerné à la présidente de la Tanzanie

    En France, on ne sait plus pour qui voter, ailleurs, on n’a pas le choix 🙂

    480d2947-d808-4a50-9e1c-85312b08eae2-image.png
    La sexagénaire, surnommée «La bouchère de Tanzanie», est au pouvoir depuis 2021

    Le titre de «Tyran de l’année 2025» a été décerné, lundi, par l’ONG britannique Index on Censorship à Samia Suluhu Hassan, présidente de la Tanzanie. L’organisation note sur son site que le sondage qui a mené à ce choix était l’occasion pour la population du pays d’exprimer ses griefs et de réclamer justice, «sans que cela n’ait trop de conséquences».

    Samia Suluhu Hassan est née en 1960 à Zanzibar et diplômée en économie. Elle a commencé en politique au début du millénaire. Elle est devenue vice-présidente de la Tanzanie en 2015. C’est en mars 2021 qu’elle a pris la tête du pays. Elle a été réélue l’automne dernier.

    «Samia Suluhu Hassan a initialement défendu une politique qui prônait le développement des infrastructures et la mondialisation de l’économie tanzanienne. Pour autant, un basculement a eu lieu lors de l’élection présidentielle du 29 octobre 2025. Réélue avec 97,66% des voix, la sexagénaire a remporté un scrutin sans opposition crédible: les principaux leaders de l’opposition ont en effet été emprisonnés ou disqualifiés, tandis que le parti Chadema se voyait interdit de participation», note TF1.

    Répression féroce de l’opposition

    Les jours qui ont précédé et suivi l’élection ont vu la population descendre dans la rue. D’après le média français, la répression de ces manifestations aurait fait entre 700 et 2000 morts. «Nous remercions les forces de sécurité d’avoir veillé à ce que les violences n’empêchent pas le vote», avait à l’époque déclaré Samia Suluhu Hassan, justifiant ainsi l’usage de la force.

    «Présents sur place, des observateurs internationaux avaient dénoncé des fraudes massives, des coupures d’internet et des violences policières», affirme encore TF1. Le «Tyran de l’année» est en outre accusé de «museler les médias, en supprimant des titres de presse et en arrêtant des journalistes».

    Source: https://www.tdg.ch/tanzanie-samia-suluhu-hassan-elue-tyran-de-lannee-730918937043


  • Des cochongliers par milliers : Qui est responsable de leur pullulation ?
  • Aeryaundefined Aerya

    Là je viens de récupérer 2 cuissots de chevreuil, l’un va partir en marinade 24h, l’autre est en train de congeler.
    Si vous avez des idées de recettes… Je ne fais que de la marinade avec ça (pour cuisson au four). Recettes pas chiantes, je précise 😛


  • Un peu d'humour en image
  • Papawaanundefined Papawaan

    image.png


  • [Topic Unique] C411
  • iLightniingundefined iLightniing

    Sympas, j’aime bien le design x), dommage qu’on peut pas s’inscrire pour le moment 😕


  • Un peu d'humour en image
  • Ern Dorrundefined Ern Dorr

    Chat ch’est sûr ch’est l’Hiver Brrrrrrr…

    f7563e7b3a9c5095b25893c915aedd91-2113773287.jpg

    4c629844342a5d45c24daeb8ec8e9794-1510637117.jpg

    003a45337dee43c43b203edb74236f36-2404592417.jpg

    b242b0ac-b3cf-4631-bfe9-c40eb5235b61-Live Long & Prosper.jpg
    

Liste des membres

Raccoonundefined Raccoon
Indigostarundefined Indigostar
adminundefined admin
Violenceundefined Violence
eric_the_redundefined eric_the_red
FredfromLBundefined FredfromLB
kindyundefined kindy
Holytaskundefined Holytask
cid01undefined cid01
Le_Mijoteurundefined Le_Mijoteur
blayeulundefined blayeul
TylerDurden67undefined TylerDurden67
chloe2308undefined chloe2308
NONO15undefined NONO15
citerhe9041undefined citerhe9041
rambowotundefined rambowot
viviphone13undefined viviphone13
frro93undefined frro93
Commodore777undefined Commodore777
dawood62undefined dawood62
  • Se connecter

  • Vous n'avez pas de compte ? S'inscrire

  • Connectez-vous ou inscrivez-vous pour faire une recherche.
  • Premier message
    Dernier message
0
  • Catégories
    • Toutes les catégories
    • Planète Warez
      Présentations
      Aide & Commentaires
      Réglement & Annonces
      Tutoriels
    • IPTV
      Généraliste
      Box
      Applications
      VPN
    • Torrent & P2P
    • Direct Download et Streaming
    • Autour du Warez
    • High-tech : Support IT
      Windows, Linux, MacOS & autres OS
      Matériel & Hardware
      Logiciel & Software
      Smartphones & Tablettes
      Graphismes
      Codage : Sites Web, PHP/HTML/CSS, pages perso, prog.
      Tutoriels informatiques
    • Culture
      Actualités High-Tech
      Cinéma & Séries
      Sciences
      Musique
      Jeux Vidéo
    • Humour & Insolite
    • Discussions générales
    • Espace détente
    • Les cas désespérés
  • Récent
  • Populaire
  • Résolu
  • Non résolu