Debian GNU/Linux (https://www.debian.org) est le système d'exploitation officiel pour tous les serveurs de l'AUF (et pour les postes clients : Ubuntu). Les raisons de ce choix sont principalement :
- intégration : plus de 59000 paquets de composants logiciels directement disponibles
suivi de sécurité assuré sur tous les paquets (à quelques exceptions précisées par le paquet debian-security-support), très simple à mettre en œuvre
Installer Debian GNU/Linux
La version actuelle est Debian 10, alias Debian Buster ou tout simplement Buster.
La procédure d'installation sur un nouveau serveur est décrite ici : https://www.debian.org/releases/stable/amd64/
Quelques recommandations spécifiques à l'AUF :
Avant l'installation, dans le BIOS :
mettre la machine à l'heure UTC (temps universel, TU) même si ntp s'en charge ensuite, il faut au moins vérifier que votre machine n'est pas en avance dans le temps, ça pourrait causer des soucis.
vérifier que la machine n'est pas overclockée (utilisé au delà de ses capacités de fonctionnement normales), que les paramètres ne sont pas poussés « à fond ». Certains BIOS proposent un choix failsafe recommandé pour les serveurs 24h/24.
- pour un serveur 24h/24, s'assurer que la configuration demande à démarrer automatiquement quand le courant revient.
- s'il s'agit d'une machine avec des disques SATA, il faut absolument activer le protocole AHCI (s'il est disponible).
Partitions : utiliser le système LVM pour le partitionnement des serveurs, si possible sur des disques RAID1 (miroir) logiciel. Voir aussi quelques conseils sur la partitionnement d'un serveur ;
Installer un système minimal : sélectionner le choix système standard proposé lors de l'installation, et aucun autre, en particulier aucune interface graphique ;
Faire l'installation sur un réseau non accessible depuis Internet. Ne rendre la machine disponible sur le réseau qu'après avoir testé que tout va bien1.
A faire juste après l'installation de base (« système standard »)
Petit mémo des choses à faire dans le cadre de l'installation de Debian Buster à l'AUF :
Vérifier les sources de paquets dans /etc/apt/sources.list : voir ci-dessous, section « Quelles sources de paquet utiliser ? ».
- Vérifier la configuration réseau et le nommage :
faire d'abord un # ifdown eth0 : cela arrête le client DHCP lancé sur l'interface (lancé par défaut)
/etc/network/interfaces : régler l'adressage IP, qui est statique pour un serveur
/etc/hostname : petit nom de la machine
/etc/hosts : relation entre IP et le nom de la machine
/etc/resolv.conf : indication de l'IP du serveur DNS à utiliser
Faire une première mise à jour : # aptitude update ; aptitude safe-upgrade
(installer aptitude au préalable, vu qu'il n'est plus installé par défaut)
- Installation des systèmes de base :
sudo : ajouter votre compte utilisateur dans le groupe sudo
ssh : une fois votre clé publique copiée, désactiver l'accès par mot de passe (ne laisser que l'accès par clé RSA), voire supprimer l'accès root direct (par défaut depuis Jessie), restreindre l'accès SSH au groupe d'utilisateur ssh
ntp : indiquer le serveur NTP local dans /etc/ntp.conf (ou laisser tel quel si la machine sera le serveur NTP local)
Installer quelques outils de diagnostic réseau (juste le nécessaire, pas forcément toute cette liste !) : iproute, mtr-tiny, trafshow, tcpdump/tshark, dnsutils, ... (à compléter)
Installer les utilitaires de base : less, vim, manpages-fr, ... (à compléter)
Installer apticron et apt-listchanges : voir ci-dessous, section « Mise à jour régulière ».
Installer l'outil check-support-status (fournit par le paquet debian-security-support) pour vérifier quels paquets installés ne bénéficient plus du support de sécurité de Debian.
(Optionnel) Pour faire joli (et se faire plaisir) : créer un /etc/motd.tail avec toilet -f big nomduserveur (à ne pas installer sur le serveur mais sur son poste client sous Debian ou Ubuntu) pour tenter d'éviter une manipulation sur le mauvais serveur un jour de réveil difficile, ou lors d'une opération tard dans la nuit, ou dans la moiteur d'après-midi sans sieste (suivant votre style de vie)
Il est également fortement recommandé d'installer :
suivi des logs avec logcheck, afin de l'adapter au fur et à mesure de la mise en place du serveur ;
suivi de configuration avec Git/SuiviDeConfiguration, pour le suivi des modification de configuration dès le début de la vie de la machine.
Si la machine destinée à devenir un serveur en production, il faut penser à y configurer la messagerie, au moins faire en sorte que les messages destinés à root@la-machine vous parviennent. Sur un serveur non destiné à la messagerie nous conseillons de conserver le MTA de Debian par défaut (installer bsd-mailx et exim4, qui installera par défaut exim4-daemon-light), qui est léger et efficace. Sa reconfiguration se fait avec sudo dpkg-reconfigure exim4-config. Éditer également /etc/default/exim4 pour le forcer en mode queueonly, puis relancer le service exim4.
On peut dire qu'à partir de là, la machine est « prête ».
Quelles sources de paquet utiliser ?
Il ne faut utiliser que les dépôts officiels, la source buster-updates et, uniquement en cas de besoin impératif, buster-backports. Toute autre source de paquet doit être d'abord discutée avec les autres techniciens de l'AUF. Supprimer les sources de type deb-src, elles ne sont pas utiles sur un serveur. De même, à moins d'un problème de débit, supprimer également les sources de type cdrom qui requièrent la présence auprès du serveur.
Les seules sources de paquet Debian nécessaires dans le cadre AUF sont donc les suivantes :
Sources officielles :
# depuis le pays le plus « proche » (au sens réseau Internet) ou depuis son miroir local : deb http://ftp.XX.debian.org/debian buster main
Pour construire un miroir local voir sur la page Miroir, ou mieux : installer juste un proxy/cache dédié APT avec AptCacherNG
Source « -updates » (ex-volatile, obligatoires, notamment sur système avec anti-virus/anti-spam) :
deb http://ftp.XX.debian.org/debian buster-updates main
Source de sécurité (voir http://www.debian.org/security/) :
# sources de sécurité depuis un miroir, si vous en avez un. NB : ne remplace jamais la ligne ci-dessous !! deb http://miroir-local/debian-security buster/updates main # sources de sécurité : LIGNE OBLIGATOIRE SUR TOUT SERVEUR, même si vous avez un miroir local deb http://security.debian.org buster/updates main
Source « backports » (uniquement en cas de nécessité, parlez-en d'abord sur la liste <discussion-technique@auf.org>) :
deb http://ftp.XX.debian.org/debian buster-backports main
Les sources du dépôt de paquets AUF qui concernent Buster :
# Dépôts AUF, voir http://wiki.auf.org/wikiteki/DépôtAPT # Source commune de paquets AUF (à faire : aptitude update ; aptitude install auf-keyring ; aptitude update) deb http://apt.auf.org/ buster auf
Mettre à jour Debian GNU/Linux
Mise à jour régulière
La procédure de mise à jour régulière est simplissime :
# aptitude update && aptitude upgrade
Divers outils annexes sont utiles voire indispensables pour mieux suivre les mises à jour :
indispensable : apt-listchanges. Lors d'un upgrade, après téléchargement des nouveaux paquets et avant la mise à jour proprement dit, apt-listchanges donne la liste des modifications qui vont être opérées (extraites des changelog.Debian). Il est alors possible de refuser la mise à jour, par exemple si elle est jugée trop risquée. Sinon, si la mise à jour est confirmée, un courriel contenant la liste des modifications est envoyé, pour mémoire.
indispensable : apticron. C'est un script qui se lance régulièrement (via CRON) et envoie un courriel donnant la liste des mises à jour disponibles.
la liste Debian Security Announces (DSA) : vous devez vous y abonner pour connaître les détails des mises à jour disponibles. Voir sur http://www.debian.org/security/ (abonnements sur http://lists.debian.org/debian-security-announce/).
(TODO : ajouter un mot sur le support LTS, cf https://wiki.debian.org/fr/LTS/)
Mise à jour lors de la sortie d'une nouvelle version
Lire entièrement la page /Buster avant de migrer de Stretch vers Buster.
Lire entièrement la page /Stretch avant de migrer de Jessie vers Stretch.
Lire entièrement la page /Jessie avant de migrer de Wheezy vers Jessie.
Lire entièrement la page /Wheezy avant de migrer de Squeeze vers Wheezy.
Lire entièrement la page /Squeeze avant de migrer de Lenny vers Squeeze.
Lire entièrement la page /Lenny avant de migrer de Etch vers Lenny.
Lire entièrement la page /Etch avant de migrer de Sarge vers Etch.
D'une manière plus générale, consulter les notes de publication : http://www.debian.org/releases/stable/releasenotes
Mise à jour depuis Debian Etch (4.0) ou Sarge (3.1)
(section de documentation à ré-écrire)
Si vous êtes à l'aise avec Linux, Debian et avec vos serveurs, vous pouvez migrer vers Lenny. Les détails concernant la mise à jour de Etch vers Lenny à l'AUF sont ici : /Lenny. Il faut lire ces informations avant de faire la mise à jour. A noter deux systèmes à mettre absolument à jour : migrer de Apache 1 vers Apache 2 et migrer de PHP 4 vers PHP 5
Si vos machines sont encore en Sarge ou Etch... il va vraiment falloir commencer à vous inquiéter sérieusement, les versions Sarge et Etch de Debian ne sont plus maintenues depuis longtemps. Il faut absolument passer en Lenny. Les détails concernant la mise à jour de Sarge vers Etch à l'AUF sont sur /Etch et celles concernant la mise à jour de Etch vers Lenny à l'AuF sont sur /Lenny.
Notes diverses
Chargement « illégal » du module KVM
Le module kvm est parfois chargé inutilement dans le noyau et cela ajoute un risque inutile — pour les systèmes où son usage n'est pas souhaité — étant donné qu'il y a assez fréquemment des alertes de sécurité autour de KVM, cf les alertes sur `linux` (chercher kvm)]] et les alertes sur `qemu-kvm`.
Ici la solution la plus appropriée serait de :
retirer immédiatement le module kvm du noyau avec modprobe -r kvm_intel ; modprobe -r kvm ;
empêcher le chargement futur de ce module inutile en ajoutant une ligne blacklist kvm dans /etc/modprobe.d/local.conf (à créer au besoin).
Gérer les problèmes pendant le démarrage
Pour gérer des problèmes survenant pendant le démarrage :
démarrage en mode rescue (paramètre noyau) : systemd.unit=rescue.target
démarrage sur un shell (paramètre noyau) : systemd.unit=emergency.target
plus de détails sur https://freedesktop.org/wiki/Software/systemd/Debugging/
Liens divers
Mettre en place un proxy/cache APT pour Debian (et Ubuntu)
Maintenir un miroir d'une archive Debian (et Ubuntu)
Quelques /Astuces concernant Debian
Notes de bas de page :
un serveur avec le service SSH activé et un mot de passe root trop simple sera piraté automatiquement en quelques heures, par des « robots » pirates qui scannent les machines en permanence... anecdote vécue ! (1)