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 Start, 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 ou Scaleway ?
- Choix de l’OS
- Partitionnement
- Définition des utilisateurs
- Paramètres réseau
- Installation de CentOS
- Comptes et connexion
- Configuration automatique
- Peaufiner la configuration réseau
- Activer SELinux
- Configurer le pare-feu
- Intégrer Fail2ban au pare-feu
- Synchronisation NTP avec Chrony
- Postfix minimal
- Mises à jour automatiques
Online ou Scaleway ?
Le nom de la marque Online est devenu une cible mouvante ces deux dernières années. Voici comment ça se présente du point de vue du simple consommateur.
- Cet article explique que la marque Online s’appelle désormais « Online by Scaleway ».
- Cet autre article annonce fièrement que la Dedibox fournie par Online by Scaleway s’appelle désormais « Scaleway Dedibox ».
- Le site https://www.online.net offre une redirection vers https://www.scaleway.com/fr/dedibox.
- La console https://console.online.net ne change pas mais affiche « Scaleway Dedibox » lorsqu’on se connecte.
- Les paramètres de connexion de chez Online ne permettent pas de se connecter à la nouvelle console de chez Scaleway.
J’imagine vaguement que toute cette confusion a été savamment concoctée par des experts en communication qui gagnent des salaires obscènes et « créent une synergie autour d’un café fédérateur » (vécu). En attendant que ça se tasse un peu, je continuerai à utiliser les liens habituels de chez Online, qui fonctionnent toujours.
Choix de l’OS
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 > CentOS 7 64bits > Installer CentOS.
Partitionnement
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 qui reste en
ext4
.
Le schéma de partitionnement proposé par défaut mérite une remarque. Online affiche 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.
Sur une Dedibox Start-1-L-SATA, on aura quelque chose comme ceci.
Définition des utilisateurs
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.
Paramètres réseau
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
Installation de CentOS
Il ne reste plus qu’à cliquer sur Effacer l’intégralité de mes disques durs pour procéder à l’installation.
L’installation du système initial dure une petite heure.
Comptes et connexion
Mettre en place l’authentification par clé SSH pour travailler plus confortablement.
$ ssh-copy-id -i .ssh/id_rsa.pub microlinux@sd-100246.dedibox.fr
Dans la configuration par défaut, l’utilisateur initial créé par l’installateur ne peut pas utiliser la commande sudo
.
$ su - # usermod -a -G wheel microlinux # exit $ exit
Redéfinir les mots de passe pour l’utilisateur initial et pour root
.
$ passwd $ sudo passwd root
Configuration automatique
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 Gitlab.
$ git clone https://gitlab.com/kikinovak/centos.git
Le répertoire centos
fournit un script de configuration post-installation.
$ cd centos/ $ sudo ./centos-7.x-setup.sh --setup
Le script gère automatiquement les opérations suivantes :
- Configurer Bash et Vim.
- Passer le système en anglais pour
root
. - Configurer les dépôts de paquets officiels et tiers.
- Installer les groupes de paquets
[Core]
et[Base]
. - Récupérer quelques outils supplémentaires.
- Supprimer une poignée de paquets inutiles.
- Rendre les logs système accessibles à l’utilisateur initial.
- Désactiver l’IPv6 et reconfigurer les services de base.
- Rendre le mot de passe persistant pour
sudo
.
Éventuellement, passer le système en anglais pour l’utilisateur initial.
# ~/.bashrc
LANG=en_US.utf8
export LANG
Peaufiner la configuration réseau
Vérifier si NetworkManager est démarré.
$ systemctl status NetworkManager
Afficher les interfaces réseau gérées par NetworkManager.
$ nmcli dev DEVICE TYPE STATE CONNECTION eth0 ethernet connecté System eth0 lo loopback non-géré --
Configurer la connexion.
$ sudo nmtui
- Supprimer la connexion existante
System eth0
. - Éditer la connexion
Wired connection 1
. - Remplacer le nom de profil
Wired connection 1
parWAN
. - Passer
IPv4 CONFIGURATION
deAutomatic
àManual
. - Cliquer sur
Show
pour afficher les détails. - Fournir l’adresse IP du serveur en notation CIDR, par exemple
163.172.220.174/24
. - Renseigner l’adresse IP de la passerelle dans le champ
Gateway
. - Ne rien indiquer dans les champs
DNS server
etSearch domains
. - Passer
IPv6 CONFIGURATION
deAutomatic
àIgnore
. - Confirmer par
OK
. - Revenir à la fenêtre principale.
- Activer la connexion
WAN
:Activate a connection
>WAN
- Quitter NetworkManager TUI :
Quit
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.
sd-100246
Veillez à ne surtout pas ajouter de commentaires dans ce fichier, sous peine de provoquer toute une série d’erreurs bizarres.
Activer SELinux
SELinux est désactivé dans la configuration par défaut chez Online.
Dans un premier temps, activer SELinux en mode permissif.
# /etc/selinux/config
SELINUX=permissive
SELINUXTYPE=targeted
Procéder à un réétiquetage du système de fichiers.
$ sudo touch /.autorelabel $ sudo reboot
Compter cinq bonnes minutes pour un réétiquetage complet.
Lancer un audit SELinux.
$ sudo sealert -a /var/log/audit/audit.log
Éventuellement, restaurer le contexte par défaut comme indiqué.
$ sudo restorecon -v /etc/ld.so.cache
Vérifier si l’intervention a réglé le problème.
$ echo | sudo tee /var/log/audit/audit.log $ sudo reboot
Relancer un audit.
$ sudo sealert -a /var/log/audit/audit.log 100% done found 0 alerts in /var/log/audit/audit.log
Passer en mode renforcé par défaut.
# /etc/selinux/config
SELINUX=enforcing
SELINUXTYPE=targeted
Activer le mode renforcé.
$ sudo setenforce 1
Configurer le pare-feu
Vérifier si le pare-feu FirewallD est lancé.
$ systemctl status firewalld
Le serveur dispose d’une interface réseau eth0
avec une ouverture frontale sur Internet.
$ nmcli con show NAME UUID TYPE DEVICE WAN f1f2025e-dbed-3596-b314-371972966e30 ethernet eth0
Dans la configuration par défaut, cette interface est associée à la zone public
.
$ firewall-cmd --get-active-zones public interfaces: eth0
Inscrire la zone explicitement dans la configuration de l’interface réseau.
$ echo "ZONE=public" | sudo tee -a /etc/sysconfig/network-scripts/ifcfg-WAN
Afficher la configuration de la zone.
$ sudo firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Supprimer dhcpv6-client
pour ne garder que le seul service ssh
.
$ sudo firewall-cmd --permanent --remove-service=dhcpv6-client success $ sudo firewall-cmd --reload success
Intégrer Fail2ban au pare-feu
Installer Fail2ban.
$ sudo yum install fail2ban-server fail2ban-firewalld
Créer un fichier /etc/fail2ban/jail.d/sshd.local
pour protéger le service SSH
contre les attaques par force brute.
# /etc/fail2ban/jail.d/sshd.local
[DEFAULT]
bantime = 86400
ignoreip = 78.197.22.147 163.172.63.88
[sshd]
enabled = true
Basculer SELinux en mode permissif.
$ sudo setenforce 0
Activer et démarrer le service.
$ sudo systemctl enable fail2ban --now
Régler un problème relatif à SELinux.
$ sudo ausearch -c 'f2b/server' --raw | sudo audit2allow -M my-f2bserver $ sudo semodule -i my-f2bserver.pp
Alternativement :
$ sudo ausearch -c 'f2b/f.sshd' --raw | sudo audit2allow -M my-f2bfsshd $ sudo semodule -i my-f2bfsshd.pp
Vérifier si le problème est réglé.
$ echo | sudo tee /var/log/audit/audit.log $ sudo systemctl restart fail2ban $ sudo sealert -a /var/log/audit/audit.log 100% done found 0 alerts in /var/log/audit/audit.log
Repasser en mode renforcé.
$ sudo setenforce 1
Afficher les adresses IP bannies.
$ sudo fail2ban-client status sshd
Synchronisation NTP avec Chrony
Supprimer ntp
s’il est installé.
$ sudo yum remove ntp
Vérifier si Chrony est installé.
$ rpm -q chrony chrony-3.4-1.el7.x86_64
Configurer Chrony.
# /etc/chrony.conf
server 0.fr.pool.ntp.org iburst
server 1.fr.pool.ntp.org iburst
server 2.fr.pool.ntp.org iburst
server 3.fr.pool.ntp.org iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
logdir /var/log/chrony
Activer et démarrer le service.
$ sudo systemctl enable chronyd --now
Afficher la liste des serveurs auxquels on est connecté et vérifier la synchronisation.
$ chronyc sources 210 Number of sources = 4 MS Name/IP address Stratum Poll Reach LastRx Last sample =========================================================================== ^- ntp2k.versadns.com 2 6 17 23 -1162us[ +85us] +/- 127ms ^- reinhardt.pointpro.nl 2 6 17 24 +4042us[+5290us] +/- 33ms ^* 46-243-26-34.tangos.nl 1 6 17 23 -2618us[-1371us] +/- 8551us ^+ debmirror.tuxis.net 2 6 17 24 +3501us[+4749us] +/- 20ms
Postfix minimal
Vérifier si Postfix et la commande mail
sont installés.
$ rpm -q postfix mailx postfix-2.10.1-7.el7.x86_64 mailx-12.5-19.el7.x86_64
Vider /etc/postfix/main.cf
et adapter la configuration suivante.
# /etc/postfix/main.cf # # Minimal Postfix configuration for Internet-facing servers # Disable IPv6 inet_protocols = ipv4 # Outbound mail only mailbox_size_limit = 0 inet_interfaces = localhost # Banner smtpd_banner = $myhostname ESMTP $mail_name (CentOS) # Host myhostname = sd-100246.dedibox.fr # Domain mydomain = dedibox.fr # Domain that appears in mail posted on this machine myorigin = $myhostname # Authorize local machine only mynetworks = 127.0.0.0/8 # Deliver mail directly to the Internet relayhost = # Local aliasing alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases # Debugging debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5 # Command paths sendmail_path = /usr/sbin/sendmail.postfix newaliases_path = /usr/bin/newaliases.postfix mailq_path = /usr/bin/mailq.postfix # Documentation manpage_directory = /usr/share/man sample_directory = /usr/share/doc/postfix-2.10.1/samples readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES
Éditer la table de correspondance.
# /etc/aliases # Basic system aliases -- these MUST be present. mailer-daemon: postmaster postmaster: root # General redirections for pseudo accounts. bin: root daemon: root adm: root ... # trap decode to catch security attacks decode: root # Person who should get root's mail root: info@microlinux.fr
Construire le fichier indexé.
$ sudo newaliases
Activer et démarrer Postfix.
$ sudo systemctl enable postfix --now
Vérifier si Postfix tourne correctement.
$ systemctl status postfix $ sudo cat /var/log/maillog
Envoyer un mail vers un compte externe.
$ mail info@microlinux.fr Subject: Test Postfix Ceci est un test. . EOT
Mises à jour automatiques
Installer le service de mises à jour automatiques.
$ sudo yum install yum-cron
Adapter la configuration suivante.
# /etc/yum/yum-cron.conf
[commands]
update_cmd = default
update_messages = yes
download_updates = yes
apply_updates = yes
random_sleep = 0
[emitters]
system_name = betadine.microlinux.fr
emit_via = email
output_width = 79
[email]
email_from = root@localhost
email_to = info@microlinux.fr
email_host = localhost
[groups]
group_list = None
group_package_types = mandatory, default
[base]
debuglevel = -2
mdpolicy = group:main
Activer et démarrer le service.
$ sudo systemctl enable yum-cron --now
Conclusion
Nous disposons à présent d’une installation serveur qui constitue l’équivalent d’une pâte à crêpes. À nous de voir si nous préférons les crêpes salées ou sucrées, si nous mettons de la confiture ou du Nutella, etc.
En l’occurence, cette base nous servira par la suite pour configurer un serveur web, un serveur mail, un serveur de messagerie ou de stockage réseau, un serveur de flux audio, etc.
La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.
3 commentaires
Natalia · 28 juin 2020 à 3 h 51 min
Bonjour,
Merci pour ce tuto efficace ! J’ai une difficulté cependant pour peaufiner la connexion : en faisant tout ce qui précède comme il faut (je crois, pas vu d’erreur), les fichiers /etc/resolv.conf et /etc/hostname sont corrects, en revanche le fichier /etc/hosts n’est pas bon :
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
Avez-vous une idée de ce que cloche ?
kikinovak · 28 juin 2020 à 7 h 34 min
Oui. Le nom d’hôte n’a pas été défini lors de l’installation. Mais ce n’est pas grave, il suffit de rectifier le tir à la main.
Donc, si votre serveur s’appelle
sd-123456.dedibox.fr
, faites simplement ceci.Un gentil bonjour de la garrigue gardoise.
Hervé · 10 mars 2021 à 16 h 07 min
Je laisse un commentaire juste pour dire le plaisir que j’ai eu à lire cette phrase :
« J’imagine vaguement que toute cette confusion a été savamment concoctée par des experts en communication qui gagnent des salaires obscènes »
Excellent. Merci ! ?
Les commentaires sont fermés.