LSHELL – LIMITANDO AMBIENTE E COMANDOS A USUÁRIOS/GRUPOS

Esta dica irá mostrar um exemplo de configuração do lshell, em um sistema Debian Squeeze, para limitar a execução de comandos previamente liberados para um determinado usuário ou grupo, bem como os diretórios aos quais o usuário poderá ter acesso, dentre outras opções relacionadas ao seu ambiente shell.

Instalação do lshell:

# aptitude install lshell

Configuração do lshell – /etc/lshell.conf:

# gedit /etc/lshell.conf

[global]

## Diretório de logs.
## Usuário deve ser membro do grupo lshell.

logpath     : /var/log/lshell/

## Nível de log: 0, 1, 2 ou 3.
loglevel      : 3

## Nome do arquivo de log. (Padrão %u.log. Ex: usuario.log)
logfilename   : %y%m%d-%u

## Configuração padrão. Poderão ser criadas configurações
## separadas para cada usuário ou grupo.
## Ex: [usuariox], [grp:users]

[default]

## Lista de comandos permitidos ao usuário. Use ‘all’ para permitir
## todos os comandos na variável PATH do usuário.

allowed     : [‘ls’,’echo’,’cd’,’ll’,’date’,’hora’,’vim’,’vi’,’cat’]

## Lista de comandos ou caracteres proibidos.
forbidden     : [‘;’, ‘&’, ‘|’,’`’,’>’,'<‘, ‘$(‘, ‘${‘, ‘cat’]

## Lista de comandos permitidos quando usados com sudo.
## Devem estar previamente configurados em /etc/sudoers.

sudo_commands    : [‘modprobe’, ‘iptables’]

## Número de avisos que o usuário terá antes de ser desconectado
## após tentar entrar em um diretório não permitido ou executar
## um comando da lista ‘forbidden’.

warning_counter : 5

## Aliases para comandos. (alias e comando devem estar na lista ‘allowed’)
aliases     : {‘ll’:’ls -l’, ‘vi’:’vim’, ‘hora’:’date +%H:%M’}

## Texto a ser exibido ao iniciar o lshell.
intro      : “== Ambiente restrito ==\nDigite ‘?’ ou ‘help’ para ver a lista de comandos permitidos.”

## Tempo máximo de inatividade em segundos antes
## do usuário ser automaticamente desconectado.

timer      : 300

## Lista de pastas as quais poderão ser acessadas pelo usuário.
path      : [‘/tmp/’,’/var’]

## Define o diretório home do usuário. Se não especificado,
## sera utilizado o valor da variável de ambiente $HOME.
#home_path    : ‘/home/usuario/’

## Altera a variável de ambiente PATH do usuário.
#env_path    : ‘:/usr/local/bin:/usr/sbin’

## Permite ou proíbe o uso de SCP pelo usuário. ( 1 permitir – 0 negar)
scp      : 1

## Permite ou proíbe uploads com SCP ( 1 permitir – 0 negar).
## Parâmetro ‘scp’ deve possuir valor 1.

scp_upload    : 1

## Permite ou proíbe downloads com SCP ( 1 permitir – 0 negar).
## Parâmetro ‘scp’ deve possuir valor 1.

scp_download    : 0

## Permite ou proíbe o uso de SFTP ( 1 permitir – 0 negar).
sftp      : 1

## Lista de comandos permitidos através de SSH.
## Ex: ssh usario@host ‘ls ~’

overssh      : [‘ls’,’rsync’]

## Considerar ou não comandos inválidos como ação proibida, se 1,
## comandos inválidos irão gerar avisos que poderão desconectar
## o usuário, conforme parâmetro ‘warning_counter’.

strict      : 0

## Forçar pasta de destino para arquivos enviados por SCP.
scpforce      : “/tmp”

## tamanho máximo do arquivo history.
history_size    : 100

## Nome do arquivo contendo o hipótrico de comandos.
history_file    : “/home/%u/.lshell_history”

EXECUÇÃO DO LSHELL

Para carregar o lshell a partir de uma sessão já existente, execute-o passando como parâmetro o caminho do arquivo de configuração “lshell.conf”:

# lshell –config /etc/lshell.conf

Para definir o lshell como shell padrão para um determinado usuário, use o comando usermod ou chsh:

# usermod -s /usr/bin/lshell usuario
Ou:
# chsh -s /usr/bin/lshell usuario

Caso queira habilitar os logs para um determinado usuário, insira-o no grupo “lshell”, o qual possui permissão de escrita na pasta /var/log/lshell:

# usermod -aG lshell usuario

Se tiver definido o lshell como shell padrão para um determinado usuário, basta efetuar login com ele e o lshell deverá ser iniciado.

Para mais informações de configuração, verifique o arquivo: /usr/share/doc/lshell/README.gz

Rolar para cima