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,
- tecmint – nome de usuário do sistema remoto.
- 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> pwd Remote working directory: / sftp> ls tecmint
Aqui, tecmint
é o diretório principal. Cd para o diretório tecmint e crie os arquivos ou pastas de sua escolha.
sftp> cd tecmint Remote working directory: / sftp> 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/