Collectez les enregistrements de session sudo avec le Raspberry Pi
Les journaux et les enregistrements de session peuvent aider à déboguer ce qui s'est passé sur un hôte donné s'il se comporte étrangement. Essayez cette configuration sur votre Raspberry Pi.
J'utilise la commande sudo
depuis des années, et l'une de mes fonctionnalités préférées est la façon dont elle enregistre tout ce qui se passe dans un terminal lors de l'exécution d'une commande. Cette fonctionnalité est disponible depuis plus d’une décennie. Cependant, sudo 1.9 a introduit la collecte centrale des enregistrements de session, vous permettant de vérifier tous les accès administratifs à vos hôtes sur votre réseau en un seul endroit et de lire les sessions comme un film.
J'utilise cette fonctionnalité sur mon Raspberry Pi et je la recommande aux autres utilisateurs de Pi. Même si vous faites entièrement confiance à vos utilisateurs, les journaux et les enregistrements de session peuvent aider à déboguer ce qui s'est passé sur un hôte donné s'il se comporte étrangement : Oups, mauvais fichier supprimé dans /etc.
Pourquoi sudo ?
Sudo donne un accès administratif aux utilisateurs. À moins que vous limitiez l'accès à une courte liste de commandes, vous fournissez pratiquement un accès complet à vos hôtes. L'utilisateur pi
peut utiliser sudo
sans même saisir de mot de passe sur le système d'exploitation Raspberry Pi. Sur d'autres systèmes d'exploitation, la configuration par défaut accorde aux membres du groupe wheel
un accès administratif complet.
Avant que tu commences
La nouvelle application sudo_logsrvd gère la collecte. Les versions antérieures du système d'exploitation Raspberry Pi n'avaient que la version sudo 1.8. La dernière version est basée sur Debian 11 et inclut la version sudo 1.9.5. Vous avez également besoin d'un deuxième hôte avec sudo 1.9, qui envoie les enregistrements à sudo_logsrvd.
Configuration de sudo_logsrvd
Pour un environnement de production, je recommande d'utiliser des connexions cryptées TLS entre sudo et sudo_logsrvd. Cependant, pour comprendre simplement comment fonctionne l’enregistrement de session, vous pouvez vous passer du cryptage. Cela signifie également qu'il n'y a rien à configurer à part créer le répertoire de stockage et démarrer sudo_logsrvd :
$ sudo mkdir /var/log/sudo-io
$ sudo chmod 700 /var/log/sudo-io
$ sudo sudo_logsrvd
Le sudo_logsrvd attend maintenant les connexions.
Configuration de sudo
Configurez sudo 1.9 sur un hôte à l'aide de visudo
et ajoutez les lignes suivantes au fichier sudoers
. Vous devrez remplacer l'adresse IP par celle de votre Raspberry Pi. Notez que si vous n'avez pas de deuxième machine avec sudo 1.9, vous pouvez utiliser le même Raspberry Pi exécutant sudo_logsrvd pour les tests.
Defaults ignore_iolog_errors
Defaults log_servers = 172.16.167.129:30343
Defaults log_output
La première ligne est votre issue de secours lorsque vous expérimentez sudo_logsrvd : elle garantit que sudo fonctionne même si sudo_logsrvd est inaccessible. Cette configuration n'est pas recommandée pour les environnements de production car les utilisateurs peuvent exécuter des commandes sans enregistrement approprié.
Les deux lignes suivantes configurent où envoyer les enregistrements et activer les enregistrements.
Essai
Pour les tests, faites quelque chose que vous ne pouvez pas comprendre à partir des journaux sudo dans syslog : une session shell. Sachez que sudo 1.9.8 change cela, mais il n'est pas encore disponible dans les distributions Linux. Dans ce cas, les journaux montrent uniquement qu'un shell est démarré, mais rien sur ce qui s'est passé à l'intérieur :
$ sudo -s
# id
uid=0(root) gid=0(root) groups=0(root),117(lpadmin)
# cd /root/
# ls -la
total 36
drwx------ 5 root root 4096 Feb 16 12:27 .
drwxr-xr-x 18 root root 4096 Jan 28 04:22 ..
-rw------- 1 root root 827 Feb 16 12:49 .bash_history
-rw-r--r-- 1 root root 571 Apr 10 2021 .bashrc
drwx------ 3 root root 4096 Feb 16 10:54 .cache
-rw------- 1 root root 41 Feb 16 11:12 .lesshst
drwxr-xr-x 3 root root 4096 Feb 16 12:27 .local
-rw-r--r-- 1 root root 161 Jul 9 2019 .profile
drwx------ 3 root root 4096 Jan 28 04:21 .vnc
# exit
$
Même si les journaux ne montrent rien d'utile, vous pouvez toujours utiliser la commande sudoreplay
pour lister et lire les enregistrements :
$ sudo sudoreplay -l
Feb 16 12:37:54 2022 : pi : TTY=/dev/pts/1 ; CWD=/home/pi ; USER=root ; HOST=raspberrypi ; TSID=000001 ; COMMAND=/usr/bin/ls -l /etc/ssl/private/
Feb 16 12:38:14 2022 : pi : TTY=/dev/pts/1 ; CWD=/home/pi ; USER=root ; HOST=raspberrypi ; TSID=000002 ; COMMAND=/usr/bin/ls -la /etc/ssl/private/
Feb 16 12:49:21 2022 : pi : TTY=/dev/pts/1 ; CWD=/home/pi ; USER=root ; HOST=raspberrypi ; TSID=000003 ; COMMAND=/bin/bash
Feb 16 12:50:03 2022 : pi : TTY=/dev/pts/1 ; CWD=/home/pi ; USER=root ; HOST=raspberrypi ; TSID=000004 ; COMMAND=/bin/bash
Feb 16 12:50:28 2022 : pi : TTY=/dev/pts/1 ; CWD=/home/pi ; USER=root ; HOST=raspberrypi ; TSID=000005 ; COMMAND=/usr/bin/sudoreplay -l
$ sudo sudoreplay 000004
Replaying sudo session: /bin/bash
# id
uid=0(root) gid=0(root) groups=0(root),117(lpadmin)
# cd /root/
# ls -la
total 36
drwx------ 5 root root 4096 Feb 16 12:27 .
drwxr-xr-x 18 root root 4096 Jan 28 04:22 ..
-rw------- 1 root root 827 Feb 16 12:49 .bash_history
-rw-r--r-- 1 root root 571 Apr 10 2021 .bashrc
drwx------ 3 root root 4096 Feb 16 10:54 .cache
-rw------- 1 root root 41 Feb 16 11:12 .lesshst
drwxr-xr-x 3 root root 4096 Feb 16 12:27 .local
-rw-r--r-- 1 root root 161 Jul 9 2019 .profile
drwx------ 3 root root 4096 Jan 28 04:21 .vnc
# exit
$
Quelle est la prochaine?
J'espère que vous avez appris quelque chose de nouveau aujourd'hui et que vous l'essayerez sur votre propre Raspberry Pi. La configuration que j'ai décrite ici est suffisamment bonne pour les tests. Pour une utilisation en production, je recommande de créer un script de démarrage pour sudo_logsrvd, qui est absent du paquet Debian, et vous devez utiliser TLS entre sudo et sudo_logsrvd. Vous pouvez en savoir plus sur la configuration du chiffrement TLS dans la documentation ou sur mon blog. Ce qui est bien, c'est que vous pouvez également utiliser sudo_logsrvd sur le Raspberry Pi en production chez vous ou dans un petit bureau. À moins que des dizaines de clients sudo utilisent tous massivement le terminal (comme ls -laR /
), même la carte SD du Pi n'est pas un goulot d'étranglement.