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,
- tecmint – nome de usuário do sistema remoto.
- 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> pwd
Remote working directory: /
sftp> 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> cd tecmint
Remote working directory: /
sftp> 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.