Configurando SFTP modo CHROOTED com o scponly

Publicado por Flavio Torres em 27/08/2008

[ Hits: 14.748 ]

 


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

Limpar tela com comando exit

Lente de aumento no Linux

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

Um pouco sobre o screen

Leitura recomendada

Alterando a cor do console

Placa wireless Atheros AR5007EG/AR242x no Acer Aspire 5520 com Ubuntu Linux

Squid autenticando em um servidor LDAP (Active Directory)

20 comandos que um dia você pode precisar

vídeo pra quem quer saber como funciona Proteção de Memória:

  

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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts