Configurando SFTP modo CHROOTED com o scponly

Publicado por Flavio Torres em 27/08/2008

[ Hits: 12.951 ]

 


Configurando SFTP modo CHROOTED com o scponly



Muitas vezes temos que disponibilizar acesso aos nossos servidores para apenas os usuários copiarem seus arquivos em um ambiente web. Pensando sempre na segurança do ambiente corporativo, não é nada mal configurar um ambiente seguro e privilegiado.

Com base nisto, temos a opção de configurar um SSH Chrooted, que vai te dar um pouco mais de trabalho, pois você deverá alterar o ambiente para todos os usuários, não que haja exceção, na maioria dos casos queremos ainda ter acesso SSH, claro somos root :), e liberar apenas cópia de arquivos para os nossos clientes.

Demonstrarei aqui como configurar o scponly em um ambiente enjaulado "chrooted" (onde o usuário terá permissão para acessar apenas aquele diretório e nada mais).

Distribuição: RedHat ES 4

Faça o download do scponly em:

Site do projeto: http://freshmeat.net/projects/scponly/

Arquivo para compilar e instalar:
http://freshmeat.net/redir/scponly/13187/url_tgz/scponly-4.6.tgz

Mão na massa!

# wget http://freshmeat.net/redir/scponly/13187/url_tgz/scponly-4.6.tgz
# tar -xvzf scponly-4.6.tgz
# cd scponly-4.6
# ls

aclocal.m4
CHANGELOG
config.log
configure.in
groups
INSTALL
README
scponlyc
setup_chroot.sh
AUTHOR
config.guess
config.status
CONTRIB
groups.c
install-sh
scponly
scponly.c
setup_chroot.sh.in
build_extras
config.h
config.sub
COPYING
helper.c
Makefile
scponly.8
scponly.h
TODO
BUILDING-JAILS.TXT
config.h.in
configure
debuglevel
helper.o
Makefile.in
scponly.8.alternate_manpage
scponly.o

Aqui configuramos o scponly com suporte a chroot:

# ./configure --enable-chrooted-binary
# make && make install


Achei interessante adicionar a saída do "make && make install" para vermos onde será instalado:

gcc -g -O2 -I. -I. -DHAVE_CONFIG_H -DDEBUGFILE='"/usr/local/etc/scponly/debuglevel"' -o scponly.o -c scponly.c
gcc -g -O2 -I. -I. -DHAVE_CONFIG_H -DDEBUGFILE='"/usr/local/etc/scponly/debuglevel"' -o helper.o -c helper.c
gcc -g -O2 -I. -I. -DHAVE_CONFIG_H -DDEBUGFILE='"/usr/local/etc/scponly/debuglevel"' -o scponly scponly.o helper.o
gcc -g -O2 -I. -I. -DHAVE_CONFIG_H -DDEBUGFILE='"/usr/local/etc/scponly/debuglevel"' -o groups groups.c
echo "0" > debuglevel
/usr/bin/install -c -d /usr/local/bin
/usr/bin/install -c -d /usr/local/man/man8
/usr/bin/install -c -d /usr/local/etc/scponly
/usr/bin/install -c -o 0 -g 0 scponly /usr/local/bin/scponly
/usr/bin/install -c -o 0 -g 0 -m 0644 scponly.8 /usr/local/man/man8/scponly.8
/usr/bin/install -c -o 0 -g 0 -m 0644 debuglevel /usr/local/etc/scponly/debuglevel
if test "xscponlyc" != "x"; then \
/usr/bin/install -c -d /usr/local/sbin; \
rm -f /usr/local/sbin/scponlyc; \
cp scponly scponlyc; \
/usr/bin/install -c -o 0 -g 0 -m 4755 scponlyc /usr/local/sbin/scponlyc; \ fi

Beleza, o arquivo binário responsável por tudo está instalado no diretório /usr/local/sbin/scponlyc.

Quando da conexão, o SFTP/SSH invocará o subsystem, na maioria das distribuições já é default a configuração no arquivo sshd_config, apenas certifique-se de que seu arquivo está configurado, veja se a linha abaixo encontra-se no arquivo /etc/ssh/sshd_config:

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

Agora devemos configurar o ambiente chroot para o nosso usuário, note que dentro do diretório que contém os arquivos, o mesmo que você está (scponly-4.6), encontra-se um script chamado: setup_chroot.sh, é ele o responsável por criar e copiar todos os arquivos/diretórios que irão compor o ambiente enjaulado.

DICA: Não tenha medo, leia o arquivo, principalmente as variáveis:

defaultusername="scponly"
defaulthomedirprefix="/home"
defaultwriteabledir="incoming"

É interessante você modificá-las, caso necessário para, por exemplo:

defaultusername="scponly"
defaulthomedirprefix="/var/www/sites"
defaultwriteabledir="public_html"

Quando o script for invocado, ele criará o ambiente chroot para o usuário dentro do diretório /var/www/sites/usuário e o diretório public_html com permissões para apenas o usuário. Viu só, já temos um ambiente web protegido. ;)

Feito isto, você já pode testar:

# sftp usuario@192.168.0.84
sftp> pwd
Remote working directory: /
sftp> ls
bin etc lib public_html usr
sftp> cd /
sftp> pwd
Remote working directory: /

Note que eu tentei mudar para o diretório / (raiz do sistema) e não me foi permitido.

Obs.: Dê uma espiada no /etc/passwd, e note o bash e o $HOME utilizado pelo usuário usuário.

usuário:x:507:508::/var/www/sites/usuário:/usr/local/sbin/scponlyc

É isto!

Outras dicas deste autor

Não esquecendo o root logado

Scaneando IP's, retornando NetBIOS ou endereços MAC.

Limpar tela com comando exit

Lente de aumento no Linux

Um pouco sobre o screen

Leitura recomendada

Ícones Azenis no Debian 7

Curso básico de Linux [vídeo-aulas]

Node.js e Apache juntos usando mod_proxy

Load Balance com PFSense

Apache-Tomcat6 + NetBeans no Ubuntu 10.04 ou Mint Helena 9.0

  

Comentários
[1] Comentário enviado por guimfonseca em 17/12/2008 - 16:08h

Cannot initialize SFTP protocol. Is the host running a SFTP server?

como resolver/??

[2] Comentário enviado por rafaelprimeiro em 15/05/2009 - 13:45h

Ainda estou aprendendo a usar o Linux, as vezes me deparo com problemas que não tenho ideia de como resolver. Este erro acontece comigo quando tento configura-lo =/
Não sei o q fiz de errado, mas não passo desta parte.
Se poder me ajudar eu agradeço ^^

root@rafael-desktop:/scponly-4.6# ./configure --enable-chrooted-binary
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking for gcc... gcc
checking for C compiler default output file name... configure: error: C compiler cannot create executables
See `config.log' for more details.

[3] Comentário enviado por guimfonseca em 15/05/2009 - 14:15h

olha rafael a primeira coisa é analisar o log ....


See `config.log' for more details.


abraços....



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts