Restreindre les commandes pour les utilisateurs SSH

By Matthieu CHARRIER

SSH est l’une des applications les plus utilisées pour se connecter à des machines distantes et travailler dessus de manière sécurisée. Elle permet de se connecter à un serveur distant et de travailler dessus comme on le fait localement.

SSH offre de nombreuses fonctionnalités, et l’une d’entre elles consiste à limiter les commandes qu’un utilisateur connecté peut exécuter.

Voyons comment cela se passe.

Le fichier authorized_keys

SSH est livré avec quelques fichiers de configuration, et authorized_keys est l’un d’entre eux. Nous l’utilisons pour gérer les différents hôtes et utilisateurs qui se connectent au serveur SSH. En utilisant ce fichier de configuration, nous pouvons configurer une connexion automatique au serveur distant. Nous pouvons trouver le fichier authorized_keys dans le dossier ~/.ssh/. Cependant, nous pouvons définir un chemin différent dans le fichier /etc/ssh/sshd_config.

Pour restreindre les commandes, nous devons modifier le fichier authorized_keys. Un exemple de configuration serait le suivant :

from= »192.168.1.10″,command= »/usr/bin/ls » ssh-rsa AAAAB3NzaC1yc2E…OrsMdr bluelake@Pacific

Cette configuration dans authorized_keys limitera l’utilisateur à l’exécution de la commande ls.

Les attributs pertinents sont from et command. L’attribut from spécifie le client qui essaie de se connecter au serveur SSH. Nous pouvons spécifier le nom d’hôte ou l’IP ici. S’il y a plusieurs hôtes, nous pouvons les mentionner tous en les séparant par une virgule. Enfin, la commande spécifie la commande autorisée à s’exécuter. Nous devons fournir la commande avec un chemin d’accès complet ici. Malheureusement, nous ne pouvons pas spécifier plusieurs commandes ici

Utilisation d’un script

Même s’il s’agit d’une fonctionnalité puissante, elle n’est pas vraiment utile puisqu’il n’y a qu’une seule commande que l’utilisateur peut exécuter.

A lire également :  Qu'est-ce que la technologie sans fil 3G ?

Au lieu de spécifier la commande, si nous spécifions un script, nous pouvons permettre à l’utilisateur de faire plus.

Modifions la configuration pour permettre ce comportement comme ci-dessous :

from= »192.168.1.10″,command= »/usr/local/bin/select.sh » ssh-rsa AAAAB3NzaC1yc2E…OrsMdr bluelake@Pacific

Le seul changement est que la commande ls est remplacée par un script select.sh.

Le contenu de ce script est le suivant :

!/bin/bash

echo « 1. ls »
echo « 2. ping 8.8.8.8 -c 5 »
echo « 3. top »
read -p ‘Choix : ‘ choix # Lire le choix de l’utilisateur
cas $choice dans
1)
ls
; ;
2)
ping 8.8.8.8 -c 5
; ;
3)
top
; ;
*)
quitter
; ;
esac

Ceci est un script simple. Il lit l’entrée de l’utilisateur à la ligne 5 et exécute les commandes en fonction du choix de l’utilisateur.

Cela nous donne en fait plus de flexibilité pour exécuter différentes commandes. Si on le place à l’intérieur d’une boucle, alors l’utilisateur peut exécuter plusieurs commandes dans une seule session.

Conclusion

Comme nous l’avons vu, nous pouvons restreindre les utilisateurs SSH à l’exécution d’une commande particulière. Ou mieux encore, en utilisant un script, nous pouvons permettre à l’utilisateur de donner plus de choix de commandes, augmentant ainsi l’utilité de cette fonctionnalité. En outre, du point de vue de la sécurité, cela réduit la vulnérabilité de la machine puisque nous n’autorisons que des commandes spécifiques que les utilisateurs peuvent exécuter.