Comment fonctionne Nmap ? Guide complet | Jedha
Outil très utilisé par les administrateurs en informatique, Nmap (Network Mapper) aide à décrypter avec précision la cartographie du réseau. Présentation avec Jedha.
Appareil technologique complexe, l'ordinateur fonctionne grâce à tout un ensemble de systèmes. L'un des éléments qui intervient dans le fonctionnement de cette machine est le Kernel ou noyau de système d'exploitation. C'est un logiciel à part entière. Son action permet à l'ordinateur d'exécuter différentes tâches lorsqu'il est sollicité. À quoi correspond le Kernel ?
Kernel est un terme anglais qui signifie en français « noyau ». Il constitue le cœur du système qui exploite un ordinateur. Il établit la communication entre la partie matérielle et la partie logicielle de l'appareil. C'est ce qui permet à l'utilisateur d'interagir avec la machine. Le Kernel met en place des mécanismes d'abstraction de l'ordinateur. Il intervient ainsi au niveau de la mémoire, du processeur et des échanges de données entre les logiciels et les périphériques.
Ce logiciel a la particularité de ne pas utiliser lui-même tous les mécanismes qu'il offre aux autres. Composant central au sein de la machine, le Kernel est soumis à une forte activité. Il est sollicité pour offrir des performances très élevées. Par conséquent, c'est l'un des éléments les plus délicats de la structure d'un ordinateur. Pour cette raison, son élaboration et sa programmation comportent d'importantes exigences. Les professionnels intervenant pour l'optimisation des noyaux de systèmes d'exploitation sont très disputés sur le marché de l'emploi dans l'informatique.
Le Kernel tient un rôle primordial dans un ordinateur grâce à sa structure conçue à cette fin. Ce composant comporte plusieurs couches. Il y a la couche la plus basse qui sert d'interface pour la communication avec l'ordinateur. Elle interagit avec les processeurs, la mémoire et les périphériques. Une autre couche s'occupe de la gestion de l'ordonnanceur, ayant ainsi une place prépondérante dans l'optimisation du temps d'exécution des tâches entre autres.
La couche supérieure s'assimile au système de fichiers. C'est à ce niveau que les processus sont délimités dans des zones précises sur le disque dur ou la mémoire vive. Au sein de l'ordinateur, le Kernel contrôle l'exécution des processus lancés par l'utilisateur.
Pour chaque processus, il dirige de bout en bout le trajet qui va du matériel du système au logiciel d'application.
Se trouvant dans l'environnement immédiat de l'interface utilisateur (ou shell), le noyau lance ou transmet des commandes. Lorsque l'utilisateur lance un processus tel que la lecture d'une chanson, un programme envoie un system call (appel système) au Kernel. Ce dernier traduit le system call en langage machine et le transmet à l'unité centrale. L'ensemble du système de commande de l'unité centrale est supervisé par le noyau qui fonctionne le plus souvent en arrière-plan. La mission du Kernel prend fin dans l'interface graphique utilisateur. C'est à ce niveau que commence l'accès de l'utilisateur.
Le Kernel remplit plusieurs fonctions précises pour l'exécution des instructions envoyées par l'utilisateur à la machine.
Le Kernel joue le rôle d'ordonnanceur de son système d'exploitation. Il se charge ainsi d'établir l'ordre dans lequel les commandes de tâches seront exécutées. L'ordonnanceur n'est utile que dans un système multitâche. Il sauvegarde et restaure le contexte des tâches. Le Kernel indique le processeur sur lequel une tâche doit être effectuée.
L'ordonnancement peut être de type coopératif ou préemptif. Dans le premier cas, les tâches sont écrites en vue de mettre en place une coopération entre elles. En effet, certaines tâches peuvent être suspendues en faveur de l'exécution d'autres. Dans un ordonnancement préemptif, le Kernel interrompt lui-même des tâches et choisit de faire exécuter les plus urgentes.
Le Kernel a également pour fonction de gérer le matériel. Pour ce faire, il met à profit des pilotes périphériques qui sont des logiciels assez légers destinés à un matériel précis. Selon le nombre d'accès disponibles sur certains éléments, les pilotes périphériques sont très sollicités. Ils sont intégrés au Kernel qui leur permet de communiquer avec l'espace utilisateur. En revanche, lorsque les pilotes sont très lents, le noyau joue un rôle moindre, laissant une bonne partie de la charge à l'espace utilisateur.
Le Kernel est doté d'une couche qui lui permet d'agir comme un gestionnaire de mémoire. Dans ce rôle, il délimite une part de mémoire à des processus quand il le faut. La plupart du temps, les noyaux modernes ne montrent pas la localisation matérielle de la mémoire. Ils présentent plutôt au programme une mémoire virtuelle (mémoire globale uniforme). Ils sont conçus de manière à rendre la mémoire privée. Un processus ne peut ainsi pas accéder à la mémoire d'un autre processus, à l'exception des cas d'allocation spécifiques. Lorsqu'un processus essaie de le faire, il est suspendu ou annulé de façon automatique par le Kernel.
Les appels système se lancent à partir de l'espace utilisateur. Ils sont ensuite traités au niveau du Kernel qui les renvoie après dans l'espace utilisateur. Le noyau est vivement sollicité lors des system calls dont le coût est très élevé. En fait, un appel système nécessite l'utilisation de dizaines de milliers d'instructions primitives, ce qui induit des charges supplémentaires. Les délais de réalisation des tâches sont également augmentés en cas d'appel système. Les fonctions les plus exploitées sont alors délocalisées dans le Kernel qui s'en occupe directement.
Le Kernel se présente sous plusieurs formes avec des caractéristiques et des modes d'action divers.
Le noyau monolithique est un bloc qui rassemble toutes les fonctions du système et des pilotes périphériques. Le Kernel a été créé aux premières heures de l'histoire de l'informatique vers la fin des années 1960. Plus tard, pour lui conférer le plus de fonctions possible, les concepteurs augmentent sa taille, notamment celle de l'empreinte mémoire. Il y avait des dépendances entre les fonctions du noyau monolithique, ce qui rendait très difficiles la relecture et la compréhension du code.
Ce Kernel a également révélé des problèmes de portabilité de code. Des améliorations lui sont apportées dans ce sens. En effet, le noyau monolithique originel est devenu modulaire. Les fonctions principales sont ainsi rassemblées dans un bloc de code unique alors que les autres sont insérées dans divers modules qui peuvent être séparés. On retrouve le noyau monolithique modulaire avec les systèmes d'exploitation les plus utilisés sur les ordinateurs comme Windows, Linus et OS X.
Le développement du système de micronoyaux est une tentative de réponse aux faiblesses des noyaux monolithiques. Cela permettrait de réduire les fonctions dépendantes du noyau. Pour cela, la majorité des fonctions du système d'exploitation sont installées à l'extérieur du noyau, en l'occurrence dans l'espace utilisateur. Ce système regroupe de très petits noyaux qui disposent de leurs propres espaces d'adressage dans la plupart des cas.
Un dispositif de micronoyaux permet d'éloigner certaines fonctions des mécanismes critiques du système d'exploitation. Ce dernier se trouve ainsi plus performant et moins exposé au danger. Les mécanismes de communication doivent cependant assurer la transmission des messages entre les serveurs s'alourdissent, ce qui impacte les performances du système d'exploitation. Les micronoyaux sont expérimentés sur Mac OS X. Il n'existe pas encore de système d'exploitation typiquement construit avec ce type de noyaux.
Le Kernel hybride n'est rien d'autre qu'un composant créé sur la base des noyaux monolithiques et des micronoyaux. Les concepteurs de micronoyaux se sont rendu compte des faiblesses de ces derniers et ont décidé de reprendre certaines caractéristiques des noyaux monolithiques. Ainsi est né le noyau hybride dont l'exemple le plus probant est XNU de Mac OS X. Ce dernier a été conçu à partir du micronoyau Mach 3.0 qui comporte quand même un code de noyau monolithique. Sont parfois désignés comme noyaux hybrides, les noyaux monolithiques créés sur des micronoyaux. C'est le cas de L4Linux, de RTAI ou encore d'Adeos.
En plus des noyaux monolithiques, les micronoyaux et les noyaux hybrides, deux autres types, à savoir les exo-noyaux et les méta-noyaux sont de plus en plus évoqués. Néanmoins, ils ne sont pas encore réellement appliqués aux machines. Un exo-noyau se présente comme un ensemble de bibliothèques et devrait assurer ses fonctions grâce à de petits modules, en espace utilisateur. Quant au méta-noyau, il s'agit d'un bloc de logiciels qui servirait à appliquer la notion de noyau à un réseau informatique. Il sera ainsi nécessaire de créer au niveau du réseau, une couche dédiée à la gestion des périphériques.
Aussi robuste qu'il puisse être, le Kernel présente des vulnérabilités qui pourraient entraver son fonctionnement, voire mettre en danger l'ordinateur. Par exemple, son rôle dans l'ordonnancement des tâches est si important que le noyau peut montrer parfois quelques signes de faiblesse. Cela se manifestera par l'écoulement d'un temps relativement long entre l'exécution de deux instructions. Un pirate informatique peut écrire des codes pour modifier des éléments dans le but de changer l'action que devrait effectuer le Kernel.
La vulnérabilité de divulgation d'informations est un autre risque auquel le noyau est exposé. En avril 2021, des chercheurs de Cisco Talos ont découvert que ce type de vulnérabilité concerne le noyau Linux. Cela pourrait être exploité par des cyberpirates. Selon ces experts en cybersécurité, le bug peut être utilisé par un intrus pour accéder à la mémoire de la pile du Kernel. Si les pirates informatiques parvenaient à lancer certaines commandes dans la mémoire de pile non initialisée, ils pourraient contourner l'Adress space layout randomization (le placement aléatoire des zones de données dans la mémoire virtuelle).
Les chercheurs ont tout de même estimé que la vulnérabilité ne peut pas être détectée sur un réseau à distance. Si un pirate arrive à accéder au réseau, il pourrait cependant identifier cette vulnérabilité et s'en servir pour mettre à profit d'autres vulnérabilités de Linux. Il y a quelque temps, Google a indiqué qu'en 2019, la plupart des vulnérabilités de sécurité traitées provenaient de bogues liés à la sécurité de la mémoire. Des recommandations sont souvent données par les experts pour renforcer la sécurité des réseaux informatiques. Les entreprises, pour leur part, ont besoin de compétences en cybersécurité pour réduire au maximum les risques d'attaques des cybercriminels. C'est pour cela que les métiers relatifs à la sécurité informatique sont très valorisés.
Le Kernel est un composant essentiel de l'architecture d'un réseau information. La maîtrise de tout ce qui y a rapport est un atout pour les professionnels du secteur informatique. Le suivi d'une formation data, en l'occurrence sur la cybersécurité, permet de tout savoir sur le noyau. Il sera ainsi facile de détecter les failles d'un Kernel et d'y trouver des solutions afin d'éviter leur exploitation par des intrus.
La formation data pour la maîtrise du fonctionnement du Kernel s'adresse aux architectes réseau, administrateurs réseau, développeurs, spécialistes de cloud computing, chef de projet informatique, etc. Les personnes qui désirent faire leurs premiers pas dans l'informatique peuvent s'orienter vers une formation d'introduction dans le domaine avant d'accéder aux modules sur le Kernel ou la cybersécurité.