Linux slogan
Visite também: BR-Linux.org · Dicas-L · NoticiasLinux · SoftwareLivre.org · UnderLinux · BestLinux
» Screenshot



» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha

» Wallpaper

Dica

Configurando SFTP modo CHROOTED com o scponly
Linux user
Publicado por Flavio Torres em 27/08/2008

Login: fla_torres, 60226 pontos Homepage: www.flaviotorres.com.br
[ Hits: 706 ]

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

Leitura recomendada
   Dica Linux recomendada Instalando o modem HSP56MR (sis)/AMR/PCI e outros
   Dica Linux recomendada Compactar e descompactar
   Dica Linux recomendada Gerenciando log do Oracle através do Linux com Logrotate
   Dica Linux recomendada Instalando uma placa wireless (rtl8180) sem o uso de NDISWrapper
   Dica Linux recomendada Recuperando senhas de root com LILO ou GRUB

Comentários
Nenhum comentário foi encontrado.

Contribuir com comentário
  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Contribuir com: [ Artigo | Conf | Dica | Pergunta | Script | Screenshot | Simulado | Wallpaper ]
Responsável pelo site: Fábio Berbert de Paula - Copyleft© 2002-2008 Viva o Linux.com.br

Viva o Linux

A maior comunidade Linux do Brasil! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.