Logo CentOSDepuis quelques années, la société Online propose une gamme de serveurs dédiés à des prix extrêmement intéressants, notamment la Dedibox Start-2-S, qui vous permet de disposer d’un accès root sur votre propre machine pour une dizaine d’euros par mois. Cet article décrit de manière succincte l’installation et la configuration de CentOS sur une Dedibox de type Start-2-S ou Start-1-L.

Online.net

Installation de CentOS

Dans un premier temps, il faut procéder au choix de la machine et du système d’exploitation.

  1. Se connecter à la console d’Online : https://console.online.net.
  2. Ouvrir le menu Serveur > Liste des serveurs.
  3. Sélectionner la machine > Administrer > Installer.
  4. Distributions serveur > CentOS 7.x 64bits > Installer CentOS.

Online propose un schéma de partitionnement par défaut, que nous allons modifier.

  1. Réduire la taille de la partition principale pour avoir un peu de marge.
  2. Augmenter la taille de la partition /boot : 500 Mo.
  3. La partition /boot sera formatée en ext2.
  4. Augmenter la taille de la partition d’échange en fonction de la RAM disponible.
  5. Remplir l’espace disponible pour la partition principale.

Le schéma de partitionnement proposé par défaut mérite une remarque. Online propose une partition /boot d’une taille de 200 Mo par défaut. Or, depuis CentOS 7.5, la taille des images initrd (Initial RAM Disk) a considérablement augmenté. Le résultat de l’affaire, c’est une partition /boot saturée au bout de la deuxième mise à jour du noyau, et un serveur qui ne démarre plus en conséquence. J’ai signalé le problème à Online début 2018, mais apparemment ça ne leur fait ni chaud ni froid.

Voici ce que l’on obtient sur une Dedibox Start-2-S-SATA.

Partitionnement Dedibox Online

Sur une Dedibox Start-1-L-SATA, on aura quelque chose comme ceci.

Partitionnement Dedibox Online

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 (en tant que root) montre qu’il y a déjà pas mal d’activité autour de notre serveur.

There were 90 failed login attempts since the last successful login.

Dans la configuration par défaut, l’utilisateur initial créé par l’installateur (microlinux dans mon cas) ne peut pas utiliser la commande sudo. Pour changer ceci, je l’ajoute au groupe wheel.

[root@sd-100246 ~]# usermod -a -G wheel microlinux

Je me reconnecte et je vérifie si tous les paquets du système initial sont bien à jour.

[microlinux@sd-100246 ~]$ sudo yum check-update 
Modules complémentaires chargés : fastestmirror, langpacks
Determining fastest mirrors
 * base: mirror.denit.net
 * extras: mirror.ams1.nl.leaseweb.net
 * updates: centos.mirror.triple-it.nl

Apparemment, l’installateur de chez Online s’est chargé d’effectuer la mise à jour initiale, ce qui semble logique.

Éventuellement, on peut redéfinir des mots de passe plus compliqués pour root et l’utilisateur initial.

[microlinux@sd-100246 ~]$ passwd
Changement de mot de passe pour l'utilisateur microlinux.
Changement du mot de passe pour microlinux.
Mot de passe UNIX (actuel) : ********
Nouveau mot de passe : ********************
Retapez le nouveau mot de passe : ********************
passwd : mise à jour réussie de tous les jetons d'authentification.
[microlinux@sd-100246 ~]$ sudo passwd root
Changement de mot de passe pour l'utilisateur root.
Nouveau mot de passe : ********************
Retapez le nouveau mot de passe : ********************
passwd : mise à jour réussie de tous les jetons d'authentification.

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.
$ 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 de l’IRCAM.
  • 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.
  • 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

Notons que les groupes de paquets Core et Base ont déjà été récupérés par l’installateur Online, à quelques menus détails près.

Peaufiner la configuration 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

Nous pouvons 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 simple, 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

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 un fichier modèle firewall-dedibox.sh pour la configuration du pare-feu. On va copier ce script dans un endroit approprié en le renommant, par exemple /usr/local/sbin/firewall.sh. Une fois qu’on a adapté le script aux services que l’on compte héberger, il suffit de l’exécuter.

$ sudo /usr/local/sbin/firewall.sh

Activer SELinux

La politique par défaut d’Online consiste à désactiver SELinux, ce qui est un peu dommage. Dans un premier temps, on va l’activer en mode permissif en éditant /etc/selinux/config.

# /etc/selinux/config
SELINUX=permissive
SELINUXTYPE=targeted

Ensuite, on va procéder à un réétiquetage du système de fichiers.

$ sudo touch /.autorelabel
$ sudo reboot

Comptez cinq bonnes minutes pour un réétiquetage complet du système.

Je lance un audit SELinux.

$ sudo sealert -a /var/log/audit/audit.log

J’obtiens un total de trois 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 (82.4 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. The access attempt may have been stopped due to 
insufficient permissions to access a parent directory in which case try to 
change the following command accordingly. 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é.

$ sudo restorecon -v /etc/ld.so.cache 

Je vérifie si mon intervention a réglé le problème.

$ su -
# echo > /var/log/audit/audit.log
# reboot

Après redémarrage, je relance un audit.

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

Plus rien à signaler du côté de SELinux. Je peux donc passer en mode renforcé. Dans un premier temps, j’édite /etc/selinux/config comme ceci.

# /etc/selinux/config
SELINUX=enforcing
SELINUXTYPE=targeted

Ensuite, j’active le mode renforcé « à chaud ».

$ sudo setenforce 1

 

 


1 commentaire

Installer un serveur dédié CentOS 7 chez Online - My Tiny Tools · 31 décembre 2018 à 15 h 33 min

[…] (Source: Journal du hacker) […]

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.