Pesquisa de site

Como restringir usuários SFTP a diretórios iniciais usando chroot Jail


Neste tutorial, discutiremos como restringir usuários SFTP a seus diretórios pessoais ou diretórios específicos. Isso significa que o usuário só pode acessar seu respectivo diretório inicial, e não todo o sistema de arquivos.

Restringir os diretórios iniciais dos usuários é vital, especialmente em um ambiente de servidor compartilhado, para que um usuário não autorizado não espie os arquivos e pastas de outro usuário.

Importante: Observe também que o objetivo deste artigo é fornecer apenas acesso SFTP, não logins SSH. Ao seguir este artigo, você terá permissões para fazer transferência de arquivos, mas não tem permissão para fazer uma sessão SSH remota.

Leitura sugerida: Restringir o acesso do usuário SSH a determinados diretórios usando Chrooted Jail

A maneira mais simples de fazer isso é criar um ambiente de prisão chroot para acesso SFTP. Este método é o mesmo para todos os sistemas operacionais Unix/Linux. Usando o ambiente chroot, podemos restringir os usuários ao seu diretório inicial ou a um diretório específico.

Restringir usuários aos diretórios iniciais

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

Criar ou modificar usuários e grupos

Vamos restringir o usuário existente, por exemplo tecmint, ao seu diretório inicial denominado /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 arquivo de configuração 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 tenham efeito.

systemctl restart sshd
OR
service sshd restart

Se você fizer chroot de vários usuários no mesmo diretório, deverá alterar as permissões do diretório inicial de cada usuário para evitar que todos os usuários naveguem nos diretórios iniciais dos outros usuários.

chmod 700 /home/tecmint

Verifique o login dos usuários SSH e SFTP

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

ssh [email 

Aqui,

  1. tecmint – nome de usuário do sistema remoto.
  2. 192.168.1.150 – Endereço IP do sistema remoto.
Exemplo de saída:
[email '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 
Exemplo de saída:
[email '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 inicial. Faça CD no diretório tecmint e crie os arquivos ou pastas de sua preferência.

sftp&gt cd tecmint
Remote working directory: /

sftp&gt mkdir test
tecmint  

Restringir usuários a um diretório específico

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

Criar grupo e novos usuários

Crie um novo grupo sftpgroup.

groupadd sftpgroup

Em seguida, crie um diretório para o grupo SFTP e atribua permissões ao usuário root.

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

A seguir, crie novos diretórios para cada usuário, aos quais eles terão acesso total. Por exemplo, criaremos o usuário tecmint e seu novo diretório inicial 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

Modifique ou adicione 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

Salve e saia do arquivo. Reinicie 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 em seu servidor SSH e SFTP remoto usando a etapa fornecida acima em Verificar login de SSH e SFTP.

Esteja ciente de que este método desabilitará o acesso ao shell, ou seja, você não poderá acessar a sessão do shell do sistema remoto usando SSH. Você só pode acessar os sistemas remotos via SFTP e transferir arquivos de e para sistemas locais e remotos.

Conclusão

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