Como Restringir Usuários SFTP aos Diretórios Home Usando Chroot Jail

Neste tutorial, estaremos discutindo como restringir usuários SFTP para seus diretórios domésticos ou diretórios específicos. Significa que o usuário só pode acessar seu respectivo diretório doméstico, não o sistema de arquivos inteiro.

Restringir os diretórios domésticos dos usuários é vital, especialmente em um ambiente de servidor compartilhado, para que um usuário não autorizado não possa bisbilhotar nos arquivos e pastas de outros usuários.

Importante: Por favor, note também que o objetivo deste artigo é fornecer apenas acesso SFTP, não logins SSH, seguindo este artigo terá permissão para transferência de arquivos, mas não será permitido fazer uma sessão remota SSH.

Leitura sugerida: Restringir Acesso de Usuário SSH a um Diretório Específico Usando Chrooted Jail

A maneira mais simples de fazer isso é criar um ambiente de chrooted jail para acesso SFTP. Este método é o mesmo para todos os sistemas operacionais Unix/Linux. Usando o ambiente chrooted, podemos restringir os usuários seja para seu diretório doméstico ou para um diretório específico.

Restringir Usuários para Diretórios Domésticos

Nesta seção, criaremos um novo grupo chamado sftpgroup e atribuiremos a propriedade e permissões corretas às contas de usuário. Existem duas opções para restringir usuários a diretórios domésticos ou específicos, veremos ambos os caminhos neste artigo.

Criar ou Modificar Usuários e Grupos

Vamos restringir o usuário existente, por exemplo tecmint, ao seu diretório pessoal chamado /home/tecmint. Para isso, você precisa criar um novo grupo sftpgroup usando o comando groupadd conforme mostrado:

# groupadd sftpgroup

Em seguida, atribua o usuário ‘tecmint’ ao grupo sftpgroup.

# usermod -G sftpgroup tecmint

Você também pode criar um novo usuário usando o comando useradd, por exemplo senthil e atribuir o usuário ao grupo sftpusers.

# adduser senthil -g sftpgroup -s /sbin/nologin
# passwd tecmint

Modificar o Arquivo de Configuração do SSH

Abra e adicione as seguintes linhas ao arquivo de configuração /etc/ssh/sshd_config.

Subsystem sftp internal-sftp
 
   Match Group sftpgroup
   ChrootDirectory /home
   ForceCommand internal-sftp
   X11Forwarding no
   AllowTcpForwarding no

Salve e saia do arquivo, reinicie o serviço sshd para que as novas alterações entrem em vigor.

# systemctl restart sshd
OR
# service sshd restart

Se você chrootar vários usuários para o mesmo diretório, você deve alterar as permissões do diretório pessoal de cada usuário para evitar que todos os usuários naveguem pelos diretórios pessoais dos outros usuários.

# chmod 700 /home/tecmint

Verificar o Login de Usuários SSH e SFTP

Agora, é hora de verificar o login de um sistema local. Tente acessar seu sistema remoto via ssh a partir do seu sistema local.

# ssh [email protected]

Aqui,

  1. tecmint – nome de usuário do sistema remoto.
  2. 192.168.1.150 – endereço IP do sistema remoto.
Saída de exemplo:
[email protected]'s password: 
Could not chdir to home directory /home/tecmint: No such file or directory
This service allows sftp connections only.
Connection to 192.168.1.150 closed.

Em seguida, acesse o sistema remoto usando SFTP.

# sftp [email protected]
Saída de exemplo:
[email protected]'s password: 
Connected to 192.168.1.150.
sftp>

Vamos verificar o diretório de trabalho atual:

sftp&gt pwd
Remote working directory: /

sftp&gt ls
tecmint  

Aqui, tecmint é o diretório principal. Cd para o diretório tecmint e crie os arquivos ou pastas de sua escolha.

sftp&gt cd tecmint
Remote working directory: /

sftp&gt mkdir test
tecmint  

Restringir Usuários a um Diretório Específico

No nosso exemplo anterior, restringimos os usuários existentes ao diretório principal. Agora, veremos como restringir um novo usuário a um diretório personalizado.

Criar Grupo e Novos Usuários

Criar um novo grupo sftpgroup.

# groupadd sftpgroup

Em seguida, criar um diretório para o grupo SFTP e atribuir permissões para o usuário root.

# mkdir -p /sftpusers/chroot
# chown root:root /sftpusers/chroot/

Depois, criar novos diretórios para cada usuário, aos quais terão acesso total. Por exemplo, vamos criar o usuário tecmint e seu novo diretório principal com permissão de grupo correta usando a seguinte série de comandos.

# adduser tecmint -g sftpgroup -s /sbin/nologin
# passwd tecmint
# mkdir /sftpusers/chroot/tecmint
# chown tecmint:sftpgroup /sftpusers/chroot/tecmint/
# chmod 700 /sftpusers/chroot/tecmint/

Configurar SSH para Acesso SFTP

Modificar ou adicionar as seguintes linhas no final do arquivo:

#Subsystem  	sftp	/usr/libexec/openssh/sftp-server
Subsystem sftp  internal-sftp
 
Match Group sftpgroup
   ChrootDirectory /sftpusers/chroot/
   ForceCommand internal-sftp
   X11Forwarding no
   AllowTcpForwarding no

Salvar e sair do arquivo. Reiniciar o serviço sshd para que as alterações salvas tenham efeito.

# systemctl restart sshd
OR
# service sshd restart

É isso, você pode verificar fazendo login no seu servidor remoto SSH e SFTP usando as etapas fornecidas acima em Verificar Login SSH e SFTP.

Tenha em mente que este método desativará o acesso ao shell, ou seja, você não poderá acessar a sessão do shell do sistema remoto usando SSH. Você só poderá acessar os sistemas remotos via SFTP e fazer transferência de arquivos de e para os sistemas locais e remotos.

Conclusão

Agora você sabe como restringir os diretórios domésticos dos usuários usando um ambiente Chroot no Linux. Se você achar isso útil, compartilhe este artigo em suas redes sociais e nos avise na seção de comentários abaixo se houver outros métodos para restringir os diretórios domésticos dos usuários.

Source:
https://www.tecmint.com/restrict-sftp-user-home-directories-using-chroot/