Durcissement système à l’aide de systemd
Ce TD est à réaliser dans une machine virtuelle Fedora. Avec les machines vagrant :
$ vagrant up systemd
$ vagrant ssh systemd
Objectifs
- Durcir la configuration d’un processus du système à l’aide de systemd
Créer son propre service unit
Nous allons prendre l’utilitaire nc
et en faire un démon géré par systemd.
Question 1 : Que fait la commande suivante ?
$ nc -lke /bin/bash 0.0.0.0 9999
Indice: Lire la page de man: ncat(1)
.
Question 2 : Où allons nous placer notre fichier d’unit ?
Voici un template contenant les directives de configuation principales pour un service :
[Unit]
Description=...
After=...
Wants=...
[Service]
ExecStart=...
[Install]
WantedBy=...
Question 3 : Créez un service unit qui lance la commande précédente à l’aide du template ci-dessus.
N’oubliez pas que systemd ne prend pas en compte les nouveaux fichiers d’unit automatiquement. Pour lui indiquer de recharger la configuration il faut utiliser :
$ systemctl daemon-reload
Testez le bon fonctionnement de ce nouveau service :
$ nc localhost 9999
ls
...
Question 4 : Aidez vous des options de la page de manuel systemd.exec(5) pour confiner ce service en définissant :
- le redémarrage automatique en cas d’erreur non prévue
- un utilisateur et un groupe à choisir judicieusement (à créer si nécessaire)
- des limitations d’accès sur les répertoires du système (
ProtectSystem
, etc.) - des limitations sur les appels systèmes disponibles :
- avec une liste d’interdiction pour supprimer les fonctions de debug ou les appels systèmes obsolètes
- ou avec une liste d’autorisation avec uniquement les appels systèmes nécessaires
- voir l’option
SystemCallFilter
dans systemd.exec(5)
Question 5 : Vérifiez que toutes les options fonctionnent correctement.