em Sem categoria

Servidor SFTP(chrooted, sem shell) – Somente SFTP

O artigo original foi conseguido no site do Dicas-L da Unicamp

Colaboração: Jean Carlos Oliveira Guandalini (http://www.linuxbsd.com.br)

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)