Outils noyau et initialisation
Protection dès la phase de démarrage
Nous avons déjà rappelé dans l’introduction comment le système d’exploitation GNU/Linux se mettait en place et à quoi servaient les différents éléments que sont :
-
le BIOS ;
-
le bootloader (ou chargeur au démarrage) ;
-
le noyau linux et ses modules ;
-
l’image initrd (aussi appelée initramfs) ;
-
les pseudo-systèmes de fichiers /proc et /sys.
1. Sécurisation du BIOS
Le BIOS, comme il été rappelé lors de l’introduction, est un système élémentaire d’entrées/sorties composé d’un ensemble de fonctions, elles-mêmes contenues en zone mémoire morte (aussi appelée ROM ou Read-Only Memory), de la carte mère d’un ordinateur. Ces mécanismes permettent d’effectuer certaines opérations de vérifications de l’état du matériel (mémoire, disque dur, etc.), lors de la mise sous tension de l’équipement. Chaque serveur, poste de travail ou portable possède son propre BIOS. Il existe de grandes familles de fabricants de BIOS tels que :
-
Asrock ;
-
LSI, Tekram ;
-
American Megatrends Incorporated.
Le site Internet http://www.filehelp.fr/drivers/bios liste les principaux acteurs de ce marché et il est possible d’avoir quelques précisions quant à telle ou telle carte mère. La seule véritable protection de ce sous-système consiste à positionner un mot de passe en ouvrant le menu principal du BIOS de sa machine et en allant dans le menu approprié. Il faut préciser que seuls les équipements dont l’accès n’est pas restreint et sont faciles à emporter, doivent être considérés. En effet, il n’y a aucun intérêt à mettre un mot de passe sur le BIOS d’un serveur, faisant partie d’un ensemble d’équipements au sein d’une salle machine, ou même des postes de travail dont l’accès est sécurisé dans les bureaux d’une entreprise. Cela n’a d’intérêt que pour protéger des portables pouvant être facilement perdus ou volés, d’autant qu’aujourd’hui, dans les entreprises, le personnel (internes et/ou...
Protection du noyau
1. Le noyau linux
Il s’agit d’un noyau de système d’exploitation type Unix. C’est un logiciel libre, au même titre que n’importe quel autre logiciel du monde GNU/Linux, développé essentiellement en C, par des milliers de bénévoles, communiquant au travers d’Internet. Le noyau linux est donc le cœur du système éponyme. C’est lui qui est en charge de fournir aux logiciels une interface permettant d’utiliser le matériel sous-jacent. Il a été conçu en 1991 par Linus TORVALDS, pour fonctionner sur des ordinateurs compatibles ou PC (Personal Computer), construits sur une architecture de processeur x86.
Depuis, Linux a été porté sur de nombreuses autres architectures :
|
|
RAPPEL : on distingue le noyau linux du système d’exploitation complet, généralement noté GNU/Linux et recouvrant l’intégralité des applications fonctionnant sur Linux. Le noyau linux est fondamentalement multitâche et multi-utilisateur. Il respecte les normes POSIX, faisant de lui le digne héritier des systèmes propriétaires Unix.
Le fichier vmlinuz, se trouvant dans le répertoire /boot, est une image compressée du noyau. Quant au fichier initrd.img-*, il s’agit d’une archive contenant des modules du noyau, nécessaires au démarrage du système d’exploitation. Parmi eux, se trouvent les modules concernant les systèmes de fichiers : ext3, ext4, xfs, etc. ainsi que ceux permettant la reconnaissance du matériel : contrôleur IDE, SATA (Serial Advanced Technology Attachment), périphérique, etc.
À moins de recompiler le noyau avec ces mêmes modules intégrés, le fichier initrd.img-* est obligatoire pour permettre de lancer les différentes phases de boot. Dans le cas contraire, on obtiendrait un message de type « kernel panic ». Ce même fichier contient également des programmes minimalistes tels que des shells et des programmes pour le montage et le démontage des systèmes de fichiers. Au fil des versions, il s’est étoffé : de nombreux modules y ont été ajoutés...
Installation de partition chiffrée
Avant d’aller plus loin, on est en droit de se demander ce qu’est une partition. Le partitionnement consiste à installer un système GNU/Linux permettant la prise en compte des supports de stockage de données et le fractionnement des supports physiques (disque dur, disque SAN, carte mémoire, ou clé USB), en plusieurs parties virtuelles, appelées partitions, et destinées à accueillir un ou plusieurs systèmes de fichiers. Nous aurons l’occasion de revenir sur cette notion ultérieurement.
RAPPEL : on notera que Linux identifie et organise les disques de différentes manières. Pour les médias de type SCSI ou SATA, la numérotation se fait avec un préfixe sd, suivi par une lettre (dans l’ordre de création ou d’apparition).
Exemple : liste de noms de disques SATA :
-
sda pour le disque d’identifiant 0.
-
sdb pour le second disque, d’identifiant 1.
-
sdc pour le troisième disque d’identifiant 2.
ATTENTION : les lecteurs CD/DVD, lecteurs ZIP et autres disques JAZ, apparaissent également en tant que périphériques SCSI. Par conséquent, leur représentation logique sur le système d’exploitation GNU/Linux s’affiche en sdx, selon leur rang de création ou d’apparition.
D’un autre côté, les disques de type IDE sont numérotés avec le préfixe hd, suivi par une lettre (dans l’ordre, également d’apparition et/ou de création).
Exemple
Liste de noms de disques IDE :
-
hda : pour le disque maître du premier contrôleur IDE.
-
hdb : pour le disque esclave du premier contrôleur IDE.
-
hdc : pour le disque maître du second contrôleur IDE.
La plupart des ordinateurs utilisent le modèle MBR, réservant une petite zone mémoire, en début de chaque disque. Cette zone ne peut stocker les informations que de quatre partitions au maximum, appelées alors partitions primaires. Il est possible de créer des partitions supplémentaires, en utilisant alors une des partitions primaires en tant que partition étendue jouant le rôle de conteneur. Une partition étendue peut contenir jusqu’à 32 nouvelles partitions supplémentaires qui portent alors...
Gestionnaire de volumes logiques
1. Description du LVM
Le gestionnaire de volumes logiques (aussi appelé Logical Volume Manager et abrégé en LVM) permet la création et la gestion de volumes logiques, en guise de partitions sur GNU/Linux. Son utilisation remplace, en quelque sorte, le partitionnement des disques physiques. Il s’agit en fait d’un système beaucoup plus souple permettant notamment de diminuer ou d’agrandir la taille d’un élément tel qu’un système de fichiers, de façon dynamique, sans se préoccuper de l’emplacement physique sur le disque dur. Ce mécanisme n’impose aucune limitation « étrange » concernant le nombre de partitions, comme c’est le cas pour les partitions primaires ou étendues, au niveau des périphériques physiques. Il n’est pas non plus nécessaire d’allouer la totalité de l’espace prévu, et ce qui reste peut être ajouté n’importe où et n’importe quand. Ainsi, les opérations de redimensionnement deviennent quasiment transparentes, sans risque de perte ou de corruption, contrairement au redimensionnement de partitions physiques.
Cette section pourrait très bien être déplacé et faire partie de la section de sécurisation préventive, car le gestionnaire de volumes logiques n’est pas à proprement un mécanisme actif, comme peut l’être un logiciel de chiffrement ou de recherche de rootkit. Mais, il permet une grande facilité d’administration et, avec le complément d’une matrice RAID (Redundant Array of Independant Disks), il est possible de renforcer notablement la sécurisation des données et d’anticiper les pannes éventuelles.
RAPPEL : il existe trois grandes familles de RAID permettant d’effectuer une répartition selon l’architecture souhaitée :
-
RAID 0 (aussi appelé stripping) : permettant d’augmenter significativement les performances de la grappe, en faisant travailler n disques durs en parallèle (avec n supérieur ou égal à 2).
-
RAID 1 (aussi appelé mirroring) : utilisant n disques redondants (avec n supérieur ou égal à 2) et/ou chacun des deux disques...
Commandes de base
1. De quoi s’agit-il ?
Les « magic Sysrq key » représentent une fonctionnalité du noyau linux permettant, via une combinaison ou une séquence de touches, de lancer des commandes de bas niveau. Ce mécanisme est la plupart du temps activé, sur la majeure partie des distributions, lors de la compilation du noyau.
Encore un point en faveur de la recompilation de son noyau linux pour désactiver toutes fonctionnalités essayant de contrôler les mécanismes de bas niveau, sans l’accord de l’administrateur.
La principale utilité de ces fonctions est de permettre de redémarrer un système bloqué, sans corrompre pour autant les systèmes de fichiers sous-jacents. Sur un ordinateur standard, la combinaison de touches est composée de :
-
ALT
-
Print Screen (aussi appelé SYST)
-
<Touche> déterminant l’action à effectuer
Á ce niveau d’interaction, le noyau n’est pas en mesure de tenir compte de la disposition des touches sur le clavier et interprète alors les frappes comme si elles étaient réalisées sur un clavier QWERTY. Les différentes touches possibles affectant le noyau sont les suivantes :
-
r : récupère le clavier approprié la plupart du temps par le système de fenêtrage X.
-
k : tue les processus de la console virtuelle active.
-
b : redémarre immédiatement le système, pouvant provoquer des pertes de données (mémoire cache).
-
c : redémarre le processus kexec et affiche le message du crash.
-
s : synchronise les systèmes de fichiers montés, utile pour un arrêt rapide de l’ordinateur (sans perte).
-
o : arrête le système.
-
u : bascule les systèmes de fichiers montés en lecture seule.
-
p : affiche les registres courants ainsi que les flags dans la console.
-
t : affiche la liste des tâches actives ainsi que les informations de chacune d’elles.
-
m : affiche les informations relatives à la mémoire dans la console.
-
0 à 9 : permet de définir le type de messages du noyau s’affichant dans la console.
-
f : appelle la fonction oom_kill tuant le processus consommant la mémoire disponible.
-
e : envoie le signal SIGTERM à tous les processus, excepté...
Industrialisation des installations
Nous avons vu précédemment que la phase d’installation apportait son lot de fonctionnalités permettant d’améliorer la sécurité du système dans son ensemble :
-
utilisation du gestionnaire de volumes logiques LVM
-
chiffrement des partitions
-
utilisation du mode de démarrage « Rescue »
Mais on peut se demander pourquoi ne pas aller plus loin et faire en sorte que l’on n’ait plus à installer systématiquement les machines, en passant par l’ensemble des sélections de configuration de l’installation. Cela revient à automatiser l’installation en étant ainsi capable de redémarrer une nouvelle machine, le plus rapidement possible, de façon homogène par rapport aux installations précédentes.
Comme beaucoup d’autres distributions, Debian propose l’installation automatisée de l’ensemble du système, en utilisant un fichier de préconfiguration (appelé aussi preseed.cfg), à partir d’une installation déjà réalisée, en plaçant ce fichier sur une machine distante accessible en DHCP (Dynamic Host Configuration Protocol) ou sous forme de CD/DVD ou de clé USB. Ce fichier peut aussi être constitué grâce aux valeurs récupérées d’une installation précédente, stockées dans la base interne cdebconf. Cette dernière est effectivement conservée dans le répertoire /var/log/installer/cdebconf. Elle contient des données sensibles et ne peut être lue que par le super-utilisateur.
IMPORTANT : le répertoire /var/log/installer ainsi que son contenu sont détruits en cas de purge du package installation-report. C’est dans ce répertoire que l’on trouve notamment les variables d’installation, renseignées dans le fichier templates.dat. Les valeurs affectées à ces variables sont, quant à elles, disposées dans le fichier questions.dat.
Dans le cas où l’on souhaite effectuer une installation automatisée via un CD/DVD, il faut alors générer une image ISO. Le fichier de préconfiguration est assez long à mettre au point, car il contient de nombreux...