Como fazer: chroot SSH (SSH mais seguro)

hra

Este tutorial explica como configurar um ambiente para o servidor sshd de forma que o usuário só tenha acesso ao seu diretório home e tenha o mínimo de comandos disponíveis, só o necessário para executar suas tarefas, assim incrementando a segurança.

[ Hits: 105.240 ]

Por: Hamilton R. Amorim em 15/10/2003 | Blog: http://www.algorista.tk


Configurando o Linux



Daqui pra frente as configurações devem ser efetuadas no "Linux mesmo", estas alterações de arquivos devem ser feitas no sistema de arquivos real.

A configuração do Linux fica por conta de alterar a shell do usuário "teste", de forma a acessar uma shell alternativa que colocará sua seção em uma "chain root", essa cela que impedirá o usuário de enxergar o sistema de arquivos real, vendo apenas nosso "pseudo sistema de arquivos".

Primeira coisa a fazer: crie um shell script em /bin com as seguintes linhas:

#!/bin/bash
# arquivo: /bin/chroot-shell

/usr/bin/sudo /usr/sbin/chroot /home/$USER /bin/su - $USER

Acerte a permissão deste arquivo (eu sempre esqueço isso, hehehe):

# chmod ugo+x /bin/chroot-shell

Altere o shell do usuário em /etc/passwd para apontar para essa nova shell:

teste:x:515:515::/home/teste:/bin/chroot-shell

É necessário acertar as permissões de sudo para o usuário "teste". Para isso, edite o arquivo /etc/sudoers adicionando a linha abaixo:

teste   ALL=    NOPASSWD: /usr/sbin/chroot /home/teste /bin/su - teste*

Tem que fazer isso com todos os seus usuários, uma linha para cada, não é nenhum martírio, só uma linha para cada usuário.

Não precisa nem dizer que pra alterar esses arquivos você precisa estar logado como root né?

Está pronto, agora é só logar como teste e navegar pela máquina, logo perceberá que está "preso" em nossa pseudo-árvore, sem nenhuma chance de acessar o sistema de arquivos real.

Suas oportunidades de executar comandos estão limitados aos programas em /bin e em /sbin, com isso não dá pra fazer muita coisa na máquina, sem gcc, sem make e sem chmod você fica com as mãos atadas.

É preciso validar isso, não fiz muitas tentativas de furar a segurança, mas com certeza alguém cheio de disposição o fará por nós e dirá se essa solução é segura mesmo, hehehe.

Página anterior     Próxima página

Páginas do artigo
   1. Considerações iniciais
   2. Introdução
   3. Requisitos
   4. Criando a raíz
   5. Permissões dos arquivos
   6. Configurando o Linux
   7. Considerações finais
Outros artigos deste autor

A miséria social do Brasil e o software proprietário

cal2svg - brincando com shell script e arquivos vetoriais SVG

Copiando programas dos LiveCDs (Kurumin) para seu Debian sem usar a internet

Onde estão os programadores da era DOS?

Como fazer: Chroot Dosemu (Clipper no Linux)

Leitura recomendada

Convergência entre segurança física e lógica

Melhorando a segurança do seus servidores em FreeBSD

Exploração de Falhas em Servidores FTP

ProFTPD + ClamAV - FTP livre de vírus

Auditando senhas com John The Ripper

  
Comentários
[1] Comentário enviado por fabio em 15/10/2003 - 09:46h

Excelente artigo! É a primeira vez que vejo algo falando sobre criação de "celas" ssh em Português.

[2] Comentário enviado por y2h4ck em 31/03/2004 - 13:51h

Bom fiz o teste aqui ... estou tendo uma pequena dificuldade nao sei se com permissoes ...
porem o quando me logo o usuario esta caindo fora do home dele ... okei

falow

[3] Comentário enviado por y2h4ck em 31/03/2004 - 13:59h

(root@unsekurity)(/)$ ssh -l guest localhost
guest@localhost's password:
Last login: Sat Mar 27 11:35:22 2004 from localhost
Have a lot of fun...
/bin/chroot-shell: Exec format error
Connection to localhost closed.

heys meu erro
meu /bin/chroot-shell esta igualzinho ao do seu explo
so tive que modificar o path do /usr/sbin/chroot para /usr/bin/chroot
espero que possa je ajudar :D

[4] Comentário enviado por peter_77_schultz em 20/11/2005 - 12:09h

Beleza Amilton! Pois é, voce já escreveu o artigo a quase dois anos e mesmo depois de tanto tempo e ainda desperta interesse.

No meu caso estou tentando instalar o Chroot SSH na minha máquina. Segui todos os passos que voce descreveu, mas no final eu nao consigo me logar na area chroot. Isso acontece tanto com o comando "su" quanto com o comando "ssh".

Eu nao obtenho nenhum erro. Mas toda vez que eu digito a senha a pergunta aparece novamente- "password:"

será que voce pode me dar uma força. Valeu, Peter

[5] Comentário enviado por tatototino em 19/08/2006 - 20:39h

no meu tb igual na do peter pede duas vezes a passwd /etc/passwd

pq pede vcs sabem ?

[6] Comentário enviado por apscherbach em 02/10/2006 - 16:50h

Comigo aqui está dando esse erro:

Usuário não existente. O que pode ser. O usuário está criado... claro, e os arquivos passwd e group copiados e modificados.

Adriano

[7] Comentário enviado por K1LL -9 em 15/11/2007 - 17:34h

Dúvida boba ( não tive tempo pra testar essa solução):

Obteria exito em executar algo ('uploadeado') usando a ld-2.2.5.so ?
Obteria né ?


[8] Comentário enviado por TigonesBuell em 04/09/2008 - 15:26h

Ignorante

[9] Comentário enviado por diesel em 04/11/2012 - 09:47h

Obrigado pela contribuição.
Me ajudou muito.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts