lun. 06 oct. 2025 09:13:51 CEST

Introduction au système de fichiers réseau NFSv4 - édition 2025

NFS fête ses 40 ans

Le protocole NFS (Network File System) vient de célébrer son 40e anniversaire ! Depuis 1984, il a profondément transformé l'accès aux fichiers en réseau. Il est devenu incontournable pour tous les administrateurs de systèmes Unix et Linux. À cette occasion, le support de travaux pratiques « Introduction au système de fichiers réseau NFSv4 » a été entièrement révisé et enrichi pour répondre aux enjeux de la sécurité et de l'administration moderne.

NFS hardening

Un support pédagogique complet, pensé pour la pratique

Ce document propose une exploration progressive du protocole NFSv4, des bases des appels RPC aux montages dynamiques sous Linux. Le plan guide pas à pas à travers les étapes suivantes :

  • l'identification et la configuration des services réseau historiques, tels que rpcbind et portmapper ;
  • la mise en place d'une maquette minimaliste de type NAS avec exportation d'arborescences et création de comptes utilisateurs locaux ;
  • le paramétrage des montages manuels et automatisés via autofs ;
  • le contrôle des permissions et de la cohérence des identités locales et distantes, à l'aide de tests sur différentes valeurs UID/GID.

Nouveauté 2025 : la sécurité avancée NFS, de bout en bout

Le cœur de cette nouvelle édition réside dans une nouvelle section consacrée à la sécurité. Avec l’adoption croissante de NFS dans des contextes sensibles (cloud, intelligence artificielle, clusters scientifiques), la sécurisation n’est plus une option.

  • La configuration de Kerberos V5 est désormais détaillée pour permettre une authentification stricte des identités avec la gestion des éléments principaux (realm, keytab, etc.).
  • Le chiffrement TLS sur RPC (RFC 9289) : le guide explique comment activer le chiffrement de bout en bout avec TLS grâce au démon tlshd, offrant ainsi une protection contre les interceptions de trafic réseau.
  • Les étapes de déploiement intégrées sont décrites, de la génération des identités et des certificats à la configuration sur le client et le serveur, allant jusqu'à la validation des communications.

Vous apprendrez à capturer et à analyser le trafic réseau afin de distinguer un flux NFS en clair d'un flux protégé par Kerberos et TLS, ainsi qu'à vérifier pas à pas l'authentification dans les journaux Kerberos.

Enfin, la conclusion ouvre la voie au prochain défi incontournable : la gestion centralisée des identités via un annuaire LDAP – indispensable pour industrialiser NFS dans les grandes infrastructures.

Pour développer vos compétences et découvrir NFS comme vous ne l'avez jamais administré, (re)découvrez ce support de travaux pratiques, un classique renouvelé à l'image des 40 ans d'innovation du protocole NFS !

Le support « Introduction au système de fichiers réseau NFSv4 » est disponible en version PDF.

Relevez le défi ! L'association Kerberos et TLS permet de décentraliser le stockage tout en le rapprochant de l'utilisateur, sans compromettre la protection des données.

Posté par Philippe Latu | permalien | dans : formations, m1, système

lun. 01 sept. 2025 15:08:41 CEST

Administration Système et Réseaux : l'écosystème du stockage et de l'identité numérique

Alors que s'ouvre une nouvelle année universitaire, les étudiants de première année de master Réseaux et Télécommunications de l'université de Toulouse sont confrontés à des défis technologiques majeurs : maîtriser l'évolution toujours plus rapide des architectures de stockage et les enjeux cruciaux de la gestion de l'identité numérique.

Voici une brève introduction aux trois supports de cours utilisés dans le module Administration Système et Réseaux.

Module sysadm-net

Présentation 1 : Bases du Stockage Réseau - Quand le Stockage Devient une Fonction Réseau

Ce premier support de cours pose les bases du stockage moderne et explique comment cette fonction est passée d'un système local à un service réseau à part entière.

Trois objectifs essentiels :

  • Maîtriser les familles de stockage : comprendre les trois modes d'accès fondamentaux (bloc, fichier et objet), ainsi que les technologies associées (DAS, SAN et NAS), du SCSI traditionnel aux solutions NVMe les plus récentes.
  • Gérer les volumes logiques : développer une compétence en matière d'abstraction du stockage physique avec les solutions LVM, ZFS et Btrfs, afin d'assurer une flexibilité, une résilience et des performances optimales.
  • Évaluer les enjeux d'usage : analyser les critères de choix (capacité, disponibilité, évolutivité) et comprendre l'impact de la virtualisation sur les performances, notamment l'effet « I/O Blender ».

Présentation 2 : Systèmes de Fichiers Réseau et Stockage Objet - L'Art du partage intelligent

Cette deuxième présentation approfondit les mécanismes de partage et d'accès aux données via les réseaux, en se concentrant sur les protocoles NFS et SMB, ainsi que sur les architectures de stockage objet.

Trois objectifs importants :

  • Comparer les systèmes de fichiers distribués : décrire les protocoles NFSv4.2 et SMB 3.1.1, ainsi que leurs mécanismes de sécurité avancés (chiffrement AES, authentification Kerberos) et les architectures parallèles comme pNFS.
  • Décrire le stockage objet : introduire l'architecture Ceph avec la séparation données/métadonnées, les algorithmes CRUSH de placement intelligent et la réplication distribuée.
  • Associer la sécurité et les performances : intégrer le chiffrement en transit et au repos, gérer les topologies backend/frontend et minimiser l'impact de la latence réseau sur l'expérience utilisateur.

Présentation 3 : Gestion Réseau des Identités - Entrer dans l'ère de l'identité numérique

Trois objectifs à mettre en avant :

  • Moderniser l'authentification : migrer des méthodes traditionnelles (mots de passe + SMS/TOTP) vers les standards FIDO2 et l'authentification comportementale par IA, en intégrant les protocoles OAuth 2.0 et OpenID Connect.
  • Centraliser la gestion des identités : déployer des solutions LDAP et Active Directory avec SSSD pour unifier l'accès aux magasins d'identités hétérogènes et assurer la continuité de service en mode déconnecté.
  • Découvrir la gestion des identités et des accès natifs au cloud : présenter le cloud-native IAM avec fédération d'identités, tokens JWT et conformité réglementaire (RGPD, NIS2) intégrée dès la conception.

La compréhension approfondie des briques fonctionnelles du stockage réseau et de la gestion d'identité s'impose aujourd'hui comme une compétence stratégique pour les futurs ingénieurs. Disposer d'une vision claire et précise de ces mécanismes permet non seulement de consolider les bases techniques, mais aussi de gagner en autonomie dans le choix, le déploiement et l'administration d'infrastructures critiques. Cette démarche est d'autant plus cruciale dans une perspective d'émancipation numérique, où l'ambition de bâtir des solutions de cloud souverain – libres des dépendances vis-à-vis des géants du secteur – devient un enjeu majeur pour assurer la résilience, la sécurité et l'indépendance technologique des organisations.

Posté par Philippe Latu | permalien | dans : formations, m1, système

mar. 03 juin 2025 11:03:04 CEST

Construire. Conteneuriser. Automatiser. De la création d'une application web à la mise en place d'un pipeline CI/CD fiable.

Voici deux supports de travaux pratiques qui vous proposent une immersion progressive dans l'intégration et le déploiement continu : du script Bash à la création d’une application web Python conteneurisée avec Podman (Lab 11), puis jusqu'à l'automatisation complète du cycle de vie applicatif grâce à un pipeline CI/CD orchestré par Jenkins (Lab 12). L'objectif est d'acquérir les compétences nécessaires pour industrialiser le déploiement d’applications, garantir leur reproductibilité et leur robustesse à chaque modification du code.

Les 3 points forts du Lab 11 – Build a Sample Web App in a Podman Container

Lab 11
  1. Maîtrise de l’automatisation avec Bash
    Le Lab 11 débute par un court rappel des bases du scripting Bash, indispensable pour automatiser la création de fichiers, la manipulation de répertoires et l'exécution de tâches répétitives.
  2. Développement et conteneurisation d’une application web Python
    Les étudiants développent une application web minimale en Python/Flask, puis l'enrichissent avec des fichiers statiques (HTML/CSS) afin de simuler une expérience utilisateur. La suite du TP les guide dans la création d’un Dockerfile et l’utilisation de Podman pour construire et exécuter l’application dans un conteneur, ce qui permet de se familiariser avec le packaging d’applications.
  3. Cycle complet : build, run, inspect, clean
    Le TP ne se contente pas de la simple exécution : il propose une démarche complète incluant la construction, l’inspection, l'accès interactif au conteneur, l'arrêt et la suppression contrôlée des ressources. Cette approche permet de découvrir le cycle de vie d’une application conteneurisée ainsi que la reproductibilité de sa construction.

Les 3 points forts du Lab 12 – Build a Sample Web App CI/CD Pipeline Using Jenkins

Lab 12
  1. Introduction pratique à CI/CD avec Jenkins
    Le Lab 12 s'appuie sur le travail réalisé dans le Lab 11 pour aborder la gestion de code source avec GitLab, puis l'automatisation des builds et des tests via Jenkins. L'installation, la configuration et la sécurisation des accès Jenkins/agent sont détaillées, ce qui permet de rendre l'infrastructure reproductible et de se rapprocher des bonnes pratiques.
  2. Orchestration complète du pipeline : build, test et déploiement persistant
    L’étudiant crée des jobs Jenkins pour construire et tester l’application dans un conteneur Podman, puis intègre ces étapes dans un pipeline déclenché à chaque modification du code. L'utilisation d'un service Quadlet (systemd) garantit que le conteneur reste actif après la fin du job Jenkins, assurant ainsi la persistance du service.
  3. Contrôle qualité automatisé et diagnostic intégré
    Le pipeline intègre des scripts de test automatisés qui vérifient non seulement l'état du conteneur, mais aussi l'accessibilité réelle de l'application web. Des diagnostics détaillés (logs, statuts systemd, etc.) sont collectés en cas d’échec, ce qui illustre l'importance du feedback rapide et de la traçabilité dans une démarche DevOps.

L'importance d’une démarche CI/CD avec reconstruction complète à chaque exécution

La mise en place d’un pipeline CI/CD qui reconstruit l'application et son environnement à chaque exécution garantit la cohérence, la sécurité et la reproductibilité du déploiement. À chaque modification du code source, le pipeline :

  • Récupère la dernière version depuis le gestionnaire de sources (GitLab)
  • Reconstruit intégralement l'image conteneurisée (Podman)
  • Déploie l'application dans un environnement propre, géré par systemd (Quadlet)
  • Exécute des tests automatisés pour valider le bon fonctionnement

Cette approche élimine les effets de bord liés à des environnements incomplets, réduit les risques d’erreurs humaines et accélère la détection des régressions. Elle s’inscrit dans les bonnes pratiques DevOps, où l'automatisation et la reconstruction systématique sont des gages de qualité et de rapidité de livraison.

Pour conclure

La progression proposée dans ces deux travaux pratiques illustre l'équilibre à trouver entre les métiers du développement et des opérations. Ils insistent sur la reconstruction complète, la persistance des services, l'intégration des tests et la gestion des erreurs. Cette démarche reflète les exigences du monde professionnel, où la robustesse, la traçabilité et l'automatisation sont des critères essentiels pour l'industrialisation des applications.

Posté par Philippe Latu | permalien | dans : formations, m1, travaux_pratiques

lun. 05 mai 2025 18:22:48 CEST

Maquettage et autohébergement : le VPN IPSec BEET avec strongSwan

Vous cherchez à mettre en place un VPN performant, sécurisé et économique pour vos projets d'autohébergement ? Découvrez les points forts d'une architecture plutôt originale basée sur strongSwan, IPSec BEET et nftables, présentée dans le guide disponible à l'adresse suivante : IPSec Bound End-to-End Tunnel VPN with strongSwan


IPSec BEET VPN

Le mode BEET (Bound End-to-End Tunnel) combine les avantages des modes tunnel et transport d'IPSec : il réduit la surcharge d'en-tête typique du mode tunnel tout en conservant une structure adaptée à la traduction d'adresses (NAT). Cette approche permet d'optimiser les performances (chiffrement ESP en transport) et de simplifier la gestion des adresses grâce à des associations de sécurité (SA) prédéfinies. Il garantit la résilience face aux changements d'adressage des fournisseurs d'accès internet (FAI).

L'utilisation des interfaces Xfrm Linux permet de découpler la gestion des associations de sécurité (SA) du routage de paquets. L'objectif est de simplifier la gestion des tunnels. Associées au mode BEET, ces interfaces Xfrm associent chaque SA à un identifiant d'interface unique. Cette abstraction facilite également le filtrage via nftables.

Côté sécurité et conformité, le guide privilégie les certificats auto-signés Ed25519/X25519, offrant une sécurité post-quantique (NIST Level 1) tout en restant compatible avec les normes X.509. Le choix de chacha20poly1305 et SHA-384 assure un chiffrement robuste, même sur du matériel limité sans gestion du matériel TPM.

Pour le filtrage, Nftables offre une gestion unifiée du trafic chiffré/déchiffré avec des règles spécifiques (meta ipsec exists) qui permettent de filtrer uniquement les paquets traités par IPSec. Il est toutefois toujours nécessaire de régler manuellement le MSS clamping pour adapter la taille des segments TCP et éviter la fragmentation. L'utilisation des règles de masquerading assure une traduction d’adresses transparente pour les flux sortants des extrémités du VPN.

Cette architecture démontre qu'il est possible de déployer un VPN solide à moindre coût, en s'appuyant sur des outils open source comme strongSwan et nftables. En combinant BEET, Xfrm et des standards cryptographiques modernes, elle offre une alternative aux solutions cloud propriétaires, avec pour objectif la mise en place d'infrastructures de services autonomes. La modularité des configurations permet par ailleurs une adaptation aisée à des cas d’usage variés, allant des objets connectés industriels aux déploiements hybrides.

Si vous recherchez l'autohébergement en dehors de la sphère des fournisseurs d'accès Internet, cette solution de VPN en mode BEET est faite pour vous. N'hésitez pas à me faire part de vos retours sur le document.

Posté par Philippe Latu | permalien | dans : ipsec, système

mer. 26 mars 2025 17:06:49 CET

Comment appliquer une configuration déclarative à un commutateur Open vSwitch avec la bibliothèque ovsdbapp ?

Les manipulations proposées dans le support de travaux pratiques DevNet Lab 9 – Configure Open vSwitch using the Python ovsdbapp library, s'inscrivent dans le domaine de la programmabilité des réseaux. Associée à l'automatisation, la programmation des topologies d'interconnexion de réseaux est devenue indispensable pour répondre aux besoins d'agilité, de fiabilité et d'évolutivité des infrastructures modernes.

La problématique étant posée, nous sommes à nouveau confrontés à des défis de taille !

  • Nos étudiants, bien que débutants, ont été habitués à l'approche impérative (séquence d'instructions propres à chaque constructeur). Le passage à une approche déclarative, qui décrit l'état souhaité sans tenir compte des équipements cibles représente un changement de paradigme important.
  • Dans le domaine de la formation, on privilégie souvent des solutions qui escamotent l'infrastructure physique sous-jacente - underlay network - qui assure la connectivité de base, pour se concentrer sur l'abstraction d'infrastructure - overlay network - qui offre une grande flexibilité pour les applications et les services. À force de recourir à tous ces faux-semblants, les étudiants ont du mal à changer de contexte, et certains pensent même que c'est impossible.

Si l'on fait le choix de ne pas former de jeunes narco-dépendants aux grands fournisseurs du cloud public, on n'a pas d'autre solution que de se plonger dans les opérations avec un niveau d'exigence élevé en matière d'automatisation.

C'est ainsi que le support de travaux pratiques DevNet Lab 9 propose de produire un code Python de configuration des ports d'un commutateur virtuel Open vSwitch (unique pour débuter) à partir du contenu d'un fichier de déclaration YAML.


Topologie DevNet + ovsdbapp

Les manipulations s'appuient sur un scénario concret : dans le contexte d'une infrastructure cloud privée, des hyperviseurs sont déployés avec chacun un commutateur de distribution Open vSwitch nommé dsw-host. Un grand nombre d'interfaces tap sont provisionnées et déclarées comme ports de commutateur. Lorsque les étudiants démarrent leurs premiers travaux pratiques, ils se voient attribuer des ensembles de ces interfaces pour exécuter des machines virtuelles ou des routeurs. Il s'agit donc de programmer les topologies réseau d'interconnexion entre le monde virtuel et le monde physique.

Les objectifs du laboratoire sont simples :

  • Établir une connexion sécurisée au serveur de base de données OVSDB à l'aide d'un premier script Python
  • Lister les commutateurs existants et récupérer les attributs détaillés d'un port particulier
  • Charger et appliquer des configurations réseau depuis un fichier YAML vers les ports du commutateur
  • Vérifier manuellement les configurations appliquées sur l'hyperviseur afin d'assurer la cohérence entre l'état déclaré et la configuration réseau réelle

La progression des manipulations est organisée en trois parties principales, chacune apportant un niveau supplémentaire de maîtrise :

  1. Mise en place de l'environnement
    Cette première partie analyse les conditions nécessaires pour établir un canal de communication sécurisé entre le code Python et le service ovsdb-server exécuté sur l'hyperviseur. Les étudiants apprennent à utiliser la fonctionnalité LocalForward d'OpenSSH pour créer un tunnel sécurisé vers le socket Unix du service.
  2. Exploration interactive avec Python
    Dans cette deuxième partie, les étudiants apprennent progressivement à interagir avec la base de données Open vSwitch. Ils commencent par une simple liste des commutateurs disponibles, puis récupèrent les attributs détaillés d'un port spécifique, et enfin analysent les configurations VLAN (mode access ou trunk).
  3. Évolution vers une approche déclarative
    La troisième partie introduit l'approche déclarative avec YAML comme source de vérité pour la configuration souhaitée. Les étudiants développent un script capable de charger cette configuration et de l'appliquer aux ports du commutateur. Ils implémentent également un mode "dry-run" pour prévisualiser les changements sans les appliquer.

Cette approche progressive permet aux étudiants de comprendre d'abord les mécanismes sous-jacents avant d'aborder les concepts plus avancés de programmabilité réseau. Néanmoins, elle comporte certaines limitations.

  • L'environnement de laboratoire requiert le maintien d'une connexion SSH active entre le système de développement et l'hyperviseur.
  • La courbe d'apprentissage associée à la programmation Python et aux concepts de réseaux virtualisés est assez abrupte pour les débutants.
  • Les concepts de cache et d'optimisation des requêtes introduits dans la dernière partie peuvent être difficiles à appréhender sans une solide compréhension préalable de Python.

Heureusement, les étudiants de première année de Master ont déjà parcouru un long chemin dans le domaine du développement. Malgré ces limitations, ce laboratoire est une opportunité de progresser dans la compréhension pratique de la programmabilité réseau moderne, alignée sur les pratiques DevOps actuelles.

Ces manipulations constituent une première étape vers la maîtrise de la programmabilité réseau. Elles posent les fondements nécessaires pour aborder des sujets plus avancés comme l'orchestration multi-équipements ou switch fabric.

Les compétences acquises permettent non seulement d'automatiser des tâches répétitives, mais aussi d'adopter une approche plus systématique et fiable de la gestion des infrastructures réseau - ne serait-ce que pour réaliser les manipulations suivantes. La transition vers le « réseau en tant que code » (Network as Code) représente un changement de paradigme aussi important que celui du DevOps pour les applications et les services.

Posté par Philippe Latu | permalien | dans : formations, m1, travaux_pratiques, virtualisation