Linux déclaratif et reproductible

NixOS chez Hebeko

Nous déployons, maintenons et enseignons NixOS, et développons sur mesure autour de Nix. Nos ingénieurs contribuent aux briques NixOS de l'État, Sécurix et Bureautix, ainsi qu'à disko. Nos équipes développent NixWall, un pare-feu libre basé sur NixOS.

Parler de votre projet NixOS Voir nos services

Une distribution Linux déclarative

NixOS est une distribution Linux libre. Sur Debian ou Ubuntu, l'administrateur installe des paquets et modifie des fichiers machine par machine, et l'état réel d'un serveur finit par s'écarter de sa documentation. Sur NixOS, il décrit l'état voulu dans des fichiers texte (logiciels, services, comptes, réseau) et NixOS construit le système à partir de cette description.

Chaque construction crée une nouvelle génération du système. Les précédentes restent disponibles, et le menu de démarrage permet de revenir à l'une d'elles si une mise à jour pose problème.

Les logiciels viennent de nixpkgs, le dépôt de paquets de Nix. C'est le plus grand toutes distributions confondues, avec environ 119 000 paquets selon Repology.

Notre article Comprendre NixOS compare cette approche à Debian, Ubuntu et RHEL. Flakes Nix présente la façon la plus répandue d'organiser une configuration.

Bureau GNOME de NixOS avec le flocon de neige du logo en fond d'écran
Le bureau GNOME de NixOS.

Pourquoi NixOS en entreprise

Pour une entreprise ou une administration, la configuration de chaque serveur tient dans un dépôt Git. Elle sert de documentation, et un autre prestataire peut reprendre l'infrastructure à partir de ces fichiers.

L'exemple ci-dessous décrit un petit serveur web.

{ config, pkgs, ... }:
{
  services.nginx.enable = true;
  services.nginx.virtualHosts."intranet.example.fr" = {
    enableACME = true;
    forceSSL = true;
    root = "/srv/intranet";
  };
  security.acme.acceptTerms = true;
  security.acme.defaults.email = "admin@example.fr";

  users.users.camille = {
    isNormalUser = true;
    extraGroups = [ "wheel" ];
  };

  system.autoUpgrade.enable = true;
}
Extrait d'un fichier configuration.nix : un site web en HTTPS, un compte administrateur et les mises à jour automatiques. Ce fichier suffit à reconstruire le serveur.

Usages courants

NixOS s'utilise sur des serveurs comme sur des postes de travail.

UsageAvec NixOS
Serveurs web et applicatifsLe même fichier reconstruit le serveur après une panne ou chez un autre hébergeur.
Postes de travailChaque poste reçoit sa configuration d'un dépôt Git, comme dans Sécurix et Bureautix.
Pare-feu et routeursUne règle erronée s'annule en revenant à la génération précédente.
Installation par le réseauUn poste neuf démarre sur le réseau et s'installe sans clé USB.
Environnements de développementnix-shell ou un flake donne à chaque développeur les mêmes versions d'outils.
Tests avant déploiementLes tests NixOS vérifient une configuration dans des machines virtuelles avant la mise en production.

Le déroulé d'un projet

Le passage à NixOS se fait par étapes, sans arrêter ce qui fonctionne.

  1. Audit : inventaire des serveurs, des services et de leurs dépendances, puis choix d'un premier service à migrer.
  2. Pilote : ce service passe sous NixOS, avec toute sa configuration dans un dépôt Git. L'ancien serveur reste en place jusqu'à la validation.
  3. Extension : les autres serveurs suivent, avec des modules communs pour les comptes, la supervision, les sauvegardes et le durcissement.
  4. Transfert : formation et documentation de vos équipes, qui modifient ensuite la configuration elles-mêmes.

Prestations NixOS

Nous pouvons prendre en charge tout le projet ou une seule de ces étapes.

Audit et migration

Inventaire du parc, choix du premier service et plan de migration, puis bascule des serveurs et des postes.

Déploiement

Configurations en flakes et en modules, partitionnement et chiffrement avec disko, installation automatique ou par le réseau, secrets chiffrés.

Maintenance et exploitation

Mises à jour suivies, supervision et sauvegardes. Le MCO et l'infogérance s'appliquent aussi aux parcs NixOS.

Postes Sécurix et Bureautix

Pilotes pour les administrations, avec l'inventaire, l'installeur et les clés de sécurité adaptés à votre organisation.

Développement sur mesure

Modules NixOS, paquets, outils de déploiement et intégrations écrits pour vos besoins, publiés sous licence libre quand c'est possible. NixWall, le pare-feu libre que nous développons, en est un exemple.

Formation

Formation NixOS de 3 jours pour les équipes d'administration, en présentiel ou à distance, avec des exercices sur vos propres cas.

Sécurix et Bureautix

Sécurix est une distribution NixOS développée par la DINUM pour des postes sécurisés d'administration système, de bureautique et de développement. Bureautix en est la déclinaison d'exemple pour les postes bureautiques, avec un inventaire des machines, un installeur et des réglages prévus pour une DSI.

Le projet vise d'abord les informations non protégées, puis éventuellement le niveau Diffusion Restreinte. Il suit les recommandations de l'ANSSI avec un noyau durci, le démarrage sécurisé et un disque chiffré qui se déverrouille avec une clé FIDO2. La connexion se fait aussi par clé de sécurité, et le mot de passe n'est qu'un mode de secours. Grâce à NixOS, le même modèle se décline selon les besoins, par exemple un poste partagé entre plusieurs agents ou un poste limité à l'intranet.

Les prochaines étapes annoncées par la DINUM portent sur un durcissement complémentaire, l'envoi des journaux vers un puits de traces, l'enrôlement automatique des nouveaux postes et la rotation des clés Secure Boot.

Nos ingénieurs contribuent activement au projet. Nous voulons continuer à contribuer en amont, en particulier sur l'installation par le réseau et la gestion du parc, et accompagner les administrations qui adoptent Sécurix, du premier pilote jusqu'au déploiement.

Sécurix est publié sous licence MIT. Il reste en alpha, et ses développeurs ne proposent pas encore de support. Nous pouvons en conduire un pilote avec vous.

Bureau KDE Plasma d'un poste Bureautix, menu des applications ouvert
Le bureau KDE Plasma de Bureautix.

NixWall

NixWall est un pare-feu développé par nos équipes sur NixOS. Il est entièrement libre, sous licence AGPL-3.0, et son code est public sur GitHub.

L'objectif est un pare-feu reproductible. Toute sa configuration tient dans des fichiers, et deux machines construites à partir des mêmes fichiers sont identiques. NixOS garde chaque état précédent du système, et une modification qui coupe le réseau s'annule en revenant à la génération d'avant.

NixWall profite aussi de nixpkgs, le dépôt présenté plus haut. Les logiciels qu'il utilise y sont mis à jour en continu.

Le projet est en alpha et n'est pas encore prêt pour la production. À terme, NixWall se pilotera depuis une interface web, qui passera par son API pour modifier la configuration.

Installer et configurer NixWall

NixWall s'installe depuis une image ISO, sur une machine dédiée ou dans une machine virtuelle.

Écran d'accueil de l'installeur NixWall, avec les étapes d'installation

L'installation

L'image ISO démarre sur un écran qui décrit les étapes. L'administrateur repère les disques et les interfaces réseau, adapte deux fichiers, disko.nix pour le partitionnement et config.toml pour le réseau et les règles, puis lance nixwall-install. Au redémarrage, le pare-feu applique la configuration décrite dans ces fichiers.

Fichier config.toml de NixWall avec les zones LAN et WAN et deux règles de filtrage

Les règles dans un fichier TOML

Zones, adresses, DHCP et règles de filtrage se décrivent dans config.toml, un format lisible par un administrateur réseau qui ne connaît pas Nix. NixWall traduit ce fichier en configuration NixOS. Les rôles restent séparés. L'administrateur modifie les règles, et les développeurs font évoluer les modules NixOS sans toucher à ce fichier. Une erreur dans un fichier TOML se repère à la relecture, sans lire de code Nix. L'API de NixWall lit et modifie ce même fichier.

Nous développons NixWall activement, en interne, et publions chaque version sur GitHub. Les contributions sont les bienvenues, qu'il s'agisse de code, de tests, de documentation ou de signalements de bugs.

Questions fréquentes

Faut-il réécrire toute notre infrastructure ?

Non. NixOS peut arriver serveur par serveur, en commençant par un service isolé. Les autres machines restent sous Debian ou Ubuntu.

NixOS convient-il à la production ?

Oui. Une version stable sort tous les six mois, en mai et en novembre, et reçoit des correctifs de sécurité pendant sept mois.

Pouvez-vous déployer Sécurix ou Bureautix ?

Oui, sous forme de pilote, car ces deux configurations de la DINUM sont encore en alpha.

Formez-vous nos équipes ?

Oui, avec la formation NixOS de 3 jours, en présentiel ou à distance.

Pourquoi Hebeko

  • Vos serveurs, à votre nom

    Ils sont loués en France au nom de votre organisation, et vos données y restent.

  • La documentation vous est remise

    Les rapports d'audit et la documentation d'exploitation vous appartiennent, que vous poursuiviez avec nous ou non.

  • Un ingénieur comme interlocuteur

    La personne qui vous répond est celle qui intervient sur vos serveurs et vos postes.

Votre projet NixOS

Indiquez le nombre de machines et ce que vous voulez déployer ou développer. Un ingénieur vous répond par e-mail.

contact@hebeko.fr · 06 52 89 53 00

Comment ça commence

  1. Un premier échange d'une heure En visio, avec un ingénieur. Vous présentez votre contexte, vos outils et vos contraintes, et nous vous montrons les logiciels concernés en fonctionnement.
  2. Un audit ou un cadrage De 2 à 5 jours selon le périmètre. Vous recevez un rapport, un plan d'action et un devis. Le rapport vous appartient, quelle que soit la suite.
  3. Le projet, puis le suivi Migration, installation ou développement, par étapes validées avec vous. Ensuite, support, maintenance ou infogérance, au niveau que vous choisissez.