Installation d'un serveur Centos 7 - Partie 3


Introduction

Ce texte décrit l'installation complète d'un serveur Centos 7. À des fins pédagogiques, nous allons effectuer cette installation dans une machine virtuelle dédiée, mais les procédures devraient être à peu près identiques sur une machine ou un serveur réel.

Attention toutefois : certaines considérations relatives à la sécurité sont éludées pour des raisons de simplicité. Ces procédures ne conviendraient probablement pas à un serveur fortement sollicité ou exposé aux attaques extérieures.

En raison de la relative longueur de ces procédure et du niveau de détail proposé, cette documentation se divise en trois parties :
  1. Téléchargement de l'image d'installation et création de la machine virtuelle
  2. Installation du système d'exploitation dans la machine virtuelle
  3. Configuration de base du système d'exploitation

E. Login local et par le réseau

Il nous faut à présent nous identifier et ouvrir une session sur notre machine. Cette procédure peut se faire de manière locale, directement "sur" la machine, donc dans VMWare dans notre cas. Nous pouvons commencer par là. Notre login (nom d'utilisateur est root) et notre mot de passe a été définit en cours d'installation. 
Attention : lors de la frappe de ce dernier, et dans un soucis de sécurité, rien n'est affiché à l'écran. Il en est ainsi sur tous les systèmes de type Unix en ligne de commande. À vous de ne pas vous tromper et de valider avec Enter...
Vous devriez arriver à un écran comme celui-ci si tout s'est bien passé.
Le texte [root@new-host ~]# s'appelle l'invite de commande (prompt). À sa droite, le curseur clignote, en attendant que vous inscriviez vos commandes... Celles-ci seront envoyée à un programme appelé Shell (interpréteur de commande) qui les exécutera, renverra le résultat de l’exécution et vous rendra la main...
Dans la foulée, essayez donc la commande logout qui devrait vous déconnecter et vous ramener à l'écran de login initial.
[root@new-host ~]# logout
Ceci dit, il existe plusieurs inconvénients à travailler comme cela :
  • Si l'on travaillait sur un serveur réel, cela nécessiterait de pouvoir se connecter physiquement. Or, dans de nombreux cas, ceux-ci se trouvent dans des locaux séparés, voir même dans des datacenters inaccessibles (notamment dans le cas de serveurs loués).
  • Travailler en ligne de commande n'est pas évident, le fait de disposer de fonctions de copier/coller améliore un peu l'ergonomie.
  • La résolution d'écran peut aussi se révéler pénalisant si le nombre de lignes et colonnes est trop faible.
  • Beaucoup des programmes et fonctionnalités que nous allons installer fonctionnent dans le cadre d'un réseau (LAN ou WAN), et pour les tester, le plus efficace est de travailler à partir d'une autre machine sur le réseau.

Nous allons donc travailler en nous connectant à notre session de travail à distance, via un protocole nommé SSH, Secure SHell en anglais, soit interpréteur de commande sécurisé.
Ce protocole vas nous permettre de nous "loguer" sur notre session à distance, via un programme qui nous permettra entre autre de travailler avec plus de lignes et colonnes, de faire des copier/coller, etc.
Le programme de référence se nomme Putty, il se compose d'un exécutable que vous trouverez à l'adresse suivante : http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
Vous pouvez télécharger et placer directement ce programme sur votre bureau : nous allons copieusement nous en servir !
Munissez-vous également de l'adresse IP de votre machine virtuelle, 192.168.1.21 dans notre cas, ainsi que de l'adresse de la passerelle (et éventuellement du préfixe réseau si cela vous est possible).
Il faut bien comprendre que nous allons toujours travailler sur une seule machine, mais que la différence est de taille : la machine virtuelle se comporte de manière complètement autonome.
Y accéder via Putty revient à y accéder via le réseau. Cela veut dire que si vous vous trouviez sur un autre ordinateur du réseau, vous pourriez y accéder de la même manière... En l’occurrence, vous pouvez réduire la fenêtre de VMWare, nous n'en aurons plus besoin. C'est comme si la machine sur laquelle nous allons travailler se trouvait "ailleurs" sur le réseau.
Lancez ensuite le programme pour définir les paramètres de connexion. Commencez par encoder l'adresse IP dans le champ correspondant, ainsi qu'un nom pour la connexion, dans le champ Saved Sessions. Ainsi, vous pourrez ultérieurement vous reconnecter, sans devoir refaire tous les réglages.
Ensuite, dans la rubriques Features, cochez la case Disable application keypad mode. Ceci permet de se servir sans encombre du pavé numérique dans la machine distante.
Vérifiez également, dans la rubrique Translation que le jeu de caractère distant (remote character set) est bien UTF-8. Ceci résoudra les problème de caractères accentués entre Windows et la machine distante. Windows n'utilise pas ce jeu de caractère, il est donc nécessaire d'opérer une traduction vers UTF-8, qui est le jeu de caractère par défaut de CentOS.
Ensuite, revenez sur la rubrique Session pour sauver ces réglages :
Nous sommes maintenant près à nous connecter et à retrouver notre écran de login, mais cette fois-ci à travers le réseau. Il vous sera peut-être nécessaire d'accepter un message concernant la sécurisation par clés de chiffrement.

F. Début de la configuration du serveur

L'ensemble des actions à venir nécessitent d'être connectés sur la machine, en local ou en réseau. Certaines sont des commandes à effectuer dans le Shell . D'autres consistent à éditer des fichiers de configuration. Pour cela, nous allons nous servir d'un éditeur de texte un peu rébarbatif, mais présent sur tous les système, très performant et connu de tous les administrateurs travaillant sur les systèmes Unix : Vim.
La commande "yum" sert à gérer les composants du systèmes (paquets) : installation, recherche, suppression, mise à jour, etc. Dans ce cas-ci, l'option "-y" signale que l'on accepte par défaut les demande de confirmation du programme, le paramètre "update" signifie que l'on demande une mise à jour complète du système.
On désire ensuite désactiver une fonctionnalité de sécurisation pour Linux, nommée SELinux. Celle-ci est très performante, mais également très difficile à mettre en oeuvre. Elle constituerait un obstacle tout au long de notre travail...
Le programme "sed" utilisé ici est est un éditeur de texte en ligne, dont la syntaxe est relativement difficile. L'avantage est de ne pas avoir à éditer soi-même le fichier de configuration, mais vous pouvez également le "faire la main" en éditant vous-même le fichier de configuration comme expliqué.
################ Début du processus ##########################
# Mise à jour du système et désactivation de SELinux
yum -y upgrade
yum -y install vim # installe vim, nécessaire si l'on veut éditer "à la main"
sed -i "s/^\(SELINUX=\).*$/\1disabled/" /etc/selinux/config
# ou bien
# vim /etc/selinux/config
# puis
# SELINUX=disabled
# les changements ci-dessus sont permanents, mais nécessitent
# un redémarrage de la machine.
# La commande suivant permet de désactiver directement selinux
# sans avoir à redémarrer
setenforce 0
Comme on peut le voir, yum permet d'installer plusieurs paquets à la fois. Voici en outre une brève description des paquets installés :
  • wget : utilitaire de téléchargement de fichier sans navigateur
  • epel-release : paquet permettant d'accéder à un dépôt de paquets supplémentaires, dont certains nous seront utiles
  • bash-completion : permet à l'interpréteur de "finir" à votre place les commandes que vous avez commencé à écrire
  • net-tools : divers utilitaires réseau, notamment ifconfig, dont nous aurons aussi besoin.
# Installation de paquets de base
yum -y install wget epel-release bash-completion net-tools
La section suivante va nous permettre de disposer d'une invite de commande plus ergonomique, avec des couleurs plus parlantes.
Une petite modification va aussi empêcher les beeps survenant dès l'utilisation de la complétion.
#########################
# Personnalisation de Bash
# Invite personnalisée
# vim /etc/profile.d/personnalisation_invite.sh
# copier coller le texte ci-dessous et enregistrer...
if [ $(id -u) -eq 0 ];
then # vous êtes root, invite en bleu
    export PS1="\[\e[00;36m\]\A\[\e[0m\]\[\e[00;37m\] \[\e[0m\]\[\e[00;34m\]\u\[\e[0m\]\[\e[00;33m\]@\[\e[0m\]\[\e[00;37m\]\H \[\e[0m\]\[\e[00;32m\]\w\[\e[0m\]\[\e[00;37m\] \[\e[0m\]\[\e[00;33m\]\$\[\e[0m\]\[\e[00;37m\] \[\e[0m\]"
else # si vous êtes utilisateur normal, invite en rouge
    export PS1="\[\e[00;36m\]\A\[\e[0m\]\[\e[00;37m\] \[\e[0m\]\[\e[00;31m\]\u\[\e[0m\]\[\e[00;33m\]@\[\e[0m\]\[\e[00;37m\]\H \[\e[0m\]\[\e[00;32m\]\w\[\e[0m\]\[\e[00;37m\] \[\e[0m\]\[\e[00;33m\]\$\[\e[0m\]\[\e[00;37m\] \[\e[0m\]"
fi

# empèche les beeps en cas de complétion du shell
# vim /etc/inputrc
set bell-style none
#########################
Vous pouvez tester ces modifications en vous déconnectant (logout) et en vous connectant à nouveau. Pour continuer, nous allons configurer le réseau en commençant par nous "approprier" notre adresse IP définitivement. Pour cela, il est nécessaire de désactiver la configuration par DHCP.
Notez également le nom de l'interface (ifcfg-eno16777736), qui remplace le nom basé sur l'ancienne terminologie (ifcfg-eth0). Cela a été mis en place pour définir de manière unique et prévisible le nom d'une interface réseau et éviter des problèmes, notamment en cas d'ajout ou de changement de ces cartes réseau.
Ce nom peut donc varier suivant le système sur lequel on travaille, le type de matériel, etc.
#########################
# Configuration du réseau : 
# adresse IPv4 statique
# vim /etc/sysconfig/network-scripts/ifcfg-eno16777736
BOOTPROTO="static"
# puis ajouter :
IPADDR=192.168.1.21
PREFIX=24
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=8.8.4.4
La dernière étape pour la configuration de base de notre système est de lui donner un nom. Un petit mot d'explication s'impose à ce niveau. Chaque système de type Unix, aussi appelé hôte (host), possède un nom d'hôte (host name), qu'il soit connecté à un réseau ou pas. Dans sa forme la plus simple, telle qu'elle était utilisée avant que les réseaux informatiques ne soient un problème, il s'agit juste d'un mot comme "serveur". Par contre, tout système attaché à Internet où à tout autre réseau ressemblant doit se conformer à une convention de nommage beaucoup plus rigoureuse, en tant que membre du Système de Nom de Domaine (Domain Name System - DNS). Dans la terminologie DNS, chaque nom d'hôte est composé de deux parties :
  • le "hostname" (en un mot)
  • le "domain name" - nom de domaine
  • le nom complet de l'hôte ("host name" en deux mots) est formé par la concaténation des deux : hostname + . + domain name
Ce qui nous donne donc, en détail :
  • nom simple de l'hôte (hostname): donné par la commande hostname -s (ex: serveur)
  • nom du domaine (domain name): donné par la commande hostname -d (ex: bureau.maison)
  • le nom de l'hôte complet (FQDN - fully qualified domain name) : donné par la commande hostname ou hostname -f (ex: serveur.bureau.maison)
Heureusement, en pratique, c'est beaucoup plus simple puisqu'il suffit d'éditer le fichier /etc/hostname :
# vim /etc/hostname
serveur.bureau.maison
Vous pouvez tester les différentes commandes pour vérifier
17:22 root@serveur.bureau.maison ~ $ hostname
serveur.bureau.maison
17:23 root@serveur.bureau.maison ~ $ hostname -f
serveur.bureau.maison
17:23 root@serveur.bureau.maison ~ $ hostname -s
serveur
17:23 root@serveur.bureau.maison ~ $ hostname -d
bureau.maison
Il est temps de faire un redémarrage du système pour s'assurer de la prise en compte de tous les paramètres.
17:23 root@serveur.bureau.maison ~ $ shutdown -r now