GNU/Linux >> Tutoriels Linux >  >> Linux

Comment restreindre l'accès SSH pour l'utilisateur avec LShell (shell limité)

LShell ou Limited Shell est écrit en python pour limiter l'utilisateur pour un ensemble spécifique de commandes et de répertoires. Vous pouvez créer un environnement utilisateur avec un accès limité, vous pouvez également activer les commandes de désactivation via l'accès SSH.

Installer un shell limité

Utilisez la commande suivante pour installer le package LShell sur votre système basé sur Debian. Pour les autres systèmes d'exploitation, vous devez rechercher sur Google le package de lshell pour votre distribution.

$ sudo apt-get install lshell

Basculer l'utilisateur vers LShell

Définissez maintenant le LShell comme shell par défaut pour les utilisateurs pour lesquels vous êtes requis. Par exemple pour changer le shell de l'utilisateur sarah.

$ sudo chsh sarah

Changing the login shell for sarah
Enter the new value, or press ENTER for the default
	Login Shell [/bin/lshell]: /usr/bin/lshell 

Vous pouvez également définir le lshell comme shell par défaut pour l'utilisateur lors de la création du compte utilisateur comme suit.

$ sudo adduser --shell /usr/bin/lshell raj

Configurer LShell

Commencez maintenant par la configuration de lshell. Modifier le fichier de configuration de lshell /etc/lshell.conf . Il y a 4 sections de base dans le fichier de configuration.

  • [global] : Dans cette section, nous définissons les paramètres qui s'appliquent globalement. Par exemple les journaux.
  • [par défaut] : Dans cette section, nous définissons des valeurs par défaut qui s'appliquent à tous les utilisateurs et groupes. Les paramètres de cette section peuvent être remplacés par des paramètres spécifiques à l'utilisateur et au groupe.
  • [NOM D'UTILISATEUR] : Dans cette section, nous spécifions les paramètres spécifiques à l'utilisateur. Les paramètres de cette section s'appliquent uniquement à l'utilisateur
  • [grp:GROUPNAME] : Dans cette section, nous spécifions les paramètres spécifiques au groupe. Les paramètres de cette section s'appliquent à tous les utilisateurs du groupe

Un [par défaut] profile est appliqué pour tous les utilisateurs utilisant lshell. Vous pouvez créer [nom d'utilisateur] section ou un groupe [grp:groupname] section pour personnaliser les utilisateurs et les préférences spécifiques au groupe.

L'ordre de priorité est Utilisateur>> Groupe>> Par défaut . La section utilisateur a la priorité la plus élevée et la section par défaut a la priorité la plus basse.

[global]
logpath         : /var/log/lshell/
loglevel        : 2

[default]
allowed         : ['ls','pwd','cd','cat','cp']
forbidden       : [';', '&', '|','`','>','<', '$(', '${']
sudo_commands   : ['ls', 'more']
warning_counter : 2
aliases         : {'ll':'ls -l', 'vim':'rvim'}
prompt          : "%[email protected]%h"
timer           : 0
path            : ['/home', '/usr']
env_path        : ':/usr/bin/usr/local/bin'
env_vars        : {'foo':1, 'bar':'helloworld'}
scp             : 1 # or 0
sftp            : 1 # or 0
overssh         : ['rsync','ls']
strict          : 0
history_file    : "/home/%u/.lshell_history"

[grp:wheel]
warning_counter : 5
overssh         : - ['ls']

[raj]
allowed         : 'all' - ['su','rm','mv']
path            : ['/etc', '/usr'] - ['/usr/local']
home_path       : '/home/raj'

[sarah]
allowed         : + ['ping'] - ['ls']
path            : - ['/usr/local']
strict          : 1
scpforce        : '/home/sarah/uploads/'

Par exemple, l'utilisateur « rja » et l'utilisateur « sarah » appartiennent tous deux au groupe UNIX « wheel » :
Roue de groupe :

  • Les utilisateurs du groupe de roues ont un compteur d'avertissement défini sur 5
  • Les utilisateurs du groupe de roues ne sont pas autorisés à utiliser la commande "ls".

Utilisateur raj :

  • Peut accéder à /etc et /var mais pas à /usr/local
  • Peut accéder à toutes les commandes de son PATH à l'exception des commandes - su, rm, vm
  • a un compteur d'avertissement défini sur 5 [par défaut]
  • a son chemin d'accès défini sur "/home/raj"

Utilisateur sarah :

  • Peut accéder à /home et /usr mais pas à /usr/local
  • est autorisée la commande par défaut 'ping' mais pas 'ls'
  • strictness est mis à 1 (il n'est pas autorisé à taper une commande inconnue)
Nom de l'option Explication
logpath répertoire des journaux (par défaut /var/log/lshell/ )
loglevel définir le niveau de journalisation sur 0, 1, 2, 3 ou 4 (0 :aucun journal, 1 :le moins détaillé, 4 :consigner toutes les commandes)
nom du fichier journal configurer le nom du fichier journal (la valeur par défaut est %u, c'est-à-dire nom_utilisateur.log)
autorisé liste des commandes autorisées ou "toutes" pour autoriser toutes les commandes dans le PATH de l'utilisateur
interdit une liste de caractères ou de commandes interdits - refuse vim, car il permet d'échapper à lshell
sudo_commands une liste des commandes autorisées à utiliser avec sudo(8)
warning_counter nombre d'avertissements lorsque l'utilisateur entre une valeur interdite avant de quitter lshell, défini sur -1 pour désactiver.
alias liste des alias de commande (similaire à la directive alias de bash)
introduction texte d'introduction à imprimer (lors de la saisie de lshell)
invite configurez votre invite en utilisant %u ou %h (par défaut :nom d'utilisateur)
prompt_short définir la mise à jour du répertoire actuel de l'invite de tri (par défaut :0)
minuterie une valeur en secondes pour le minuteur de session
chemin liste des chemins pour restreindre l'utilisateur "géographiquement"
home_path définir le dossier de départ de votre utilisateur
env_path définir la variable d'environnement $PATH de l'utilisateur
allowed_cmd_path une liste de chemin ; tous les fichiers exécutables à l'intérieur de ces chemins seront autorisés
env_vars ajouter des variables d'environnement
scp autoriser ou interdire l'utilisation de scp (réglé sur 1 ou 0)
scp_upload interdire le téléchargement scp
scp_download interdire le téléchargement scp
sftp autoriser ou interdire l'utilisation de sftp (réglé sur 1 ou 0)
oversh liste des commandes autorisées à s'exécuter sur ssh
strict rigueur de journalisation. 1 pour toute commande inconnue est considérée comme interdite et 0 comme inconnue
scpforce forcer l'envoi de fichiers via scp vers un répertoire spécifique
taille_historique taille maximale du fichier d'historique
history_file définir le nom du fichier d'historique (la valeur par défaut est /home/%u/.lhistory)
login_script définir le script à exécuter lors de la connexion de l'utilisateur

Linux
  1. Comment limiter les utilisateurs SSH à un ensemble prédéfini de commandes après la connexion ?

  2. Comment puis-je créer un utilisateur avec un accès en lecture seule à tous les fichiers ? (c'est-à-dire root sans autorisations d'écriture)

  3. Comment ssh en tant qu'autre utilisateur

  4. Comment restreindre l'accès à Internet pour un utilisateur particulier sur le réseau local à l'aide d'iptables sous Linux

  5. accès au tunneling ssh uniquement

Comment autoriser ou refuser l'accès SSH à un utilisateur ou à un groupe particulier sous Linux

Comment restreindre l'accès SSH à certains utilisateurs sous Linux

Comment créer un utilisateur SFTP pour une racine de document de serveur Web

Comment activer SSH (accès shell) pour le compte cPanel existant ?

Comment ajouter une clé SSH pour l'accès cPanel SSH

Comment désactiver la connexion SSH pour l'utilisateur root sous Linux ?