SFTP - Limitando acesso por usuário

Publicado por Marco Túlio em 17/09/2015

[ Hits: 24.926 ]

 


SFTP - Limitando acesso por usuário



A finalidade do procedimento é limitar o acesso sftp a diretórios específicos, por padrão as conexões sftp via cliente sftp/ftp possibilitam a visualização de toda estrutura de diretórios do S.O.

A configuração limitará o acesso sftp a um diretório localizado dentro do home do usuário.

Edite o arquivo sshd_config:

# vim /etc/ssh/sshd_config

Comente esta linha:

# Subsystem sftp /usr/libexec/openssh/sftp-server

E adicione o conteúdo abaixo ao final do arquivo:

Subsystem sftp internal-sftp
    Match group sftpusers
    ChrootDirectory %h
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp

Reinicie o serviço openSSH:

# service sshd restart

Configuração das permissões

Crie o grupo no S.O. conforme configuração do sshd_config:

# groupadd sftpusers

Para restringir o acesso sftp para cada conta de usuário que for criada digite os comandos abaixo:

# usermod -G sftpusers usuario
# chown root:root /home/usuario
# chmod 755 /home/usuário


Crie o diretório home de cada usuário, será o local onde o usuário poderá utilizar os seus arquivos:

# cd /home/usuario
# mkdir diretório
# chown usuario:sftpusers *


Lembrando que os usuários inseridos no grupo sftpuser não conseguirão adicionar e visualizar arquivos em outros diretórios, também não conseguirão acessar o servidor via ssh.

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Ubuntu no Pendrive: Erro: "/casper/vmlinuz: file not found" [Resolvido]

Quebrando senha do usuário root (Debian e derivados)

Veja como anda se comportando seu PC

Lighttpd com suporte a PHP no Debian 7

Evitando bruteforce de SSH utilizando o Fail2ban

  

Comentários
[1] Comentário enviado por cmfs em 06/07/2017 - 14:57h

Ola!
Executei exatamente como manda o teu tutorial...
Mas, se eu tento criar um diretório ou enviar um arquivo ele me da os seguintes erros:

### Criando um diretório
Erro: mkdir /docs: permission denied
Comando: mkdir "/docs"


### Enviando um arquivo para o FTP
Erro: /avancado-6.42.pdf: open for write: permission denied
Erro: Transferência do arquivo falhou
Estado: Recuperando listagem do diretório de "/"...
Estado: Listing directory /
Estado: Listagem do diretório "/" bem sucedida

Se tiver alguma dica, eu ficaria muito grato...
Obrigado.

[2] Comentário enviado por cmfs em 06/07/2017 - 15:07h

Descobri o problema,
No /etc/passwd, estava configurado com /home/ftp-new/ftp...e então eu não tenho como alterar as permissões do diretoiro /ftp.
Deixei como /home/ftp-new/ ai funciona, só que o usuário pode clicar em ".." e sair do diretório /ftp.
Agora estou tentando descobrir para ele cair direto no /home/ftp-new/ftp/ e não ver nada da arvore de diretórios.

[3] Comentário enviado por marcotulio_ls em 06/07/2017 - 15:17h


[1] Comentário enviado por cmfs em 06/07/2017 - 14:57h

Ola!
Executei exatamente como manda o teu tutorial...
Mas, se eu tento criar um diretório ou enviar um arquivo ele me da os seguintes erros:

### Criando um diretório
Erro: mkdir /docs: permission denied
Comando: mkdir "/docs"


### Enviando um arquivo para o FTP
Erro: /avancado-6.42.pdf: open for write: permission denied
Erro: Transferência do arquivo falhou
Estado: Recuperando listagem do diretório de "/"...
Estado: Listing directory /
Estado: Listagem do diretório "/" bem sucedida

Se tiver alguma dica, eu ficaria muito grato...
Obrigado.


Olá!

Inseriu o usuário no grupo sftpusers dentro do arquivo /etc/group ?

[4] Comentário enviado por cmfs em 06/07/2017 - 15:42h

sim,
uid=1011(ftp-new) gid=100(users) groups=1000(sftpusers),100(users)

Com pure-ftp eu uso a home do usuário blz.
Mas, agora usando SFTP, não consigo usar a home do usuario.
exemplo:
/etc/passwd = ftp-new:x:1011:100::/home/ftp-new/ftp/:/bin/false

Pelo pure-ftp ele cai certo dentro do /home/ftp-new/ftp/ e não consegue sair do diretório /ftp

Pelo openssh, ele cai certo dentro do /home/ftp-new/ftp/ só que consigo sair do diretório /ftp (é o que eu não quero).
E se eu alterar as permissões do /ftp ele nem conecta.



[5] Comentário enviado por marcotulio_ls em 06/07/2017 - 16:05h


[3] Comentário enviado por tulhera em 06/07/2017 - 15:17h


[1] Comentário enviado por cmfs em 06/07/2017 - 14:57h

Ola!
Executei exatamente como manda o teu tutorial...
Mas, se eu tento criar um diretório ou enviar um arquivo ele me da os seguintes erros:

### Criando um diretório
Erro: mkdir /docs: permission denied
Comando: mkdir "/docs"


### Enviando um arquivo para o FTP
Erro: /avancado-6.42.pdf: open for write: permission denied
Erro: Transferência do arquivo falhou
Estado: Recuperando listagem do diretório de "/"...
Estado: Listing directory /
Estado: Listagem do diretório "/" bem sucedida

Se tiver alguma dica, eu ficaria muito grato...
Obrigado.


Olá!

Inseriu o usuário no grupo sftpusers dentro do arquivo /etc/group ?


Outra forma de permitir acesso ao diretório para o usuário
setfacl -m u:(usuário):rwx (/caminho do diretório)

Verificar no arquivo /etc/ssh/sshd_config se as opções estão dassa mesma forma

Subsystem sftp internal-sftp
X11Forwarding yes
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no

[6] Comentário enviado por cmfs em 07/07/2017 - 16:32h

Ele me dá o seguinte erro:
fatal: bad ownership or modes for chroot directory component "/home/ftp-new/ftp/"

## CONF
Subsystem sftp internal-sftp
Match Group sftpusers
X11Forwarding yes
ChrootDirectory %h
PermitTTY no
ForceCommand internal-sftp
AllowTcpForwarding no

Se ficar em 755 e com owner root:root eu conecto, só não consigo cria um diretório ou arquivo.

[7] Comentário enviado por marcotulio_ls em 26/02/2018 - 12:08h

Deixe o home do usuário conforme abaixo no arquivo /etc/passwd

ftp-new:x:1011:100::/home/ftp-new:/bin/false

Retire todas as permissões e de a permissão 755 no diretório home do usuário

setfacl - b /home/ftp-new
chmod 000 /home/ftp-new
chmod 755 /home/ftp-new

Retire todas as permissões do subdiretório e de a permissão para o usuário no subdiretório

setfacl - b /home/ftp-new/ftp/
chmod 000 /home/ftp-new/ftp/
chmod u+rwx /home/ftp-new/ftp/
setfacl -R -m u:usuário:rwx /home/ftp-new/ftp/






Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts