Logo CentOSCette page décrit de manière succincte l’installation et la configuration de CentOS sur un serveur de réseau local (Local Area Network). Pour plus de détails, lire la documentation officielle. CentOS 7 est officiellement supporté jusqu’au 30 juin 2024. On choisira cette branche sur du matériel raisonnablement récent qui supporte un OS 64-bits. L’installateur de CentOS 7 requiert au moins 1 Go de RAM.

Note pour les chipoteurs : le terme « serveur de réseau local » désigne ici une machine telle qu’on la trouve dans le local de serveurs d’une école, d’une mairie, d’une médiathèque ou d’une PME, par opposition à un serveur dédié installé dans un datacenter. Cette distinction purement pragmatique me sert avant tout à organiser les rubriques de ce blog.

Support d’installation

On choisira le CD minimal, mais rien n’empêche d’utiliser le DVD.

  • CentOS-7-x86_64-Minimal-1810.iso
  • CentOS-7-x86_64-DVD-1810.iso

Graver le CD ou le DVD à partir de l’ISO téléchargé.

Sur les machines dépourvues de lecteur optique comme par exemple les serveurs HP de la gamme Proliant Microserver, il faudra confectionner une clé USB d’installation. L’image ISO est hybride et peut s’écrire directement sur une clé USB.

$ sudo dd if=CentOS-7-x86_64-Minimal-1810.iso of=/dev/sdX

Démarrage

Débrancher clés USB, disques externes et autres périphériques amovibles. Autrement l’installateur les proposera au formatage.

Langue et clavier

Dans l’écran de bienvenue, sélectionner la langue (Français) et la localisation (Français – France). La disposition du clavier sera définie par le biais de l’écran principal de l’installateur.

Réseau et nom d’hôte

Le réseau n’est pas activé par défaut, il faut donc songer à l’activer explicitement.

Les noms des interfaces réseau ont changé depuis CentOS 7.0. Désormais, on n’a plus affaire à eth0, eth1, eth2, wlan0, etc. Le nouveau schéma de nommage est moins arbitraire et offre davantage de consistance en se basant sur l’emplacement physique de la carte dans la machine.

  • enp2s0
  • enp3s0
  • enp3s1
  • etc.

Pour le nom d’hôte de votre machine, choisissez-en un à votre convenance, en remplacement de localhost.localdomain par défaut. Ce n’est pas la peine de fournir un FQDN (Fully Qualified Domain Name). Un nom d’hôte simple comme centosbox, serveur-linux ou amandine suffit ici.

Date et heure

Vérifier si le fuseau horaire (Europe/Paris) est correctement configuré. Éventuellement, activer Heure du réseau et vérifier les serveurs NTP.

Désactivation de Kdump

Kdump est un mécanisme de capture lors du plantage d’un noyau. Il peut être désactivé.

Partitionnement manuel

L’outil de partitionnement graphique de CentOS est un peu spécial à prendre en main. Voici un exemple de schéma de partitionnement courant.

  • un disque RAID pour /boot de 500 MiB, formaté en ext2
  • un disque RAID pour la partition swap, équivalent à la RAM disponible
  • un disque RAID pour la partition principale, formaté en ext4

Avec deux disques, on optera pour le RAID 1. Si l’on dispose d’au moins trois disques, on pourra choisir le RAID 5 pour la partition principale et le RAID 1 pour /boot et swap.

  1. Cliquer sur Destination de l’installation.
  2. Vérifier si le ou les disques durs sont bien sélectionnés.
  3. Cocher Je vais configurer le partitionnement et cliquer sur Terminé.
  4. Dans le menu déroulant, sélectionner Partition standard au lieu de LVM.

Partition /boot

La taille de la partition /boot sera relativement réduite. Il faudra veiller à ne pas laisser s’entasser les vieux kernels sous peine de la remplir assez rapidement.

  1. Cliquer sur le bouton « + » pour créer un nouveau point de montage.
  2. Créer le point de montage /boot avec une capacité de 500 MiB ou plus.
  3. Définir le type de périphérique RAID avec un niveau 1.
  4. Choisir le système de fichiers ext2 et l’étiquette boot.
  5. Confirmer Mise à jour des paramètres.

Partition swap

Dans certains cas, la partition swap pourra être reléguée à la fin du disque par l’installateur pour une utilisation optimale.

  1. Cliquer sur le bouton « + » pour créer un autre point de montage.
  2. Créer le point de montage swap en spécifiant sa capacité en GiB.
  3. Définir le type de périphérique RAID avec un niveau 1.
  4. Choisir l’étiquette swap.
  5. Confirmer Mise à jour des paramètres.

Partition principale

La partition principale occupera tout l’espace disque restant.

  1. Cliquer sur le bouton « + » pour créer un dernier point de montage.
  2. Créer le point de montage / sans spécifier la capacité souhaitée.
  3. Définir le type de périphérique RAID et le niveau de RAID 1 ou 5.
  4. Si l’on utilise le RAID 5, il faudra revoir la capacité souhaitée à la hausse.
    Pour ce faire, on peut se servir de la valeur Espace total en bas à gauche
    de l’écran et spécifier cette valeur – voire un peu plus – dans le champ
    Capacité souhaitée. L’installateur se chargera de recalculer l’espace
    disponible en fonction de la capacité des disques et du niveau de RAID.
  5. Choisir le système de fichiers ext4 et l’étiquette root.
  6. Confirmer Mise à jour des paramètres, puis Terminé.

Choix des paquets

Dans l’écran de sélection des logiciels du DVD, on optera pour le groupe de paquets Installation minimale proposé par défaut. Le CD minimal ne laisse pas le choix de toute façon.

Utilisateur initial

Créer un utilisateur normal (par exemple microlinux) en prenant soin de cocher la case Faire de cet utilisateur un administrateur. L’utilisateur sera ajouté au groupe wheel et pourra se servir de la commande sudo.

L’expiration du mot de passe pour sudo pourra être désactivée après le redémarrage initial, en ajoutant une ligne à la fin du fichier /etc/sudoers.

# visudo
# /etc/sudoers
...
# Timeout
Defaults timestamp_timeout=-1

Chargeur de démarrage

En fonction du nombre de disques durs, il faudra installer le chargeur de démarrage manuellement sur le MBR de chaque disque. En cas de défaillance d’un des disques, on pourra toujours démarrer sur le ou les disques restants.

$ sudo grub2-install /dev/sda
$ sudo grub2-install /dev/sdb
$ sudo grub2-install /dev/sdc
$ sudo grub2-install /dev/sdd

Synchronisation de la grappe RAID

La synchronisation initiale d’une grappe RAID peut être assez longue. L’astuce suivante permet d’accélérer le processus de façon significative.

$ echo 50000 | sudo tee /proc/sys/dev/raid/speed_limit_min

Configuration provisoire du réseau

L’installation par défaut ne fournit pas la commande ifconfig, qui fait partie du paquet net-tools. Dans un premier temps, il faudra afficher la configuration réseau en utilisant la commande ip fournie par le paquet iproute2.

$ ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
 ...
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 
   qdisc mq state UP qlen 1000
 link/ether 2c:27:d7:15:54:a1 brd ff:ff:ff:ff:ff:ff
 inet 192.168.2.5/24 brd 192.168.2.255 scope global dynamic enp2s0
 ...
3: enp3s1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 
 ...
$ ip route
default via 192.168.2.1 dev enp2s0 proto dhcp metric 100

Récupérer les scripts de post-installation

L’utilitaire git ne fait pas partie d’une installation par défaut.

$ sudo yum install git

Récupérer le contenu de mon dépôt Github.

$ git clone https://github.com/kikinovak/centos

Le répertoire centos/el7/scripts fournit une série de scripts post-installation qui nous faciliteront la configuration initiale du serveur.

$ cd centos/el7/scripts/
$ ls -1
00-activer-nat.sh
00-desactiver-ipv6.sh
00-elaguer-systeme.sh
01-personnaliser-shell.sh
02-configurer-depots.sh
03-installer-base.sh
source.sh

Désactiver l’IPv6

Si nous n’utilisons pas l’IPv6, ce n’est pas une mauvaise idée de désactiver ce protocole.

$ sudo ./00-desactiver-ipv6.sh

Le script se charge de reconfigurer automatiquement les services sshd, postfix et rpcbind pour qu’ils fonctionnent correctement avec le seul protocole IPv4.

Personnaliser le shell

Le script 01-personnaliser-shell.sh installe une configuration personnalisée pour la console.

  • Il fournit une invite de commande distincte pour root et les utilisateurs.
  • Il installe une poignée d’alias pratiques.
  • Il modifie quelques options globales pour l’éditeur Vim.
  • Le système est passé en anglais pour éviter les messages en franglais.
  • Il active le framebuffer pour une meilleure lisibilité de la console.
$ sudo ./01-personnaliser-shell.sh

Dans cette configuration, root utilise la variable LANG=en_US.UTF8, alors que les utilisateurs « communs mortels » restent en français avec LANG=fr_FR.UTF8. Si l’on souhaite afficher les messages de la console en anglais pour l’utilisateur initial, il suffit d’ajouter ceci à son fichier ~/.bashrc.

# Console en anglais
LANG=en_US.UTF8
export LANG

Configurer les dépôts de paquets

Le script 02-configurer-depots.sh se charge de configurer automatiquement les dépôts de paquets pour Yum.

  • Les dépôts officiels sont configurés de manière prioritaire.
  • On passe directement par le miroir de téléchargement français de RPMFind.net.
  • Le dépôt CR (Continuous Release) est également activé.
  • Les paquets deltarpm et yum-plugin-priorities sont installés.
  • La mise à jour initiale est effectuée.
  • Les dépôts tiers EPEL, ELRepo et Nux-Dextop sont configurés.
$ sudo ./02-configurer-depots.sh

Quelques remarques :

  • J’utilise un seul miroir de téléchargement français pour mieux gérer le blocage éventuel par des proxys filtrants comme on peut en trouver dans certaines administrations françaises.
  • Le dépôt de paquets Nux-Dextop fournit une poignée de paquets multimédia dont je me sers sur les serveurs de flux audio.

Installer le système de base

Le script 03-installer-base.sh se charge d’installer un système de base cohérent. La notion de « système de base » est forcément subjective. Voilà ce que j’entends par là.

  • Le groupe de paquets Core.
  • Le groupe de paquets Base.
  • Une poignée d’outils en ligne de commande dont je me sers régulièrement.
$ sudo ./03-installer-base.sh

Configurer le réseau

Dans la configuration par défaut, le réseau est géré par NetworkManager, une couche d’abstraction à la sauce Red Hat, et qui ne sert à rien ici.

$ sudo yum remove NetworkManager-libnm

Le répertoire centos/el7/config/network-scripts contient quelques fichiers modèles pour la configuration réseau. La machine présentée ici fait office de passerelle.

Dans l’exemple, l’interface enp2s0 se situe côté Internet.

# /etc/sysconfig/network-scripts/ifcfg-enp2s0
DEVICE=enp2s0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.2.5
NETMASK=255.255.255.0

Côté réseau local, c’est l’interface enp3s1.

# /etc/sysconfig/network-scripts/ifcfg-enp3s1
DEVICE=enp3s1
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.3.1
NETMASK=255.255.255.0

L’adresse IP de la passerelle sera notée dans /etc/sysconfig/network.

# /etc/sysconfig/network 
GATEWAY=192.168.2.1

Renseigner le ou les serveurs DNS.

# /etc/resolv.conf
nameserver 192.168.2.1

Corriger la configuration du nom d’hôte.

# /etc/hosts
127.0.0.1 localhost.localdomain localhost
192.168.3.1 amandine.sandbox.lan amandine

Le fichier /etc/hostname devra juste contenir le nom d’hôte simple sans le domaine. Veillez à ne surtout pas ajouter de commentaires dans ce fichier, sous peine de provoquer toute une série d’erreurs bizarres.

amandine

Configurer le pare-feu

Depuis la version 7.0, CentOS gère le pare-feu avec firewalld, qui est au pare-feu ce que NetworkManager est au réseau. On préférera une configuration traditionnelle avec iptables.

$ sudo yum remove firewalld

Vérifier si les paquets iptables-* sont installés.

$ rpm -qa | grep iptables
iptables-1.4.21-28.el7.x86_64
iptables-services-1.4.21-28.el7.x86_64

Activer le service correspondant.

$ sudo systemctl enable iptables
$ sudo systemctl start iptables

Le répertoire centos/el7/config/firewall contient une série de fichiers modèles pour la configuration du pare-feu.

  • firewall-gateway.sh pour un serveur faisant office de passerelle
  • firewall-standalone.sh pour une machine standalone

Copier le script qui convient dans un endroit approprié en le renommant, comme par exemple ~/bin/firewall.sh. Adapter le script à la configuration réseau de la machine et aux services que l’on compte héberger, puis exécuter le script.

$ sudo ~/bin/firewall.sh

Au redémarrage du serveur, les règles iptables sont bien restaurées, mais le relais des paquets est désactivé. Pour l’activer par défaut, on peut utiliser le script 00-activer-nat.sh comme ceci.

$ cd ~/centos/el7/scripts
$ sudo ./00-activer-nat.sh

Vérifier les alertes SELinux

Pour finir, on pourra vérifier le bon fonctionnement du système de base avec SELinux.

$ getenforce
Enforcing
$ sudo sealert -a /var/log/audit/audit.log
100% done
found 0 alerts in /var/log/audit/audit.log

0 commentaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.