Vous êtes sur la page 1sur 23

Système d’exploitation - Linux Chapitre 1 : Démarrage de Linux & Services Réseaux

LINUX EN DÉTAIL

Étapes de Démarrage
& Services Réseau

Mohamed HARRANE Page 1


Système d’exploitation - Linux Chapitre 1 : Démarrage de Linux & Services Réseaux

 Le BIOS vérifie le système (POST)


 Bootloader 1 lancé à partir du MBR du disque dur principal
 Le Boot1oader 1 lance le bootloader 2 sur la partition /boot/
 Le Bootloader 2 charge le noyau Linux (kernel) et initrd en mémoire
 Le noyau charge les modules nécessaires (initrd) et monte la partition
root en lecture seulement
 Le noyau passe le contrôle du processus de démarrage au programme
/sbin/init.
 /sbin/init : chargement des services et outils de l'espace utilisateur,
montage des partitions répertoriées dans /etc/fstab.
 Invite de connexion de l'utilisateur

Bootloader : chargeur de démarrage


MBR : Master Boot Record

Mohamed HARRANE Page 2


Système d’exploitation - Linux Chapitre 1 : Démarrage de Linux & Services Réseaux

 Au démarrage, exécution du BIOS (Basic Input/Output System) stocké


en ROM (mémoire morte)
 Test du système, recherche et vérification des périphériques,
principalement périphérique d'amorçage du système (USB,
CDROM, disque dur, carte réseau …).
 Recherche du MBR sur le périphérique d'amorçage
• MBR (Master Boot Record) : secteur de 512 octets, contient le
bootloader, ainsi que la table de partition du disque.
 Chargement et exécution du Bootloader, suite d'instructions de
démarrage du système d'exploitation sur le périphérique.

Mohamed HARRANE Page 3


Système d’exploitation - Linux Chapitre 1 : Démarrage de Linux & Services Réseaux

 Les deux chargeurs de démarrage les plus connus : GRUB ou LILO

 Exécution divisée en deux étapes :

 le BIOS exécute un binaire de taille réduite stocké dans le MBR


 ce 1er chargeur localise et exécute un 2ème chargeur stocké à l'endroit
indiqué dans la configuration (disque dur par exemple.)

 LILO : configuration stockée dans le MBR. À chaque changement de


configuration, une écriture dans le MBR doit être faite (/sbin/lilo -v -v)

 GRUB : chargeur plus récent, lecture possible de la configuration sur


partition ext2, ext3 ou ext4 dans /boot/grub/grub.conf

Mohamed HARRANE Page 4


Système d’exploitation - Linux Chapitre 1 : Démarrage de Linux & Services Réseaux

 Affichage de l'écran de sélection des système d'exploitation ou des


différents noyaux Linux. Une sélection automatique d'un choix par défaut
est effectué au bout d'un laps de temps configurable.
 En fonction du choix, exécution d'un binaire de noyau Linux stocké dans
/boot/ ; nom de type vmlinuz-<version-noyau> (où <version-noyau>
correspond à la version du noyau spécifiée dans les paramètres du
chargeur de démarrage)
 chargement en mémoire de initrd, "image disque RAM initial" : utilisé
ensuite par le noyau pour charger des pilotes utiles au système.
 Avertissement : Supprimer le répertoire /initrd/ provoquerait un échec de
votre système, avec un message d'erreur panique au moment du
démarrage.
 Le processus de démarrage est cédé au noyau (kernel)

Mohamed HARRANE Page 5


Système d’exploitation - Linux Chapitre 1 : Démarrage de Linux & Services Réseaux

 Le noyau initialise et configure la mémoire, les processeurs, le système


E/S, les périphériques de stockage, "standards"
 Le noyau utilise ensuite initrd pour charger des pilotes et modules
spécifiques (principalement SCSI, RAID, USB) nécessaires au noyau pour
accéder au système de fichier réel et continuer le démarrage
 Le fichier /boot/initrd.img est chargé en mémoire comme un périphérique de
stockage virtuel RAMDisk (par ex. /dev/ram0)
 Ce disque virtuel RAMDisk est ensuite monté en tant que racine temporaire
du système de fichiers (/).
 Les pilotes et modules sont ensuite chargés par le noyau.
 initrd est démonté en tant que racine et la racine définitive est montée.
 À ce stade, le noyau est chargé en mémoire et est désormais opérationnel.
Il faut ensuite initialiser l'environnement utilisateur.

Mohamed HARRANE Page 6


Système d’exploitation - Linux Chapitre 1 : Démarrage de Linux & Services Réseaux

 Le programme /sbin/init finalise le processus de démarrage.


 Il est guidé par le fichier /etc/inittab qui décrit l'ensemble des processus
qui sont lancés en fonction des circonstances :
 principalement à l'initialisation du système, lorsque le système passe à un
niveau d'exécution différent (runlevel), lorsque les touches CTRL-ALT-DEL
sont pressées, etc.
 Suivant le runlevel, les processus lancés sont divers : gestionnaire de son,
serveur de mail, web, scheduler de tâches (crond), etc.
 /sbin/init devient parent ou grand-parent de tous les processus qui sont
lancés.
 init tourne tout le temps. Si init meure, tous les processus meurent.

Mohamed HARRANE Page 7


Système d’exploitation - Linux Chapitre 1 : Démarrage de Linux & Services Réseaux

 /etc/inittab lance d'abord le script


/etc/rc.d/rc.sysinit si::sysinit:/etc/rc.d/rc.sysinit
 rc.sysinit réalise les opérations d'initialisation du système :
 initialise la variable PATH pour les autres scripts
 active la partition de swap
 monte les partitions de disque dur suivant /etc/fstab
 initialise le nom du système (hostname)
 vérifie l'intégrité du système de fichiers
 démarre la gestion des quotas
 initialise le "Plug and Play"
 prépare la gestion des modules
 initialise l'horloge système
 détruit les fichiers de verrouillage

Mohamed HARRANE Page 8


Système d’exploitation - Linux Chapitre 1 : Démarrage de Linux & Services Réseaux

 init lance ensuite divers processus en fonction du niveau d'exécution


(runlevel) configuré dans inittab
 Le runlevel est le contexte dans lequel se trouve le système et qui va
induire l'arrêt ou le démarrage de processus.
 On distingue 7 runlevels différents :
 0 - Arrêt du système (Halt)
 1 - Mode mono-utilisateur
 2 - Mode multi-utilisateurs (sans NFS)
 3 - Mode Multi-utilisateurs
 4 – Non utilisé
 5 - Mode Multi-utilisateurs avec login graphique
 6 – Redémarrage du système (Reboot)
 Le runlevel peut changer pendant la vie du système. init effectue alors les
opérations correspondantes
Mohamed HARRANE Page 9
Système d’exploitation - Linux Chapitre 1 : Démarrage de Linux & Services Réseaux

 En fonction du runlevel, initab indique à init de démarrer les processus


dont les scripts de démarrage se trouvent dans le répertoire correspondant
au runlevel
Exemple : pour runlevel 5 le dossier est : /etc/rc.d/rc5.d/
 En réalité, ces scripts sont des liens symboliques vers des scripts existants
dans le répertoire /etc/rc.d/init.d/.
 On peut ainsi modifier le lien (ajouter, supprimer, renommer) sans affecter le
script auquel il fait référence
 Le nom de ces liens symboliques décrit si les processus doivent être
démarrés (S, Started) ou arrêtés (K, Killed), et dans quel ordre (le nombre
suivant la 1ère lettre du nom).
Par exemple : dans /etc/rc.d/rc5.d/ on trouve les scripts S10network et S55sshd
S10network indique que toutes les opérations relatives au démarrage du réseau
sont effectuées avant de démarrer le serveur de connexion sécurisée sshd

Mohamed HARRANE Page 10


Système d’exploitation - Linux Chapitre 1 : Démarrage de Linux & Services Réseaux

 init arrête tout d'abord tous les liens symboliques K du répertoire en


émettant la commande :
/etc/rc.d/init.d/<commande> stop
<commande> correspondant au processus à arrêter
 Elle démarre ensuite tous les liens symboliques S :
/etc/rc.d/init.d/<commande> start
Exemple : le lien S55xinetd lancera la commande :
/etc/rc.d/init.d/xinetd start
 Remarque : on peut utiliser ces mêmes scripts en tant que super-utilisateur
(root) pour démarrer ou arrêter des services.
Exemple : /etc/rc.d/init.d/httpd stop arrêtera le serveur Web Apache
 Pour les runlevels 2 à 5, le script local (S99local) pointant vers
/etc/rc.d/rc.local est le dernier à être exécuté. Ce script permet de lancer des
commandes de personnalisation du système.
Mohamed HARRANE Page 11
Système d’exploitation - Linux Chapitre 1 : Démarrage de Linux & Services Réseaux

 Après avoir exécuté tous les scripts de /etc/rc.d pour le runlevel, le script
/etc/inittab établit un processus /sbin/mingetty pour chaque console
virtuelle (invites de login) assignée à ce niveau d'exécution :
 Pour les runlevels 2 à 5 : 6 consoles virtuelles sont démarrées;
 Le runlevel 1 (mode mono-utilisateur) n'obtient qu'une console;
 Pour les runlevels 0 (arrêt) et 6 (redémarrage), aucune console n'est démarrée.
 mingetty est un getty, un gestionnaire (GET) de terminal (TTY, teletype). Le
getty attend une connexion sur les liens série. A la connexion, il configure le
lien série, demande un login et un mot de passe, puis effectue le processus
de login pour l'utilisateur.
 Pour le runlevel 5 (login graphique), /etc/inittab exécute le script
/etc/X11/prefdm qui affiche le login graphique.
 La séquence de démarrage est terminée.
Mohamed HARRANE Page 12
Système d’exploitation - Linux Chapitre 1 : Démarrage de Linux & Services Réseaux

Les services réseaux

Mohamed HARRANE Page 13


Système d’exploitation - Linux Chapitre 1 : Démarrage de Linux & Services Réseaux

 Plusieurs services réseaux disponibles


 Partage de fichiers et d'imprimantes (NFS, SMB)
 Serveurs de connexion sécurisée (sshd) ou pas
(telnet)
 Serveurs web (httpd = apache)
 Serveurs FTP (wu-ftpd, pro-ftpd, etc.)
 Etc.
 Deux moyens de démarrer ces services :
 À l'initialisation du runlevel ou par ligne de
commande
 À l'attente de connexion avec les TCP Wrappers et
Xinetd
Mohamed HARRANE Page 14
Système d’exploitation - Linux Chapitre 1 : Démarrage de Linux & Services Réseaux

 Linux offre un contrôle d'accès sécurisé fiable grâce à la mise en


œuvre du firewall IPTables
 Cependant, pour accroître la sécurité, il est recommandé d'ajouter
une couche de protection supplémentaire individuelle à chaque
service réseau démarré.
 Cette protection est offerte sur deux niveaux :
 Les TCP Wrappers (enveloppeurs réseaux) qui détermine les
machines autorisées à se connecter à chaque service
 Xinetd qui s'intercale entre les TCP Wrappers et le service
réseaux et offre un contrôle d'accès plus affiné au service réseau.

Mohamed HARRANE Page 15


Système d’exploitation - Linux Chapitre 1 : Démarrage de Linux & Services Réseaux

 Les enveloppeurs TCP offrent un contrôle d'accès basé sur le nom ou


l'adresse de la machine qui tente la connexion
 Lorsqu'une tentative de connexion à un service est effectuée
 L'enveloppeur TCP contrôle l'accès en fonction des fichiers
/etc/hosts.allow et /etc/hosts.deny
 Il loggue (enregistre) ensuite les informations de connexion dans le
fichier de logs /var/log/secure ou /var/log/messages
 Si l'accès est donné, l'enveloppeur TCP n'interfère plus dans le processus
de communication entre le serveur et le client
 Les enveloppeurs TCP sont ainsi complètement transparents dans le
contrôle d'accès à un serveur
 Ils offrent de plus une gestion centralisée de l'accès aux services réseaux

Mohamed HARRANE Page 16


Système d’exploitation - Linux Chapitre 1 : Démarrage de Linux & Services Réseaux

 xinetd est un super-service enveloppé dans un enveloppeur TCP


contrôlant l'accès à un sous-réseau de services réseaux comme ftpd,
telnetd, etc.
 En ce sens, xinetd est un super-service car il centralise l'accès à
d'autres services réseaux et permet de les contrôler plus finement.
 xinetd offre une collection complète de gestion du service, allant du
simple contrôle d'accès à la redirection réseau, en passant par la
gestion des ressources et l'enregistrement de connexion (logging).
 C'est un service très puissant. Cependant, beaucoup de services
décident de contrôler eux-mêmes l'accès et se passent de xinetd.
 Exemple : Samba (httpd), sshd

Mohamed HARRANE Page 17


Système d’exploitation - Linux Chapitre 1 : Démarrage de Linux & Services Réseaux

 Xinetd écoute sur certains ports réseaux associés à des services.


 Lors d'une tentative de connexion à un service réseau géré par
xinetd :
 Une première vérification d'accès est faite par l'enveloppeur TCP
 Si l'accès est autorisé, xinetd vérifie l'accès et les modalités de
démarrage du service en fonction de sa propre configuration
pour ce service.
 Si l'accès est autorisé par xinetd, une instance du service est
démarrée à qui la connexion est cédée. xinetd n'intervient plus
alors dans le processus de communication entre le serveur et le
client.
 Xinetd gère les nouvelles tentatives de connexion à ce service, et
en fonction des ressources allouées, décide s'il doit lancer une
nouvelle instance de ce service.

Mohamed HARRANE Page 18


Système d’exploitation - Linux Chapitre 1 : Démarrage de Linux & Services Réseaux

 /etc/xinetd.conf : configuration globale de xinetd


 Le répertoire /etc/xinetd.d/ : fichiers de configuration
spécifiques au service :
 Un seul fichier est nécessaire, mais organisation plus simple
avec un fichier pour chaque service.
• includedir /etc/xinetd.d (dans xinetd.conf)
 La plupart des directives de configuration globale sont héritées
aux services.

Mohamed HARRANE Page 19


Système d’exploitation - Linux Chapitre 1 : Démarrage de Linux & Services Réseaux

 Paramètres généraux lus une seule fois au démarrage de


xinetd.
 Lors de changement dans la configuration, nécessaire de
redémarrer xinetd
 Exemple :
defaults
{
instances = 60
log_type = SYSLOG authpriv
log_on_success = HOST PID
log_on_failure = HOST
cps = 25 30
}
includedir /etc/xinetd.d

Mohamed HARRANE Page 20


Système d’exploitation - Linux Chapitre 1 : Démarrage de Linux & Services Réseaux

 Instances : nombre de requêtes maximum que xinetd peut gérer.


 log_type : les logs sont envoyées à syslogd avec la facilité authpriv.
Pour enregistrer directement dans un fichier sans envoyer à
syslogd: FILE /var/log/xinetdlog
 log_on_success : enregistrer les connexions réussies. Par défaut,
l'adresse IP de la machine et l’Identifiant du prcessus du server
lancé sont enregistrés.
 log_on_failure : enregistrer les connexions non-réussites ou non-
autorisées.
 Cps : nombre de connexion / seconde pour chaque service. Si cette
limite est atteinte, le service est inaccessible pendant 30s.
 includedir /etc/xinetd.d/ : inclus les options de configurations pour
chaque service, sous la forme d'un fichier spécifique.

Mohamed HARRANE Page 21


Système d’exploitation - Linux Chapitre 1 : Démarrage de Linux & Services Réseaux

 Ce répertoire contient les fichiers de configuration


spécifiques à chaque service. Comme xinetd.conf, lus au
démarrage de xinetd une fois pour toute.
 Exemple :
service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
disable = yes
}

Mohamed HARRANE Page 22


Système d’exploitation - Linux Chapitre 1 : Démarrage de Linux & Services Réseaux

 Service : nom du service. Correspond en général aux services


définis dans /etc/services file.
 Flags : définis les attributs de la connexion. REUSE ordonne à
xinetd de réutiliser le socket pour une connexion Telnet
 socket_type : définit le type de socket à stream
 Wait : le service est simple-tâche (yes) ou multitâches (no) ?
 User : sous quel utilisateur le service doit être lancé
 Server : définit le programme à lancer
 log_on_failure : paramètres à enregistrer en cas de connexion
réussie, en plus des paramètres par défaut définis dans xinetd.conf
 Disable : définit si le service est active ou pas

Mohamed HARRANE Page 23

Vous aimerez peut-être aussi