Depuis quelques années, la société Online propose une gamme de serveurs dédiés à des prix extrêmement intéressants, notamment la Dedibox SC, qui vous permet de disposer d’un accès
root
sur votre propre machine à moins de dix euros par mois. Cet article décrit de manière succincte l’installation et la configuration de CentOS 7 sur une Dedibox de type SC ou Start LTS.
Note importante : l’article initialement publié en novembre 2017 a été entièrement revu et corrigé. La procédure de post-installation est maintenant bien plus simple, étant donné qu’elle est à peu près entièrement scriptée.
- Installation de CentOS
- Connexion initiale
- Récupérer le script de post-installation
- Élaguer l’installation initiale
- Lancer le script de post-installation
- Peaufiner la configuration réseau
- Agrémenter la console pour l’utilisateur initial
- Installer un pare-feu personnalisé
- Régler les problèmes relatifs à SELinux
Installation de CentOS
Dans un premier temps, il faut procéder au choix de la machine et du système d’exploitation.
- Se connecter à la console d’Online : https://console.online.net.
- Ouvrir le menu Serveur > Liste des serveurs.
- Sélectionner la machine > Administrer > Installer.
- Distributions serveur > CentOS 7.x 64bits > Installer CentOS.
Online propose un schéma de partitionnement par défaut, que nous allons modifier.
- Réduire la taille de la partition principale pour avoir un peu de marge.
- Augmenter la taille de la partition
/boot
: 500 Mo. - La partition
/boot
sera formatée enext2
. - Augmenter la taille de la partition d’échange en fonction de la RAM disponible.
- Remplir l’espace disponible pour la partition principale.
Voici ce que l’on obtient.
Sur une Dedibox Start LTS, on aura quelque chose comme ceci.
L’écran subséquent permet de choisir le mot de passe root
, de définir un utilisateur “commun mortel” et de choisir un mot de passe pour cet utilisateur. L’installateur impose une limite de 15 caractères alphanumériques. Le cas échéant, on peut choisir un mot de passe provisoire ici et définir quelque chose de plus robuste à la première connexion.
L’interface affiche ensuite un récapitulatif des paramètres réseau de la machine. On peut éventuellement noter ces paramètres pour les avoir sous la main.
- Nom d’hôte
- Adresse IP
- Masque de sous-réseau
- IP de la passerelle
- DNS primaire et secondaire
Il ne reste plus qu’à cliquer sur Effacer l’intégralité de mes disques durs pour procéder à l’installation.
Connexion initiale
L’installation du système initial dure un peu plus d’une heure. La première connexion SSH montre qu’il y a déjà pas mal d’activité autour de notre serveur.
There were 87 failed login attempts since the last successful login.
On vérifie si tous les paquets du système initial sont bien à jour.
[root@sd-100246 ~]# yum check-update Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: centos.serverspace.co.uk * extras: centos.serverspace.co.uk * updates: mirror.econdc.com
Apparemment, l’installateur de chez Online s’est chargé d’effectuer la mise à jour initiale, ce qui semble logique.
Récupérer le script de post-installation
L’utilitaire git
ne fait pas partie d’une installation par défaut. Il va donc falloir l’installer.
# yum install git
Ensuite, récupérer le contenu de mon dépôt Github.
# cd # git clone https://github.com/kikinovak/centos-7-server-online
Élaguer l’installation initiale
Avant d’installer quoi que ce soit, on va épurer le système installé par Online pour revenir au strict minimum, c’est-à-dire l’équivalent de ce que l’on obtient sur une machine locale lorsqu’on opte pour une installation minimale.
La procédure est décrite en détail dans un article à part.
Lancer le script de post-installation
Le répertoire centos-7-server-online
contient un script postinstall.sh
. Lancer ce script.
# cd centos-7-server-lan # ./postinstall.sh
L’affichage du script est assez laconique. Pour en savoir un peu plus sur le détail et la progression des opérations, on peut ouvrir un deuxième terminal et afficher le fichier journal “à chaud”, comme ceci.
# tail -f /tmp/postinstall.log
Le script se charge automatiquement des opérations suivantes.
- Activer la gestion des Delta RPM.
- Effectuer la mise à jour initiale du système.
- Désactiver l’IPv6.
- Personnaliser le shell Bash pour
root
et les utilisateurs. - Personnaliser la configuration de Vim.
- Définir l’anglais comme langue système.
- Activer SELinux en mode permissif.
- Configurer les dépôts de paquets officiels de manière prioritaire.
- Configurer le dépôt de paquets tiers EPEL.
- Installer une panoplie d’outils système.
- Supprimer les paquets inutiles.
Peaufiner la configuration réseau
La prochaine étape consiste à mettre un peu plus d’ordre et de clarté dans les fichiers de configuration réseau. Le répertoire /etc/sysconfig/network-scripts
contient un fichier ifcfg-eth0
que nous pouvons rendre plus lisible.
# /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet ONBOOT=yes BOOTPROTO=static IPADDR=163.172.220.174 NETMASK=255.255.255.0
La passerelle sera définie dans /etc/sysconfig/network
.
# /etc/sysconfig/network GATEWAY=163.172.220.1
Les deux serveurs DNS seront renseignés dans /etc/resolv.conf
.
# /etc/resolv.conf nameserver 62.210.16.6 nameserver 62.210.16.7
Le fichier /etc/hosts
ressemblera à ceci.
# /etc/hosts 127.0.0.1 localhost.localdomain localhost 163.172.220.174 sd-100246.dedibox.fr sd-100246
Quant à /etc/hostname
, il est censé contenir le nom d’hôte pleinement qualifié, et c’est tout. Veillez à ne surtout pas ajouter de commentaires dans ce fichier, sous peine de provoquer toute une série d’erreurs bizarres.
sd-100246.dedibox.fr
Agrémenter la console pour l’utilisateur initial
Le répertoire /etc/skel
contient le profil par défaut pour les utilisateurs. On va récupérer ce profil pour l’utilisateur créé lors de l’installation.
# su - microlinux $ cp -v /etc/skel/.bash* . ‘/etc/skel/.bash_logout’ -> ‘./.bash_logout’ ‘/etc/skel/.bash_profile’ -> ‘./.bash_profile’ ‘/etc/skel/.bashrc’ -> ‘./.bashrc’ $ source ~/.bashrc $ exit
Installer un pare-feu personnalisé
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. Une couche d’abstraction à la sauce Red Hat, et qui ne nous servira pas à grand-chose. On préférera une configuration traditionnelle avec iptables
. Dans un premier temps, vérifier si les paquets iptables-*
sont installés.
# rpm -qa | grep iptables iptables-1.4.21-13.el7.x86_64 iptables-services-1.4.21-13.el7.x86_64
Activer le service correspondant.
# systemctl enable iptables # systemctl start iptables
Sous CentOS, la meilleure solution consiste à éditer un simple script Bash pour iptables
, en enregistrant la configuration à la fin du script.
# /usr/sbin/service iptables save
Copier le script centos-7-server-online/config/firewall/firewall.sh
dans un endroit approprié, par exemple /usr/local/sbin
. Adapter le script à la configuration réseau de la machine et aux services que l’on compte héberger.
# firewall.sh
Afficher la configuration du pare-feu.
# iptables -L -vn
Régler les problèmes relatifs à SELinux
Afficher les alertes SELinux.
# sealert -a /var/log/audit/audit.log 100% done found 2 alerts in /var/log/audit/audit.log
J’obtiens deux alertes. Je m’occupe d’abord de celle qui me semble le plus facilement gérable.
SELinux is preventing audispd from open access on the file /etc/ld.so.cache. ***** Plugin restorecon (94.8 confidence) suggests ****** If you want to fix the label. /etc/ld.so.cache default label should be ld_so_cache_t. Then you can run restorecon. Do # /sbin/restorecon -v /etc/ld.so.cache
Le contexte de sécurité a l’air correct.
# ls -Z /etc/ld.so.cache -rw-r--r--. root root unconfined_u:object_r:ld_so_cache_t:s0 /etc/ld.so.cache
Je restaure le contexte par défaut comme indiqué.
# restorecon -v /etc/ld.so.cache
Je vérifie si ça règle le problème.
# echo > /var/log/audit/audit.log # systemctl reboot && exit
Après redémarrage, je relance un audit.
# sealert -a /var/log/audit/audit.log 100% done found 0 alerts in /var/log/audit/audit.log