Démarrage du système sous CentOS 7 Le processus de démarrage Il est important d
Démarrage du système sous CentOS 7 Le processus de démarrage Il est important de comprendre le processus de démarrage de Linux pour pouvoir résoudre les problèmes qui peuvent y survenir. Le processus de démarrage comprend : Le démarrage du BIOS Le BIOS (Basic Input/Output System) effectue le test POST (power on self test) pour détecter, tester et initialiser les composants matériels du système. Il charge ensuite le MBR (Master Boot Record). Le Master boot record (MBR) Le Master Boot Record correspond aux 512 premiers bytes du disque de démarrage. Le MBR découvre le périphérique de démarrage et charge le chargeur de démarrage GRUB2 en mémoire et lui transfert le contrôle. Les 64 bytes suivantes contiennent la table de partition du disque. Le chargeur de démarrage GRUB2 (Bootloader) Le chargeur de démarrage par défaut de la distribution CentOS 7 est GRUB2 (GRand Unified Bootloader). GRUB2 remplace l’ancien chargeur de démarrage Grub (appelé également GRUB legacy). Le fichier de configuration de GRUB 2 se situe sous /boot/grub2/grub.cfg mais ce fichier ne doit pas être directement édité. Les paramètres de configuration du menu de GRUB2 se trouvent sous /etc/default/grub et servent à la génération du fichier grub.cfg. Exemple de fichier /etc/default/grub # cat /etc/default/grub GRUB_TIMEOUT=5 GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="rd.lvm.lv=rhel/swap crashkernel=auto rd.lvm.lv=rhel/root rhgb quiet net.ifnames=0" GRUB_DISABLE_RECOVERY="true" Si des changements sont effectués à un ou plusieurs de ces paramètres, il faut lancer la commande grub2-mkconfig pour régénérer le fichier /boot/grub2/grub.cfg. [root] # grub2-mkconfig –o /boot/grub2/grub.cfg GRUB2 cherche l’image du noyau compressé (le fichier vmlinuz) dans le répertoire /boot. GRUB2 charge l’image du noyau en mémoire et extrait le contenu du fichier image initramfs dans un dossier temporaire en mémoire en utilisant le système de fichier tmpfs. Le noyau Le noyau démarre le processus systemd avec le PID 1. root 1 0 0 02:10 ? 00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 23 systemd Systemd est le père de tous les processus du système. Il lit la cible du lien /etc/systemd/system/default.target (par exemple /usr/lib/systemd/system/multi-user.target) pour déterminer la cible par défaut du système. Le fichier défini les services à démarrer. Systemd positionne ensuite le système dans l’état défini par la cible en effectuant les tâches d’initialisations suivantes : 1. Paramétrer le nom de machine 2. Initialiser le réseau 3. Initialiser SELinux 4. Afficher la bannière de bienvenue 5. Initialiser le matériel en se basant sur les arguments fournis au kernel lors du démarrage 6. Monter les systèmes de fichiers, en incluant les systèmes de fichiers virtuels comme /proc 7. Nettoyer les répertoires dans /var 8. Démarrer la mémoire virtuelle (swap) Protéger le chargeur de démarrage GRUB2 Pourquoi protéger le chargeur de démarrage avec un mot de passe ? 1. Prévenir les accès au mode utilisateur Single – Si un attaquant peut démarrer en mode single user, il devient l’utilisateur root. 2. Prévenir les accès à la console GRUB – Si un attaquant parvient à utiliser la console GRUB, il peut changer sa configuration ou collecter des informations sur le système en utilisant la commande cat. 3. Prévenir les accès à des systèmes d’exploitation non sécurisés. S’il y a un double boot sur le système, un attaquant peut sélectionner au démarrage un système d’exploitation comme DOS qui ignore les contrôles d’accès et les permissions des fichiers. Pour protéger par mot de passe le GRUB2 : Retirer –unrestricted depuis la déclaration principale CLASS= dans le fichier /etc/grub.d/10_linux. Si un utilisateur n’a pas encore été configuré, utiliser la commande grub2- setpassword pour fournir un mot de passe à l’utilisateur root : # grub2-setpassword Un fichier /boot/grub2/user.cfg va être créé s’il n’était pas encore présent. Il contient le mot de passe hashé du GRUB. Cet commande ne supporte que les configurations avec un seul utilisateur root. Exemple de fichier /boot/grub2/user.cfg [root]# cat /boot/grub2/user.cfg GRUB2_PASSWORD=grub.pbkdf2.sha512.10000.CC6F56....A21 Recréer le fichier de configuration avec la commande grub2-mkconfig : [root]# grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub configuration file ... Found linux image: /boot/vmlinuz-3.10.0-327.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-327.el7.x86_64.img Found linux image: /boot/vmlinuz-0-rescue-f9725b0c842348ce9e0bc81968cf7181 Found initrd image: /boot/initramfs-0-rescue-f9725b0c842348ce9e0bc81968cf7181.img done Redémarrer le serveur et vérifier. Toutes les entrées définies dans le menu du GRUB vont maintenant nécessiter la saisie d’un utilisateur et d’un mot de passe à chaque démarrage. Le système ne démarrera pas de noyau sans intervention directe de l’utilisateur depuis la console. Lorsque l’utilisateur est demandé, saisir "root" ; Lorsqu’un mot de passe est demandé, saisir le mot de passe fourni à la commande grub2-setpassword. Pour ne protéger que l’édition des entrées du menu de GRUB et l’accès à la console, l’exécution de la commande grub2-setpassword est suffisante. Systemd Systemd est un gestionnaire de service pour les systèmes d’exploitation Linux. Il est développé pour : rester compatible avec les anciens scripts d’initialisation SysV, fournir de nombreuses fonctionnalités comme le démarrage en parallèle des services systèmes au démarrage du système, l’activation à la demande de démons, le support des instantanés ou la gestion des dépendances entre les services. Systemd est le système d’initialisation par défaut depuis la RedHat/CentOS 7. Systemd introduit le concept d’unités systemd. Table 1. Principaux types d’unités systemd disponibles Type Extension du fichier Observation Unité de service .service Service système Unité cible .target Un groupe d’unités systemd Unité automount .automount Un point de montage automatique pour système de fichiers Il existe de nombreux types d’unités : Device unit, Mount unit, Path unit, Scope unit, Slice unit, Snapshot unit, Socket unit, Swap unit, Timer unit. Systemd supporte les instantanés de l’état du système et leur restauration. Les points de montage peuvent être configurés comme des cibles systemd. Au démarrage, systemd créé des sockets en écoute pour tous les services systèmes qui supportent ce type d’activation et passe ces sockets à ces services aussitôt qu’elles sont démarrées. Cela rend possible la relance d’un service sans perdre un seul message qui lui est envoyé par le réseau durant son indisponibilité. La socket correspondante reste accessible et tous les messages sont mis en file d’attente. Les services systèmes qui utilisent D-BUS pour leurs communications inter-process peuvent être démarrés à la demande dès la première utilisation par un client. Systemd stoppe ou relance uniquement les services en cours de fonctionnement. Les versions précédentes de CentOS tentaient directement de stopper les services sans vérifier leur état en cours. Les services systèmes n’héritent d’aucun contexte (comme les variables d’environnements HOME et PATH). Chaque service fonctionne dans son propre contexte d’exécution. Toutes les opérations des unités de service sont soumises à un timeout par défaut de 5 minutes pour empêcher un service mal-fonctionnant de geler le système. Gérer les services systèmes Les unités de service se terminent par l’extension de fichier .service et ont un but similaire à celui des scripts init. La commande systemctl est utilisée pour afficher, lancer, arrêter, redémarrer, activer ou désactiver des services système. Les commandes service et chkconfig sont toujours disponibles dans le système et fonctionnent comme prévu, mais sont uniquement incluses pour des raisons de compatibilité et doivent être évitées. Table 2. Comparaison des utilitaires service et systemctl Service systemctl Description service name start systemctl start name.service Lancer un service service name stop systemctl stop name.service Stoppe un service service name restart systemctl restart name.service Relance un service service name reload systemctl reload name.service Recharge une configuration service name status systemctl status name.service Vérifie si un service fonctionne service name condrestart systemctl try-restart name.service Relance un service seulement s’il fonctionne service --status- all systemctl list-units --type service --all Affiche le status de tous les services Table 3. Comparaison des utilitaires chkconfig et systemctl chkconfig systemctl Description chkconfig name on systemctl enable name.service Active un service chkconfig name offsystemctl disable name.service Désactive un service chkconfig --list name systemctl status name.service Vérifie si un service fonctionne chkconfig --list systemctl list-unit-files --type service Liste tous les services et vérifie s’ils fonctionnent chkconfig --list systemctl list-dependencies --after Liste les services qui démarrent avant l’unité spécifiée Table 3. Comparaison des utilitaires chkconfig et systemctl chkconfig systemctl Description chkconfig --list systemctl list-dependencies --before Liste les services qui démarrent après l’unité spécifiée Exemples : systemctl stop nfs-server.service # ou systemctl stop nfs-server Pour lister toutes les unités chargées actuellement : systemctl list-units --type service Pour lister toutes les unités pour vérifier si elles sont activées : systemctl list-unit-files --type service systemctl enable httpd.service systemctl disable bluetooth.service Exemple de fichier .service pour le service postfix postfix.service Unit File What follows is the content of the /usr/lib/systemd/system/postfix.service unit file as currently provided by the postfix package: [Unit] Description=Postfix Mail Transport Agent After=syslog.target network.target Conflicts=sendmail.service exim.service [Service] Type=forking PIDFile=/var/spool/postfix/pid/master.pid EnvironmentFile=-/etc/sysconfig/network ExecStartPre=-/usr/libexec/postfix/aliasesdb ExecStartPre=-/usr/libexec/postfix/chroot-update ExecStart=/usr/sbin/postfix start ExecReload=/usr/sbin/postfix reload ExecStop=/usr/sbin/postfix stop [Install] WantedBy=multi-user.target Utiliser les targets system Sur CentOS7/RHEL7, le concept des niveaux d’exécution a été remplacé par les cibles Systemd. Les cibles Systemd sont représentées par des unités de cible (target units). Les unités de cible se terminent par l’extension de fichier .target et leur unique but consiste à regrouper d’autres unités Systemd dans une chaîne de dépendances. Par exemple, l’unité graphical.target, qui est utilisée pour lancer une session graphique, lance des services systèmes comme le gestionnaire uploads/s1/ demarrage-du-systeme-sous-centos-7.pdf
Documents similaires










-
72
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Mar 26, 2021
- Catégorie Administration
- Langue French
- Taille du fichier 0.1689MB