Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
💥 Les 22 & 23 novembre : Accès 100% GRATUIT
à la Bibliothèque Numérique ENI. Je m'inscris !
  1. Livres et vidéos
  2. Debian GNU/Linux
  3. Outils de mise à jour
Extrait - Debian GNU/Linux Maîtrisez la sécurité du système
Extraits du livre
Debian GNU/Linux Maîtrisez la sécurité du système
2 avis
Revenir à la page d'achat du livre

Outils de mise à jour

Mise en place d’un repository

À quoi bon sécuriser un serveur ou une application, si on ne prend pas le temps de mettre à jour le système d’exploitation. Sur les distributions GNU/Linux, il existe un gestionnaire de paquetages, propre à la distribution concernée, permettant de gérer efficacement les mises à jour du système, ainsi que les dépendances liées aux différents paquetages nouvellement installés. Nous allons voir comment gérer un référentiel d’applications, sous forme de paquetages (ou packages en anglais), permettant d’installer de nouveaux logiciels. Il faut noter qu’il existe deux grandes familles de distributions Linux, possédant chacune son outillage permettant les mises à jour :

  • Debian : avec le gestionnaire de paquetage apt (Advanced Packaging Tool)

  • CentOS : avec le gestionnaire de paquetage yum

En ce qui concerne cet ouvrage, on ne s’intéressera ici qu’à l’utilitaire apt, permettant de gérer les paquetages et leurs dépendances sur des distributions Debian.

Au travers d’exemples précis, nous allons alors voir comment utiliser la suite aptitude (ou apt en abrégé) sur un environnement Debian, et surtout comment sécuriser le système, au travers de signatures électroniques, à base de clés GPG. Nous terminerons ce tour d’horizon par un survol du gestionnaire de versionning github permettant de stocker et de gérer les différentes versions applicatives des projets open source déployés sur des plateformes Linux. Au passage, on verra comment automatiser les mises à jour GNU/Linux grâce à l’utilitaire Puppet permettant de créer les modules et les mécanismes d’automatisation pour les différents processus de mise à jour.

1. Gestionnaire de paquets

Debian, comme toute bonne distribution Linux, fournit une multitude d’applications sous forme de packages (paquetages ou encore paquets) au format .deb. Un paquet est un ensemble de fichiers d’une application ou d’une partie, compressés dans un format spécial. Il possède généralement un nom formaté selon le modèle suivant :

images/I06EP01.png

Cet ensemble contient à la fois...

Gestion des signatures GPG

1. Le projet GnuPG

Le logiciel Gnu Privacy Guard, abrégé en GPG, est une implémentation GNU du standard OpenPGP, définie par la norme RFC 4880, et distribuée selon les termes de la licence publique générale GNU. Ce programme permet la transmission de messages électroniques signés et chiffrés, garantissant, de ce fait, leur authenticité, leur intégrité ainsi que leur confidentialité. Le projet a été initié à la fin des années 1990 par Werner KOCH, dans le but de remplacer la suite PGP de logiciels cryptographiques asymétriques, par une alternative de logiciel libre. Ses travaux ont été, en grande partie, financés par le ministère fédéral de l’économie allemand. La première version stable est alors publiée le 7 septembre 1999. En décembre 2013, une première campagne de financement participatif a été lancée, lors de la sortie de la version GnuPG 2.1, dans le but de créer un site web plus attractif et d’améliorer, dans le même temps, sa documentation. Le principal inconvénient de GnuPG est, comme son prédécesseur et les procédés de chiffrement asymétrique, que la clé privée doit impérativement être enregistrée dans un endroit sécurisé. S’il s’agit d’une clé USB, il faut la conserver sur soi et garder à l’esprit que les risques de pertes ou de vols ne sont pas nuls. S’il s’agit d’un disque dur ou d’un ordinateur, on s’expose également aux risques classiques de piratage et de compromission. Depuis novembre 2014, GnuPG est maintenu par ses développeurs sous la forme de trois branches caractéristiques :

  • la branche classique : portable, mais obsolète (dernière version 1.4.2x) ;

  • la branche stable : supportant les certificats X.503 (dernière version 2.0.3x) ;

  • la branche moderne : présentant les nouvelles fonctionnalités (dernière version 2.1.1x).

Depuis sa version 2.0, GnuPG peut également s’installer sur une carte à puce. La clé privée est alors protégée par le code PIN de la carte. Cela...

Déclaration et remontée de bugs

Il peut arriver que, malgré toutes les précautions prises et l’assurance d’utiliser uniquement des sources officielles et référencées de packages, on découvre un ou plusieurs bugs liés au développement de l’outil en question. Mais alors que faire dans un tel cas de figure ? La première chose à faire est d’informer et de déclarer ces erreurs, afin d’avertir les développeurs, en premier lieu, ainsi que les utilisateurs futurs du package, ensuite. C’est le rôle de reportdebug, l’application Debian de déclaration de bugs.

1. Cas d’un nouveau bug

L’interface Debian BTS (ou Bug Tracking System) est consultable à l’adresse web suivante : http://bugs.debian.org/ et il est possible d’effectuer des recherches concernant un rapport de bug. Dans ce dernier cas, l’utilisateur est redirigé sur un formulaire de recherche.

Quelle que soit la situation dans laquelle on se trouve, cette interface répond aux différents cas de figure suivants :

Lorsque l’on souhaite accéder à un rapport de bug concernant l’ensemble des paquets d’une même source, il suffit d’aller à l’adresse : http://bugs.debian.org/src:<Package>. Voici à quoi peut ressembler un formulaire de déclaration d’un nouvel élément, qu’il s’agisse d’un nouveau bug ou d’une erreur au sein d’un package installé :

images/rp423.png

Pour pouvoir déclarer...

Automatisation pilotée par Puppet

Le plus souvent se pose effectivement la question d’homogénéisation des installations effectuées sur les différents serveurs d’une infrastructure. Pour régler ce problème, on peut utiliser un logiciel de déploiement et d’automatisation tel que Puppet.

1. Définitions et architecture

Nous avons vu précédemment comment mettre à jour le système d’exploitation et comment gérer automatiquement les paquets et les dépôts. Mais, outre le mécanisme de programmation planifié via la crontab, il faut savoir qu’il existe aussi un autre moyen d’automatiser les mises à jour : Puppet. En effet, lorsque l’on gère une architecture possédant de nombreux serveurs, il peut s’avérer très utile de pouvoir complètement automatiser et reproduire les différentes configurations des machines concernées. C’est là que la suite Puppet peut aider. Il s’agit d’un logiciel libre, permettant la configuration, le déploiement et la gestion de configuration de serveurs. Cet outil est écrit en Ruby et est diffusé sous licence Apache 2.0 (pour les versions récentes). Les versions plus anciennes (c’est-à-dire inférieures à la version 2.7.0) sont sous licence GPL. La version open source permet de gérer les déploiements système et applicatifs, tout en acceptant les machines virtuelles de type EC2. Seule la version commerciale permet de gérer aussi les machines virtuelles VMware. Afin d’éviter tout problème de syntaxe, on peut utiliser Puppet en collaboration avec l’outil Geppetto qui permet d’éviter les problèmes de syntaxe. Pour le reste, Puppet est donc un gestionnaire de configurations de machines. Derrière ce terme technique se dissimule la possibilité de centraliser la configuration du système des machines, au sein d’un référentiel unique. Cela permet alors d’uniformiser le parc, et surtout de mieux gérer les évolutions au niveau des différents systèmes. Le procédé peut alors s’appliquer non seulement à une machine, mais également à un parc important et hétérogène...

Gestion de version

1. Présentation de git

Il est vrai que le monde de l’open source, et plus particulièrement celui de GNU/Linux, offre de nombreuses possibilités de chargement de logiciels. Nous avons vu précédemment comment gérer ses propres dépôts pour pouvoir garder le système à jour. Mais, lorsque l’on télécharge un programme, il faut toujours se demander si le paquet récupéré ne comporte pas de code malveillant. Ce questionnement trouve sa réponse grâce à la signature des paquets et dépôts utilisés, comme nous avons pu le voir précédemment. Toutefois, certains projets sont tellement volumineux que l’on ne peut pas les cantonner à un seul package. Il peut y avoir des dépendances et de la gestion de compatibilité. Heureusement, la communauté Linux permet de regrouper l’ensemble des projets initialisés, sous forme d’un référentiel nommé GitHub. À l’instar des terminaux d’aéroport, les utilisateurs naviguent parmi les méandres des différents projets et peuvent alors sélectionner leur « destination », en clonant un projet de référence afin de travailler dessus. GitHub s’apparente plus à un service d’hébergement et de gestion de développements de logiciels. Il utilise l’outil de gestion de versions git, fourni gracieusement par le père de Linux : Linus TORVALDS. Ce site a été développé en Ruby et Erlang, par Chris WANSTRATH, P.J. HYETT et Tom PRESTON-WERNER. Il fournit l’assurance aux utilisateurs qu’ils utilisent des sources officielles et non un quelconque code développé on ne sait où. Le site GitHub a été lancé le 10 avril 2008. Son développement a démarré le 19 octobre 2007. Le 23 décembre 2013, l’équipe GitHub atteignait les 10 millions de dépôts hébergés. Il est aujourd’hui proposé des comptes payants et des comptes gratuits pour développer plus facilement l’ensemble des projets de la communauté open source. Le terme GitHub est composé du mot "Git" lié au système...

Systèmes de distributions

Dans une infrastructure d’entreprise, le point d’achoppement, c’est la réactivité. Or, lors d’une interruption de service ou d’un crash machine, il est plus que recommandé de disposer d’un système de distribution, pour pouvoir réinstaller le plus rapidement possible le serveur défectueux. Dans le monde open source Linux, et tout particulièrement dans un environnement de calculs intensifs où le temps est précieux, deux suites permettent ce genre de service et sont distribuées avec, chacune, leurs avantages et leurs inconvénients :

  • xcat

  • FAI

1. Fonctionnement de xCAT2

La suite xCAT2 (pour eXtreme Cloud administration toolkit) est un outil d’administration et de diffusion des systèmes d’exploitation, sous forme de packages, utilisé principalement dans le cadre du déploiement de clusters de calcul. Il repose sur une architecture simple de type client-serveur et les fichiers de configuration sont positionnés au niveau du serveur maître du cluster. Ainsi, cela facilite l’administration, en n’ayant qu’un seul exemplaire de fichiers à synchroniser, grâce aux commandes xcat, sur tout ou partie des nœuds du cluster. Les informations concernant la configuration xcat sont stockées dans une base sqlite. Ainsi, chaque commande exécutée commence par interroger la base afin de récupérer les informations concernant un nœud (adresse IP, caractéristiques, mot de passe...), puis demande au daemon xcatd de l’exécuter.

Deux attributs essentiels à chaque nœud permettent de catégoriser ceux-ci au sein de la base sqlite :

  • Profile : il s’agit du profil d’installation d’un nœud permettant de déterminer :

  • le fichier de démarrage preseed à prendre en compte,

  • le fichier de synchronisation pour déployer les fichiers sur la machine à installer,

  • les scripts de pré-installation et de post-installation permettant d’affiner le processus.

  • Group : on peut ainsi répartir les nœuds sur un ou plusieurs groupes d’affinités. Cela permet aussi de les administrer, grâce aux commandes rpower, rinstall et psh afin de déterminer sur quel(s) nœud(s) exécuter ces mêmes...