Bonjour,
Un serveur doit être disponible 24 heures sur 24 et ne doit évidemment pas se mettre en veille, surtout si nous ne disposons pas d’outils pour le « réveiller ».
Par défaut ou suite à l’installation de certains paquets, une distribution Debian peut conserver des réglages d’économie d’énergie. Résultat : notre machine « s’endort » après une période d’inactivité et nous ne pouvons plus y accéder à distance. 1
C’est le cas notamment pour des systèmes installés dans une version Desktop (= avec le gestionnaire de bureau, type GNOME ou autre).
C’est ballot quand il s’agit d’un serveur, n’est-ce pas ?
Voici comment empêcher la mise en veille au niveau système.
Nous ne nous servons que de la ligne de commande. 2
La configuration classique par l’interface graphique ne suffit pas (et peut être trompeuse)#
Sur Debian, la gestion de l’énergie est multi-couche.
Désactiver la mise en veille dans une interface graphique ou via un simple script ne suffit pas toujours, car plusieurs services peuvent déclencher un événement suspend :
- Les
cibles systemdqui orchestrent la transition vers les états de sommeil. systemd-logindqui réagit aux événements matériels (bouton power, bouton de réinitialisation, inactivité…).
Pour une machine de production, nous pouvons mettre en place le masking des outils de mise en veille pour les rendre inaccessibles même au système.
Masquer les services de mise en veille#
Plutôt que de simplement désactiver (disable) les services associés à la mise en veille, nous les masquons (mask) pour empêcher l’accès.
Nous utilisons la commande mask (plutôt que disable). Elle crée un lien symbolique vers /dev/null, ce qui rend impossible l’activation du service, même si un autre processus le demande.
Pour ce faire, nous exécutons : 3
| |
Pour confirmer que les cibles sont bien verrouillées :
| |
Exemple de sortie :
| |
Configurer systemd-logind#
Même si les cibles sont masquées et donc inaccessibles, nous pouvons configurer le gestionnaire de sessions (systemd-logind = login daemon) pour qu’il n’essaie pas d’interpréter les signaux d’inactivité ou les boutons physiques… Deux précautions valent mieux qu’une.
Nous éditons le fichier de configuration :
| |
Nous modifions et / ou décommentons les lignes suivantes pour forcer l’état ignore :
| |
Nous redémarrons le service pour appliquer les changements :
| |
Analyser les journaux#
Deux commandes peuvent être utiles pour auditer les logs du serveur :
Pour consulter les événements de systemd-logind :
| |
Pour les changement d’états ACPI au niveau du noyau :
| |
Cette commande permet de voir si le noyau a effectivement préparé un passage en état S3 (veille en RAM) ou S4 (hibernation).
Conclusion#
En combinant le masquage des cibles systemd et la neutralisation des actions dans logind.conf, nous éliminons tout risque de mise en veille accidentelle de notre serveur Debian. 4
C’est une étape de durcissement (hardening) à laquelle il vaut mieux veiller AVANT d’être dans la mouise.
Au plaisir,
Marc JESTIN
https://marcjestin.fr
La veille est généralement de type
ACPI S3= l’ordinateur reste allumé en attente pour conserver la RAM active dans son état au moment de la mise en veille pour un redémarrage beaucoup plus rapide queACPI S4. ↩︎En principe, on n’installe pas d’interface graphique sur un serveur, mais il est vrai que cela peut être pratique en
auto-hébergement. ↩︎Toutes les commandes de cet article nécessitent d’avoir le privilège
root. Je fais partie de ceux qui ne recommandent pas l’utilisation dusudo. Et qui savent pourquoi. ↩︎Si tant est que nous avons bien sûr veillé à ne pas avoir de veilles paramétrées au niveau
UEFI(exBIOS) sur la machine, bien sûr. ↩︎