GNU/Linux >> Tutoriels Linux >  >> Linux

Linux immuable avec Silverblue :ma superpuissance préférée

Je suis un converti récent mais dévoué à Silverblue, que j'exécute sur mon ordinateur portable principal à la maison, et que je mettrai sur mon ordinateur portable de travail quand je serai dû une mise à niveau matérielle dans quelques mois. J'ai écrit un article sur Silverblue sur Enable Sysadmin, et au cours du week-end, j'ai également déplacé l'ordinateur portable de l'un de mes enfants. En termes de convivialité, d'apparence et de convivialité, Silverblue est essentiellement une version de Fedora. Il existe cependant une différence essentielle :le système d'exploitation est monté en lecture seule, ce qui signifie qu'il est immuable.

Que veut dire "immuable" ? Cela signifie qu'il ne peut pas être modifié. Pour être plus précis, dans un contexte logiciel, cela signifie généralement que quelque chose ne peut pas être modifié pendant l'exécution.

Digression importante :immuabilité constante

J'ai réalisé en écrivant cette dernière phrase que cela pouvait être un peu trompeur. De nombreux langages de programmation ont le concept de "constantes". Une constante est une variable (ou un ensemble, ou une structure de données) qui n'est pas variable. Vous pouvez attribuer une valeur à une constante et, généralement, vous attendre à ce qu'elle ne change pas. Mais—et cela dépend du langage que vous utilisez—il se peut que la constante soit not immuable.

Cette affirmation semble aller à l'encontre du bon sens; cependant, pour être juste, les expressions "langage de programmation" et "bon sens" sont rarement utilisées positivement dans la même phrase dans mon expérience. Mais c'est juste la façon dont certaines langues sont conçues. L'essentiel est le suivant :si vous avez une variable que vous souhaitez immuable, vérifiez la syntaxe du langage de programmation que vous utilisez et prenez les mesures spécifiques nécessaires pour maintenir cette immuabilité si nécessaire.

Immuabilité du système d'exploitation

Dans le cas de Silverblue, c'est le système d'exploitation qui est immuable. Vous installez des applications dans des conteneurs (plus à ce sujet plus tard) à l'aide de Flatpak, plutôt que sur le système de fichiers racine. Cela signifie non seulement que l'installation des applications est isolée du système de fichiers principal, mais également que la capacité des applications malveillantes à compromettre votre système est considérablement réduite. Ce n'est pas impossible - nous essayons généralement d'éviter le mot "impossible" lorsque nous décrivons des attaques ou des vulnérabilités en matière de sécurité - mais le risque est nettement plus faible.

Comment mettre à jour votre système, alors ? Eh bien, ce que vous faites est de créer une nouvelle image de démarrage qui inclut tous les packages mis à jour nécessaires, et lorsque vous êtes prêt, vous démarrez dessus. Silverblue fournit des outils simples pour ce faire :c'est sans doute moins compliqué que la méthode standard de mise à niveau de votre système. Cette approche facilite également la maintenance de différentes versions d'un système d'exploitation ou d'installations avec différents ensembles de packages. Si vous devez tester une application dans un environnement particulier, vous démarrez dans l'image qui reflète cet environnement et effectuez le test. Un autre environnement ? Une autre image.

Cependant, nous sommes plus intéressés par les propriétés de sécurité que cette situation nous offre. Non seulement il est difficile de compromettre le système d'exploitation principal en tant qu'utilisateur standard (comme pour de nombreux problèmes de sécurité, une fois que vous avez sudo ou accès root, la situation est fortement dégradée), mais vous travaillez toujours dans un environnement connu. La connaissance est une propriété très souhaitable pour la sécurité, car vous pouvez tester, surveiller et effectuer une analyse médico-légale à partir d'une configuration connue. Du point de vue de la sécurité (sans parler des autres avantages qu'elle offre), l'immuabilité est définitivement un atout dans un système d'exploitation.

Immuabilité des conteneurs

Ce n'est pas le lieu pour décrire en détail les conteneurs (également appelés "conteneurs Linux" ou, moins fréquemment ou plus précisément de nos jours, "conteneurs Docker"), mais ce sont essentiellement des collections de logiciels que vous créez sous forme d'images, puis exécutez charges de travail sur un serveur hôte (parfois appelé "pod"). L'un des avantages des conteneurs est qu'ils sont généralement rapides à lancer (provisionner et exécuter) à partir d'une image, et un autre est que le format de cette image (le format d'emballage) est bien défini, il est donc facile à créer les images elles-mêmes.

De notre point de vue, cependant, ce qui est génial avec les conteneurs, c'est que vous pouvez choisir de les utiliser de manière immuable. En fait, c'est ainsi qu'ils sont généralement utilisés :l'utilisation de conteneurs mutables est généralement considérée comme un anti-modèle. La manière standard (et "correcte") d'utiliser les conteneurs consiste à regrouper chaque composant d'application et les dépendances requises dans un conteneur bien défini (et, espérons-le, petit), puis à le déployer selon les besoins. La façon dont les conteneurs sont conçus ne signifie pas que vous ne pouvez pas modifier l'un des logiciels du conteneur en cours d'exécution, mais la façon dont ils s'exécutent vous décourage de le faire ; ce qui est bien, car vous ne devriez certainement pas.

N'oubliez pas qu'un logiciel immuable offre une meilleure connaissance et améliore votre résistance aux compromis d'exécution. Au lieu de cela, compte tenu de la légèreté des conteneurs, vous devez concevoir votre application de manière à ce que, si nécessaire, vous puissiez simplement supprimer l'instance de conteneur et la remplacer par une instance d'une image mise à jour.

Cette considération nous amène à deux des raisons pour lesquelles vous ne devriez jamais exécuter de conteneurs avec le privilège root. Premièrement, les utilisateurs légitimes sont tentés d'utiliser ce privilège pour mettre à jour le logiciel dans un conteneur en cours d'exécution, ce qui réduit la connaissance et peut introduire un comportement inattendu. Deuxièmement, il existe de nombreuses autres possibilités de compromission si un acteur malveillant (humain ou automatisé) peut modifier le logiciel sous-jacent dans le conteneur.

Double immutabilité avec Silverblue

J'ai mentionné ci-dessus que Silverblue exécute des applications dans des conteneurs. Cela signifie que vous disposez de deux niveaux de sécurité fournis par défaut lorsque vous exécutez des applications sur un système Silverblue :l'immuabilité du système d'exploitation et l'immuabilité du conteneur.

En tant que gars de la sécurité, j'approuve la défense en profondeur, et c'est un exemple classique de cette propriété. J'apprécie également le fait de pouvoir contrôler ce que j'exécute (et les versions) avec beaucoup plus de facilité que si j'étais sur un système d'exploitation standard.

Cet article a été publié à l'origine sur Alice, Eve et Bob, un blog sur la sécurité.


Linux
  1. Surveillez votre système Linux dans votre terminal avec procps-ng

  2. Comprendre les appels système sous Linux avec strace

  3. Dans les coulisses avec les conteneurs Linux

  4. Équilibrer la sécurité Linux avec la convivialité

  5. Howto :Programmation en C avec des répertoires sous Linux

Comment surveiller le système Linux avec la commande Glances

Comment sauver votre système Windows ou Linux avec Rescatux

Commande de disponibilité Linux avec exemples

Premiers pas avec le système d'exploitation Linux

Trouver des informations sur le matériel du système Linux avec Hwinfo

Comment afficher les statistiques du système Linux avec Saidar