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.
| Type | Rôle |
|---|---|
.service | Programme ou démon |
.timer | Exécution planifiée |
.socket | Activation via socket |
.mount | Point de montage |
.target | Groupe 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
| Action | Effet |
|---|---|
status | Voir l'état du service |
start | Démarrer |
stop | Arrêter |
restart | Redémarrer |
reload | Recharger la configuration |
enable | Activer au démarrage |
disable | Dé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
rootsans nécessité - commande
ExecStartinattendue - 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=truePrivateTmp=trueProtectSystem=fullProtectHome=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.
