Jails em SSH: Montando sistema de Shell Seguro

Neste artigo vamos aprender a criar sistemas de Jail em SSH e assim separar recursos a usuários shell de acordo com suas necessidades, criando um ambiente secundário, o que aumenta a segurança na disponibilização de acessos remotos a terceiros.

[ Hits: 62.728 ]

Por: Anderson L Tamborim em 19/02/2008 | Blog: http://y2h4ck.wordpress.com


Projeto sob fogo: Testando o nosso sistema Jail



Agora que temos nosso Jail pronto, vamos nos autenticar como o usuário bandit e ver o que acontece. :-)

# ssh -l bandit 192.168.106.129
[email protected]'s password:
Linux mephisto 2.6.18-openvz-686 #1 SMP Tue Apr 10 20:28:40 CEST 2007 i686

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Tue Feb 19 16:01:58 2008 from 192.168.106.1
[email protected]:~$

// Até aqui tudo aparentemente normal. É como se tivéssemos logado em qualquer servidor Debian da vida.

[email protected]:~$ id
bash: id: command not found

// Oops o comando id não existe +_+
// Agora percebemos que realmente estamos limitados :D

[email protected]:~$ uname -a
bash: uname: command not found
[email protected]:~$ pwd
/home/bandit
[email protected]:~$ ps
bash: ps: command not found
[email protected]:~$ netstat -ntpl
bash: netstat: command not found
[email protected]:~$

[email protected]:~$ scp
usage: scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
           [-l limit] [-o ssh_option] [-P port] [-S program]
           [[[email protected]]host1:]file1 [...] [[[email protected]]host2:]file2

// Temos a disposição apenas o SCP que adicionamos no momento em que criamos a Jail.

[email protected]:~$ cd /
[email protected]:/$ ls -la
total 36
drwxr-xr-x 9 root root 4096 Feb 19 20:51 .
drwxr-xr-x 9 root root 4096 Feb 19 20:51 ..
drwxr-xr-x 2 root root 4096 Feb 19 20:41 bin
drwxr-xr-x 2 root root 4096 Feb 19 21:04 dev
drwxr-xr-x 5 root root 4096 Feb 19 21:01 etc
drwxr-xr-x 3 root root 4096 Feb 19 20:51 home
drwxr-xr-x 3 root root 4096 Feb 19 20:41 lib
drwxr-xr-x 5 root root 4096 Feb 19 20:41 usr
drwxr-xr-x 3 root root 4096 Feb 19 20:41 var
[email protected]:/$

Como podem ver o usuário enxerga somente o Jail e não o nosso sistema real. Ele vive em um ambiente totalmente separado. Isto ajuda muito pois limitado assim ele não consegue acessar o root do sistema nem executar programas nocivos como exploits.

Como podem ver a versão do kernel que estou utilizando é a 2.6.18 com o patch do openvz para virtualização. Esta versão é vulnerável a falha de escalamento de privilégios em kernel na função vmsplice().

E se nosso usuário estiver mal intencionado e tentar exploitar nosso servidor para virar root e assim sair do Chroot()?

[email protected]:~$ ./vmsplice
-----------------------------------
 Linux vmsplice Local Root Exploit
 By qaaz
-----------------------------------
[+] mmap: 0x0 .. 0x1000
[+] page: 0x0
[+] page: 0x20
[+] mmap: 0x4000 .. 0x5000
[+] page: 0x4000
[+] page: 0x4020
[+] mmap: 0x1000 .. 0x2000
[+] page: 0x1000
[+] mmap: 0xb7de8000 .. 0xb7e1a000
Segmentation fault
[email protected]:~$

Segmentation fault... porque ? Porque o sistema não tem acesso as systemcalls que este exploit precisa para executá-lo. Nossa jail então é algo que vai nos deixar bem confortáveis em relação à algumas explorações.

Para deixar frisado este exploit acima é totalmente funcional e ele executado em um sistema comum, faria o atacante ganhar acesso de root.

O ambiente chroot() mostrou que funciona muito bem. Você pode utilizá-lo em larga escala de acordo com suas necessidades e moldá-lo de forma que consiga implantar com sucesso todos os tipos de aplicativos em diferentes Jails.

Página anterior     Próxima página

Páginas do artigo
   1. Prólogo
   2. Introdução - Jail Chroot e funcionalidades
   3. Iniciando o Projeto: Recursos necessários
   4. Montando a estrutura de Jail
   5. Projeto sob fogo: Testando o nosso sistema Jail
   6. Considerações finais
Outros artigos deste autor

Seguraça extrema com LIDS

Race condition - vulnerabilidades em suids

PHLAK :: [P]rofessional [H]acker's [L]inux [A]ssault [K]it

Snort avançado: Projetando um perímetro seguro

Análise passiva (parte 2)

Leitura recomendada

Travando qualquer máquina Linux

Mudança de hábito: autenticando usuários em base de dados MySQL

Framework OSSIM - Open Source Security Information Management

Instalando e configurando o SpamAssassin

Melhorias generalizadas de segurança (parte 2)

  
Comentários
[1] Comentário enviado por alpkaiser em 20/02/2008 - 11:45h

Muito bom.

Mais uma vez um ótimo artigo que vem ajudar em muito na implementação de segurança em servidores Linux.

Parabéns.

[2] Comentário enviado por capitainkurn em 20/02/2008 - 11:49h

Ótimo artigo! Aliás gosto muito de seus artigos e frequentemente costumo tirar umas colas.
Já está em meus favoritos.

Parabéns!

[3] Comentário enviado por marcaoguitarra em 20/02/2008 - 12:32h

Bonzinho!!!
heheehe
muito bom cara, eu já tinha feito um apache em chroot mas não tão bem configurado assim, gostei desse jaill_kit...

[4] Comentário enviado por kalib em 20/02/2008 - 14:46h

A primeira coisa q me veio a cabeça foi um honey pott... rsrsrs
Parabéns pelo artigo camarada...o conteúdo está excelente, didático...
O conteúdo é bastante interessante...ainda não conhecia essa prática.
Parabéns novamente pelo excelente trabalho. ;]

[5] Comentário enviado por tinti em 21/02/2008 - 09:35h

Vc deitou cara!!! Muito bom!!!

[6] Comentário enviado por maran em 21/02/2008 - 21:12h

Assim eu fiquei pensando aqui né em como fazer um comentário, e cara não precisa dizer nada, simplesmente perfeito...

Abraços.

[7] Comentário enviado por removido em 25/02/2008 - 12:02h

Simplesmente fantástico!! Parabéns, com certeza utilizar Jails e Chroot é mais uma forma de mantermos nossos servicos mais seguros.

Continue postando novos artigos e utilizando a mesma didática.

Abracos.

[8] Comentário enviado por rfmartins em 01/03/2008 - 19:09h

fiz tudo que esta notutorial, mas quando crie o usuario, ele nao aparece no home.
verifiquei o /etc/passwd e o usuario esta da sequinte forma:

bandit:x:1002:1002::/home/bandit:/bin/sh

como posso ressolver isto ??

[9] Comentário enviado por danimontelo em 03/12/2009 - 12:13h

Excelente tutorial! Ajudou-me bastante em tornar mais seguro o acesso remoto aos servidores que administro.

Grata e abraços, Dani

[10] Comentário enviado por carlosparisotto em 25/08/2014 - 09:26h

Primeiramente, muito bom o artigo.
Estou usando essa ferramenta há um tempo já, porém agora estou precisando fazer um SSH sem senha
para um desses usuários enjaulados e não estou conseguindo. Sabe se é possível? Se já conseguiste
fazer, favor passar o procedimento, pois estou fazendo o mesmo procedimento que para um usuário
comum e não está funcionando. Obrigado

[11] Comentário enviado por carlosparisotto em 25/08/2014 - 11:11h

Opa, descobri que o problema na verdade é o meu SELinux, então já entra em outro tópico. Vou verificar. Valeu!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts