ServidorSFTP
Conteúdo |
Servidor SFTP(chrooted, sem shell) - Somente SFTP
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 presume que você já tenha instalado um servidor openssh, e que este esteja funcionando adequadamente. 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.
Em distribuições baseadas no Debian, faça da seguinte forma, no Terminal digite:
# 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 em 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.
Bibliografia
Autor: |
Fonte: |
Wikifier
ServidorSFTP (last edited 2011-09-19 23:22:05 by localhost)