« Lshell » : différence entre les versions

De Wiki doc

Aucun résumé des modifications
(Francisation de certain mots+ correction de fautes d'orthographe)
 
(Une version intermédiaire par le même utilisateur non affichée)
Ligne 2 : Ligne 2 :


=Introduction=
=Introduction=
[http://lshell.ghantoos.org/ Lshell] est un shell allégé permettant de restreindre les accès à divers commandes et paths sur vos filesystems. Idéale donc pour maitriser ce que font les utilisateurs sur votre machine.
[http://lshell.ghantoos.org/ Lshell] est un shell allégé permettant de restreindre les accès à divers commandes et chemins sur vos systèmes de fichiers. Idéale donc pour maîtriser ce que font les utilisateurs sur votre machine.


=Installation=
=Installation=
Ligne 10 : Ligne 10 :
La configuration est assez simple :
La configuration est assez simple :
  # vim /etc/lshell
  # vim /etc/lshell
<source lang="python">
# lshell.py configuration file                                                         
#
# $Id: lshell.conf,v 1.20 2009/06/09 19:53:46 ghantoos Exp $


# lshell.py configuration file
[global]
#
##  log directory (default /var/log/lshell/ )
# $Id: lshell.conf,v 1.20 2009/06/09 19:53:46 ghantoos Exp $
logpath        : /var/log/lshell/
##  set log level to 0, 1, 2 or 3  (0: no logs, 1: least verbose)
[global]
loglevel        : 2
##  log directory (default /var/log/lshell/ )
##  configure log file name (default is %u i.e. username.log)
logpath        : /var/log/lshell/
#logfilename    : %y%m%d-%u
##  set log level to 0, 1, 2 or 3  (0: no logs, 1: least verbose)
loglevel        : 2
##  configure log file name (default is %u i.e. username.log)
#logfilename    : %y%m%d-%u
[default]
'''##  Les commandes autorisés
'''allowed        : ['ls','echo','cd','ll','vi']
'''##  Les commandes non autorisées
'''forbidden      : [';', '&', '<nowiki>|</nowiki>','`','>','<']
##  Limite de tentatives de commandes non autorisées avant de se faire jetter
warning_counter : 2
'''##  Les alias
'''aliases        : {'ll':'ls -l', 'vi':'vim'}
##  a value in seconds for the session timer
#timer          : 5
##  Les dossiers autorisés pour les utilisateurs
path            : ['/home','/etc']
##  set the home folder of your user. If not specified the home_path is set to
##  the $HOME environment variable
#home_path      : '/home/bla/'
##  update the environment variable $PATH of the user
#env_path        : ':/usr/local/bin:/usr/sbin'
##  allow or forbid the use of scp (set to 1 or 0)
#scp            : 1
##  allow of forbid the use of sftp (set to 1 or 0)
#sftp            : 1
##  list of command allowed to execute over ssh (e.g. rsync, rdiff-backup, etc.)
#overssh        : ['cd']
##  logging strictness. If set to 1, any unknown command is considered as
##  forbidden, and user's warning counter is decreased. If set to 0, command is
##  considered as unknown, and user is only warned (i.e. *** unknown synthax)
#strict          : 1
##  force files sent through scp to a specific directory
#scpforce        : '/home'


[default]
'''##  Les commandes autorisés
'''allowed        : ['ls','echo','cd','ll','vi']
'''##  Les commandes non autorisées
'''forbidden      : [';', '&', '<nowiki>|</nowiki>','`','>','<']
##  Limite de tentatives de commandes non autorisées avant de se faire jeter
warning_counter : 2
'''##  Les alias
'''aliases        : {'ll':'ls -l', 'vi':'vim'}
##  a value in seconds for the session timer
#timer          : 5
##  Les dossiers autorisés pour les utilisateurs
path            : ['/home','/etc']
##  set the home folder of your user. If not specified the home_path is set to
##  the $HOME environment variable
#home_path      : '/home/bla/'
##  update the environment variable $PATH of the user
#env_path        : ':/usr/local/bin:/usr/sbin'
##  allow or forbid the use of scp (set to 1 or 0)
#scp            : 1
##  allow of forbid the use of sftp (set to 1 or 0)
#sftp            : 1
##  list of command allowed to execute over ssh (e.g. rsync, rdiff-backup, etc.)
#overssh        : ['cd']
##  logging strictness. If set to 1, any unknown command is considered as
##  forbidden, and user's warning counter is decreased. If set to 0, command is
##  considered as unknown, and user is only warned (i.e. *** unknown synthax)
#strict          : 1
##  force files sent through scp to a specific directory
#scpforce        : '/home'
</source>
Vous pouvez le voir, il y a pleins d'options sympathiques.
Vous pouvez le voir, il y a pleins d'options sympathiques.
Il suffit ensuite de mettre ce shell aux utilisateurs qui conviennent (/etc/passwd).
Il suffit ensuite de mettre ce shell aux utilisateurs qui conviennent (/etc/passwd).


==Forcer un lshell au login==
==Forcer un lshell au login==
Si vous avez une authentification de pam via LDAP, il est possible de forcer un shell en particulier au login. Il va donc overrider les informations envoyées par NSS et les remplacer par le shell souhaité. Nous allons utiliser ici lshell pour toutes les personnes se connectant via LDAP :
Si vous avez une authentification de pam via LDAP, il est possible de forcer un shell en particulier au login. Il va donc réécrire les informations envoyées par NSS et les remplacer par le shell souhaité. Nous allons utiliser ici lshell pour toutes les personnes se connectant via LDAP :
  # vim /etc/libnss-ldap.conf
  # vim /etc/libnss-ldap.conf
ou
ou
Ligne 79 : Ligne 79 :


=Couplage avec sudo=
=Couplage avec sudo=
Le couplage avec sudo va être essentiel pour les personnes souhaitant utiliser des commandes uniquement exécutables par root. Il faudra donc modifier la partie alias et allowed de lshell.
Le couplage avec ''sudo'' va être essentiel pour les personnes souhaitant utiliser des commandes uniquement exécutables par root. Il faudra donc modifier la partie alias et allowed de ''lshell''.


Il ne faudra aussi pas oublier de modifier la configuration de sudo (sinon attention aux failles de sécu).
Il ne faudra aussi pas oublier de modifier la configuration de ''sudo'' (sinon attention aux failles de sécurités).


=Sources=
=Sources=
*https://wiki.deimos.fr/Lshell_:_limiter_les_possibilit%C3%A9s_du_shell
*https://wiki.deimos.fr/Lshell_:_limiter_les_possibilit%C3%A9s_du_shell
*http://lshell.ghantoos.org/
*http://lshell.ghantoos.org/

Dernière version du 6 mai 2017 à 13:46


Introduction

Lshell est un shell allégé permettant de restreindre les accès à divers commandes et chemins sur vos systèmes de fichiers. Idéale donc pour maîtriser ce que font les utilisateurs sur votre machine.

Installation

# apt install lshell

Configuration

La configuration est assez simple :

# vim /etc/lshell
# lshell.py configuration file                                                          
#
# $Id: lshell.conf,v 1.20 2009/06/09 19:53:46 ghantoos Exp $

[global]
##  log directory (default /var/log/lshell/ )
logpath         : /var/log/lshell/
##  set log level to 0, 1, 2 or 3  (0: no logs, 1: least verbose)
loglevel        : 2
##  configure log file name (default is %u i.e. username.log)
#logfilename     : %y%m%d-%u


[default]
'''##  Les commandes autorisés
'''allowed         : ['ls','echo','cd','ll','vi']

'''##  Les commandes non autorisées
'''forbidden       : [';', '&', '<nowiki>|</nowiki>','`','>','<']

##  Limite de tentatives de commandes non autorisées avant de se faire jeter
warning_counter : 2

'''##  Les alias
'''aliases         : {'ll':'ls -l', 'vi':'vim'}

##  a value in seconds for the session timer
#timer           : 5

##  Les dossiers autorisés pour les utilisateurs
path            : ['/home','/etc']

##  set the home folder of your user. If not specified the home_path is set to 
##  the $HOME environment variable
#home_path       : '/home/bla/'

##  update the environment variable $PATH of the user
#env_path        : ':/usr/local/bin:/usr/sbin'

##  allow or forbid the use of scp (set to 1 or 0)
#scp             : 1

##  allow of forbid the use of sftp (set to 1 or 0)
#sftp            : 1

##  list of command allowed to execute over ssh (e.g. rsync, rdiff-backup, etc.)
#overssh         : ['cd']

##  logging strictness. If set to 1, any unknown command is considered as 
##  forbidden, and user's warning counter is decreased. If set to 0, command is
##  considered as unknown, and user is only warned (i.e. *** unknown synthax)
#strict          : 1

##  force files sent through scp to a specific directory
#scpforce        : '/home'

Vous pouvez le voir, il y a pleins d'options sympathiques. Il suffit ensuite de mettre ce shell aux utilisateurs qui conviennent (/etc/passwd).

Forcer un lshell au login

Si vous avez une authentification de pam via LDAP, il est possible de forcer un shell en particulier au login. Il va donc réécrire les informations envoyées par NSS et les remplacer par le shell souhaité. Nous allons utiliser ici lshell pour toutes les personnes se connectant via LDAP :

# vim /etc/libnss-ldap.conf

ou

# vim /etc/ldap.conf
nss_override_attribute_value loginShell /usr/bin/lshell

Couplage avec sudo

Le couplage avec sudo va être essentiel pour les personnes souhaitant utiliser des commandes uniquement exécutables par root. Il faudra donc modifier la partie alias et allowed de lshell.

Il ne faudra aussi pas oublier de modifier la configuration de sudo (sinon attention aux failles de sécurités).

Sources