De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Jean Carlos Oliveira Guandalini
Data de Publicação: 20 de Abril de 2006
O SFTP criptografa o tráfego de informações de sua máquina com o servidor, aumentando sua segurança contra intrusos que possam pegar as informações no meio do caminho, já que o FTP convencional trabalha com o clear text ou seja sem nenhum tipo de criptografia nas informações.
Este tutorial baseia-se que você já tenha instalado um servidor openssh funcionando corretamente. Não iremos fazer uma explicação de como instalar um servidor desse tipo, por já vir instalado em vários servidores por padrão e também ter bastante documentação sobre o mesmo.
Estou utilizando um Gentoo Linux, mas vou procurar fazer o melhor possível para que possa ser aplicado em outras distribuições.
Primeiramente instale o rssh(Restricted RSSH Shell), e adicione uma lista de shells.
# emerge rssh
# apt-get install rssh
Em outras distribuições que não tiverem binários você pode baixar os fontes do rssh e compilar ele:
# links http://www.pizzashack.org/rssh/downloads.shtml
Leia a documentação dele que você irá saber como instalá-lo, não tem segredo algum.
Depois do programa instalado vamos jogar o rssh para as shell válidas:
# echo /usr/bin/rssh >> /etc/shell
E vamos modificar o arquivo de configuração dele para que possa funcionar em nosso projeto:
/etc/rssh.conf logfacility = LOG_USER allowscp allowsftp umask = 022 chrootpath="/home"
OBS: Caso você queira desabilitar o sftp ou scp, basta comentar as linhas referentes à eles.
Agora iremos fazer nosso ambiente chroot:
Os arquivos envolvidos devemos copiar para nosso /home/bart o qual é nosso diretório chrooted .
# cd /home/bart # mkdir p usr/bin # cp /usr/bin/scp usr/bin # cp /usr/bin/rssh usr/bin # mkdir p usr/libexec # mkdir p usr/lib/misc # cp /usr/lib/misc/rssh_chroot_helper usr/lib/misc # cp /usr/lib/misc/sftp-server usr/lib/misc
OBS: Os paths dos programas e arquivos podem variar de acordo com cada distribuição.
Agora que você copiou os arquivos vamos copiar as bibliotecas que estes programas utilizam, e faremos isso com o programa ldd:
# ldd /usr/bin/scp linux-gate.so.1 => (0xffffe000) libresolv.so.2 => /lib/libresolv.so.2 (0xb7f07000) libcrypto.so.0.9.7 => /usr/lib/libcrypto.so.0.9.7 (0xb7e05000) libutil.so.1 => /lib/libutil.so.1 (0xb7e01000) libz.so.1 => /lib/libz.so.1 (0xb7def000) libnsl.so.1 => /lib/libnsl.so.1 (0xb7dda000) libcrypt.so.1 => /lib/libcrypt.so.1 (0xb7dac000) libc.so.6 => /lib/libc.so.6 (0xb7c90000) libdl.so.2 => /lib/libdl.so.2 (0xb7c8b000) /lib/ld-linux.so.2 (0xb7f1e000)
OBS: Essa saída do ldd pode variar de com cada distribuição.
Vamos copiar as bibliotecas para os diretórios corretos:
# cd /home/bart # mkdir lib # cp /lib/libresolv.so.2 lib/ # cp /lib/libutil.so.1 lib/ # cp /lib/libz.so.1 lib/ # cp /lib/libnsl.so.1 lib/ # cp /lib/libcrypt.so.1 lib/ # cp /lib/libc.so.6 lib/ # cp /lib/libdl.so.2 lib/ # cp /lib/ld-linux.so.2 lib/ # mkdir -p usr/lib # cp /usr/lib/libcrypto.so.0.9.7 usr/lib
Agora rode o ldd para os outros programas copiados para seu ambiente chroot:
# ldd /usr/bin/rssh # ldd /usr/lib/misc/rssh_chroot_helper # ldd /usr/lib/misc/sftp-server
Normalmente vão ser as mesmas bibliotecas, algumas que podem faltar são as seguintes:
# cp /lib/ld-linux.so.2 lib # cp /lib/libcrypt.so.1 lib
Finalmente vamos criar nosso usuário:
# useradd d /home/bart s /usr/bin/rssh bart
Caso você já tenha esse usuário no servidor basta modificar o shell dele:
# usermod s /usr/bin/rssh bart
Agora quando você acessar o servidor via sftp seu usuário ficara trancado no seu diretório home para enviar e receber arquivos e quando ele tentar acessar o servidor via ssh normal aparecerá a seguinte mensagem:
This account is restricted by rssh. Allowed commands: scp sftp If you believe this is in error, please contact your system administrator.
Por enquanto é isso aí pessoal, em caso de dúvidas procure nosso fórum para mais esclarecimentos: http://www.linuxbsd.com.br/forum
Este conteúdo é uma tradução com alguns comentários meus baseado no wiki do gentoo: http://gentoo-wiki.com/HOWTO_SFTP_Server_(chrooted,_without_shell)
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários