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.

Références