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é.
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
Amélie Tardieu, spécialiste sécurité Linuxauthorized_keys
bien configuré peut prévenir de nombreux abus. »
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éthode | Niveau de sécurité | Complexité | Cas d’usage recommandé |
---|---|---|---|
ForceCommand | Élevé | Faible | Scripts fixes, comptes automatisés |
command= dans authorized_keys | Moyen-Élevé | Faible | Utilisateurs spécifiques avec tâche définie |
Chroot jail | Très élevé | Élevé | Hébergement, isolation stricte |
rssh / scponly | Moyen | Moyen | Limiter à 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)
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 !