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.


Servidor SFTP(chrooted, sem shell) - Somente SFTP

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.

No Gentoo:

  # emerge rssh

Debian

  # 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)

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


Veja a relação completa dos artigos de Jean Carlos Oliveira Guandalini