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.658 ]

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


Introdução - Jail Chroot e funcionalidades



Jail - Ambiente Chroot para SSH

Hoje uma das principais preocupações inerentes ao controle de acesso é definitivamente quanto as restrições que devem ser impostas para acessos via Secure Shell (SSH). Por ter acesso direto ao interpretador principal do sistema e seu console de administração, garantir a integridade de um sistema é muito difícil quando muitas pessoas acessam este servidor.

Existem muitas falhas de segurança que permitem que usuários comuns do sistema se utilizem para escalar privilégios e assim obter o status de super usuário (root), causando quase sempre muitos problemas como por exemplo:
  • Utilização de recursos do Servidor comprometido para atividades ilícitas (lançar ataques contra outras redes, capturar dados da rede a qual o servidor pertence, etc );
  • Danificar o servidor devido imperícia em manipular o sistema;
  • Fornece acesso indevido a terceiros, tornando assim qualquer tipo de tentativa de controle futuro inviável e / ou impraticável.

Uma das principais estratégias de segurança (do grego Estrategía :P) conhecida e que realmente surte efeito imediato em qualquer ambiente é a do Mínimo Privilégio (Least Privilege).

O princípio do mínimo privilégio significa que qualquer objeto (usuário, administrador, programa, sistema, etc) deveria ter somente os privilégios que o objeto precisa para realizar as suas tarefas - e nada mais.

Mínimo privilégio é um princípio importante para limitar a exposição aos ataques e para limitar os danos causados por ataques. Deve-se explorar meios para reduzir os privilégios para as operações.

* Não se deve dar a um usuário a senha do root se tudo que ele precisa fazer é reiniciar o sistema de ftp. Ao invés disso, podemos configurar um ambiente com o sudo dando privilegio ao usuário apenas executar o que for necessário;

* Não executar um programa com privilégios de root se a única coisa que ele precisa com tais privilégios é escrever em um arquivo protegido. Ao invés disso, permita que o arquivo seja escrito por algum grupo e configure ACLs para o processo para este grupo;

Programas grandes e complexos são também um grande problema. Programas deste tipo e que, além disso, executam em modo privilegiado como por exemplo o bind que já foi alvo de vários ataques bem sucedidos, e que continua a ser alvo em potencial por sua "insistente" complexidade, são um problema ainda maior a nível de segurança.

Uma boa estratégia é diminuir o máximo possível o tamanho dos programas que sejam críticos à segurança do sistema, ou então isolar os pedaços dos programas complexos que realmente requerem acesso privilegiado, possibilitando assim concentrar a análise e depuração em partes menores do código.

Um bom exemplo de ambiente Linux utilizando Least Privileges seria o sistema de chroot onde os serviços ficam aprisionados dentro de um ambiente virtual e enxergam apenas as bibliotecas necessárias para executar de forma correta. Caso algum atacante explore este serviço e obtenha acesso ao sistema, ficara estritamente restrito ao ambiente do serviço em questão, e não causara problemas ao nosso sistema principal. Hoje em dia a maioria dos serviços permite utilizacão de chroot.

Há alguns problemas com a estratégia do privilégio mínimo, podemos citar os principais:
  • Pode ser complexo implementar caso os programas e ou protocolos não permitam estabelecer privilégios;
  • Pode-se acabar implementando algo que tenha menos privilégios do que o mínimo estabelecido, acarretando em uma série de problemas por parte dos usuários.

O ambiente chroot visa então segmentar os recursos para determinados usuários impedindo que eles danifiquem o sistema em questão com ataques ou imperícia.

Sendo assim iremos abordar o uso de um ambiente em Chroot para acesso via SSH, permitindo que usuários acessem somente o necessário, limitando ao máximo o acesso à recursos de sistema e também criando um sistema "virtual" onde o usuário não irá enxergar os recursos reais do servidor que está acessando.

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

Libsafe: Protegendo Linux contra Smashing Overflow

PaX: Solução eficiente para segurança em Linux

Análise Forense - Aspectos de perícia criminal

Segurança no SSH via plugins da PAM

Security Hacks: Linux & BSD

Leitura recomendada

Bootando CDROM com o grub / lilo

O Kerberos não é um cachorro de 3 cabeças!

Instalando o PFSense em uma máquina virtual

Race condition - vulnerabilidades em suids

Instalar o Nagios 4 no Ubuntu ou Debian

  
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