Fondamentaux

Services systemd

Un service est un programme qui s'exécute en arrière-plan pour fournir une fonctionnalité système ou applicative. Sur la plupart des distributions modernes, ces services sont gérés par systemd.


Service, unité et cible

Dans systemd, un service est un type d'unité. Il existe aussi des timers, sockets, mounts et targets.

TypeRôle
.serviceProgramme ou démon
.timerExécution planifiée
.socketActivation via socket
.mountPoint de montage
.targetGroupe d'unités

Commandes principales

systemctl status ssh
sudo systemctl start ssh
sudo systemctl stop ssh
sudo systemctl restart ssh
sudo systemctl reload ssh
sudo systemctl enable ssh
sudo systemctl disable ssh
ActionEffet
statusVoir l'état du service
startDémarrer
stopArrêter
restartRedémarrer
reloadRecharger la configuration
enableActiver au démarrage
disableDésactiver au démarrage

start agit maintenant. enable agit au prochain démarrage. Un service peut donc être démarré sans être activé au boot, ou activé sans être encore lancé.


Lister les services

systemctl list-units --type=service
systemctl list-units --type=service --state=running
systemctl list-unit-files --type=service

Journaux

journalctl -u ssh
journalctl -u ssh -n 20
journalctl -u ssh -f
journalctl -u ssh --since "1 hour ago"

Ces commandes permettent de lire l'historique récent et de suivre les événements en temps réel.


Fichiers de service

Les services sont souvent définis dans :

  • /etc/systemd/system
  • /lib/systemd/system
  • /usr/lib/systemd/system

Voir le fichier chargé :

systemctl cat ssh
systemctl show ssh

Après modification d'une unité :

sudo systemctl daemon-reload
sudo systemctl restart nom-du-service

Exemple minimal

[Unit]
Description=Exemple de service

[Service]
ExecStart=/usr/local/bin/exemple.sh
User=www-data
Restart=on-failure

[Install]
WantedBy=multi-user.target

Le champ User évite d'exécuter le service en root si ce n'est pas nécessaire.


Intérêt sécurité

Les services sont souvent ciblés ou détournés. Lors d'un audit ou d'une investigation, il faut identifier les services actifs, vérifier les services inconnus, contrôler les expositions réseau et rechercher des mécanismes de persistance.

Points à vérifier :

  • service exécuté en root sans nécessité
  • commande ExecStart inattendue
  • service activé au démarrage sans justification
  • fichier d'unité modifié récemment
  • variables d'environnement contenant des secrets
  • journaux absents ou trop peu bavards

Options utiles quand elles sont compatibles avec le service :

  • NoNewPrivileges=true
  • PrivateTmp=true
  • ProtectSystem=full
  • ProtectHome=true

À retenir

Un service systemd décrit quoi lancer, avec quel utilisateur, quand, et comment le relancer. C'est donc un point central pour l'administration, la disponibilité et la persistance.

Précédent
Stockage Linux