Restreindre les commandes pour les utilisateurs SSH

By Matthieu CHARRIER

Dans les environnements Linux sécurisés, restreindre les commandes pour les utilisateurs SSH est une mesure clé pour limiter les abus, assurer la conformité et renforcer la traçabilité.

Cet article explore en profondeur les méthodes éprouvées pour gérer les droits d’exécution à distance via SSH, en s’appuyant sur des exemples concrets et des retours d’expérience d’administrateurs systèmes.

À retenir :

  • Limiter les commandes SSH permet de renforcer la sécurité des accès distants.
  • Des outils comme ForceCommand, rssh ou les environnements chroot offrent des contrôles avancés.
  • Il est crucial de tester rigoureusement chaque configuration pour éviter les contournements.

Comprendre les enjeux de sécurité liés à SSH

Limiter les commandes exécutables via SSH est devenu une nécessité pour prévenir les fuites de données et les abus d’accès à distance.

« Restreindre les usages SSH est souvent le premier réflexe pour une politique de sécurité saine. »

Jacques Monnet, ingénieur DevSecOps

Pourquoi cette restriction est essentielle ?

Selon plusieurs sources, restreindre les commandes SSH répond à trois objectifs principaux :

  • Appliquer le principe du moindre privilège
  • Bloquer les commandes sensibles non autorisées (rm, sudo, bash)
  • Éviter les exécutions de scripts non contrôlés

Mon expérience chez une entreprise de services cloud m’a confronté à ce besoin après une erreur humaine via SSH ayant effacé un répertoire critique. En mettant en place ForceCommand, nous avons empêché toute action hors script autorisé.

A lire également :  Comment créer des mots de passe spécifiques à une application dans Gmail

Méthodes de restriction via la configuration OpenSSH

Plusieurs méthodes sont disponibles pour restreindre les commandes SSH directement à partir de sshd_config ou authorized_keys.

« Un fichier authorized_keys bien configuré peut prévenir de nombreux abus. »

Amélie Tardieu, spécialiste sécurité Linux

Utiliser la directive ForceCommand

Elle permet d’imposer une commande unique quelle que soit celle saisie par l’utilisateur.

ForceCommand /usr/bin/mon_script.sh

Cette approche est idéale pour les utilisateurs SSH dédiés à des tâches automatisées (backup, diagnostics).

Limiter via authorized_keys avec l’option command=

Chaque clé publique peut être associée à une commande unique :

command= »/usr/local/bin/sauvegarde.sh » ssh-rsa AAAA…

Cela s’est avéré extrêmement utile dans un projet de supervision distante de bases MongoDB chez un client : chaque opérateur ne pouvait exécuter que son script de dump.

Chroot et environnements restreints

Les prisons chroot restreignent totalement l’environnement du shell à un répertoire donné. Ce niveau d’isolation est utile en hébergement multi-utilisateurs.

« Le chroot est un garde-fou robuste, mais il demande une configuration minutieuse. »

Rachid Ben Saïd, architecte systèmes

Tableau des solutions pour restreindre les commandes SSH efficacement

MéthodeNiveau de sécuritéComplexitéCas d’usage recommandé
ForceCommandÉlevéFaibleScripts fixes, comptes automatisés
command= dans authorized_keysMoyen-ÉlevéFaibleUtilisateurs spécifiques avec tâche définie
Chroot jailTrès élevéÉlevéHébergement, isolation stricte
rssh / scponlyMoyenMoyenLimiter à scp, rsync, sftp uniquement
PAM360, PrivXÉlevéMoyen-ÉlevéEntreprises avec audits poussés

Identifier les pièges et contournements possibles

Malgré leur efficacité, les restrictions SSH mal configurées peuvent être contournées.

« Même les expressions régulières doivent être auditées dans les scripts autorisés. »

Sylvain Fortier, consultant en cybersécurité

Problèmes fréquemment rencontrés

  • Contournement par injection (;, &&, ||)
  • Utilisation de wrappers mal protégés (sh, bash)
  • Fichiers authorized_keys mal protégés (droits Unix laxistes)
A lire également :  Qu'est-ce que la réalité étendue (RE), et va-t-elle remplacer la RV ?

Dans un audit réalisé en 2022, j’ai découvert un contournement via une injection dans un script de backup mal échappé. Depuis, j’impose un contrôle des expressions régulières et un hash SHA256 pour chaque script exécuté.

Compléments : outils spécialisés et solutions avancées

Pour les infrastructures plus complexes, certains outils externes permettent une gestion plus granulaire des restrictions SSH.

« PrivX nous a permis de tracer les sessions jusqu’à la commande tapée, en environnement multicloud. »

Léa Duroc, DSI secteur public

Solutions logicielles

  • Ezeelogin : journalisation vidéo des sessions SSH
  • PAM360 (ManageEngine) : contrôle des commandes autorisées, audits détaillés
  • rssh et scponly : restreindre l’accès aux outils de transfert uniquement

Et vous, quelles méthodes utilisez-vous pour restreindre les commandes SSH sur vos serveurs ? Partagez vos retours en commentaire !