Infelizmente, mesmo depois de tomar medidas cruciais de segurança, as vulnerabilidades de segurança ainda chegam a sistemas seguros. Uma maneira de gerenciar e proteger seu sistema é limitar o dano possível quando um ataque ocorrer.
Neste tutorial, discutiremos o processo de usar a prisão de Chroot para gerenciar os danos do sistema no caso de um ataque. Veremos como isolar processos e subprocessos em um ambiente específico com privilégios de raiz falsos. Fazer isso limitará o processo a um diretório específico e negará o acesso a outras áreas do sistema.
Uma breve introdução à prisão de Chroot
Uma prisão de chroot é um método de isolamento de processos e seu subprocesso do sistema principal usando privilégios de raiz falsos.
Como mencionado, isolar um processo específico usando os privilégios de raiz falsos limita os danos no caso de um ataque malicioso. Os serviços de croted estão limitados aos diretórios e arquivos em seus diretórios e não são persistentes no reinício do serviço.
Por que usar a prisão de chroot
O principal objetivo da prisão de Chroot é como uma medida de segurança. Chroot também é útil ao recuperar senhas perdidas por montagem de dispositivos da mídia ao vivo.
Existem várias vantagens e desvantagens de definir a cadeia de chroot. Esses incluem:
Vantagens
Desvantagens
Como criar uma prisão básica de chroot
Nesse processo, criaremos uma prisão básica de chroot com 3 comandos limitados a essa pasta. Isso ajudará a ilustrar como criar uma prisão e atribuir vários comandos.
Comece criando uma pasta principal. Você pode pensar nesta pasta como a pasta no sistema principal. O nome da pasta pode ser qualquer coisa. No nosso caso, chamamos de /chrootjail
sudo mkdir /chrootjail
Usaremos este diretório como a raiz falsa que contém os comandos que atribuiremos a ele. Com os comandos que usaremos, exigiremos o diretório de bin (contém os executáveis dos comandos) e o, etc., diretório (contendo arquivos de configuração para os comandos).
Dentro da pasta /Chrootjail, crie essas duas pastas:
sudo mkdir /chrootjail /etc, bin
O próximo passo é criar diretórios para bibliotecas dinamicamente vinculadas para os comandos que queremos incluir na prisão. Para este exemplo, usaremos comandos Bash, LS e Grep.
Use o comando LDD para listar as dependências desses comandos, como mostrado abaixo:
sudo ldd /bin /bash /bin /ls /bin /grep
Se você não estiver dentro da pasta Bin, precisa passar o caminho completo para os comandos que deseja usar. Por exemplo, LDD /BIN /BASH ou LDD /BIN /GREP
Da saída LDD acima, precisamos dos diretórios Lib64 e /Lib /X86_64-Linux-Gnu. Dentro do diretório da prisão, crie essas pastas.
sudo mkdir -p /chrootjail lib /x86_64-linux-gnu, lib64
Depois de criarmos os diretórios dinâmicos da biblioteca, podemos listá -los usando uma árvore, como mostrado abaixo:
À medida que progredimos, você começará a obter uma imagem clara do que significa uma prisão de chroot.
Estamos criando um ambiente semelhante a um diretório raiz normal de um sistema Linux. A diferença é que, dentro desse ambiente, apenas comandos específicos são permitidos e o acesso é limitado.
Agora que criamos a lixeira. etc., Lib e Lib64, podemos adicionar os arquivos necessários dentro de seus respectivos diretórios.
Vamos começar com os binários.
sudo cp /bin /bash /chrootjail /bin && sudo cp /bin /ls /chrootjail /bin && sudo cp /bin /grep /chrootjail /bin
Tendo copiado os binários para os comandos de que precisamos, precisamos das bibliotecas para cada comando. Você pode usar o comando ldd para visualizar os arquivos para copiar.
Vamos começar com Bash. Para Bash, exigimos as seguintes bibliotecas:
/lib/x86_64-linux-gnu/libbinfo.então.6
/lib/x86_64-linux-gnu/libdl.então.2
/lib/x86_64-linux-gnu/libc.então.6
/lib64/ld-linux-x86-64.então.2
Em vez de copiar todos esses arquivos um por um, podemos usar um loop simples para copiar cada biblioteca em todas as bibliotecas para/chrootjail/lib/x86_64-linux-gnu
Vamos repetir esse processo para o comando LS e Grep:
Para o comando ls:
Para o comando grep:
Em seguida, dentro do diretório Lib64, temos uma biblioteca compartilhada em todos os binários. Podemos simplesmente copiá -lo usando um comando simples de CP:
Em seguida, vamos editar o arquivo de login principal do Bash (localizado em /etc /bash.Bashrc em Debian) para que possamos ajustar o prompt de bash ao nosso gosto. Usando um simples comandos de eco e tee como mostrado:
sudo echo 'ps1 = "chrootjail #"' | sudo tee/chrootjail/etc/bash.Bashrc
Depois de concluir todas as etapas acima, podemos fazer login no ambiente da prisão usando o comando chroot, como mostrado.
sudo chroot /chrootjail /bin /bash
Você receberá privilégios de raiz com o prompt semelhante aos criados no comando Echo e Tee acima.
Depois de fazer login, você verá que só tem acesso aos comandos que incluiu quando criou a prisão. Se você precisar de mais comandos, precisará adicioná -los manualmente.
OBSERVAÇÃO: Desde que você incluiu o shell de bash, você terá acesso a todos os comandos internos da festa. Isso permite que você saia da prisão usando o comando de saída.
Conclusão
Este tutorial abordou o que é a prisão de chroot e como podemos usá -la para criar um ambiente isolado a partir do sistema principal. Você pode usar as técnicas discutidas no guia para criar ambientes isolados para serviços críticos.
Para praticar o que você aprendeu, tente criar uma prisão do Apache2.
DICA: Comece criando um diretório raiz, adicione os arquivos de configuração (etc/apache2), adicione a raiz do documento (/var/www/html), adicione o binário (/usr/sbin/apache2) e, finalmente, adicione as bibliotecas necessárias (LDD/ usr/sbin/apache2)