Infelizmente, mesmo depois de tomar medidas de segurança cruciais, as vulnerabilidades de segurança ainda encontram seu caminho em sistemas seguros. Uma maneira de gerenciar e proteger seu sistema é limitar os danos possíveis quando ocorre um ataque.
Neste tutorial, discutiremos o processo de uso de chroot jail para gerenciar danos ao sistema no caso de um ataque. Veremos como isolar processos e subprocessos para um ambiente particular com falsos privilégios de root. Isso limitará o processo a um diretório específico e negará o acesso a outras áreas do sistema.
Uma breve introdução ao chroot jail
Uma jaula chrootéum método de isolar processos e seus subprocessos do sistema principal usando falsos privilégios de root.
Como mencionado, isolar um processo específico usando privilégios de root falsos limita os danos no caso de um ataque malicioso. Os serviços chrootados são limitados aos diretórios e arquivos dentro de seus diretórios e não são persistentes na reinicialização do serviço.
Por que usar chroot jail
O principal objetivo do chroot jail é como uma medida de segurança. O chroot também é útil ao recuperar senhas perdidas montando dispositivos de mídia ao vivo.
Existem várias vantagens e desvantagens de definir a prisão chroot. Esses incluem:
Vantagens
- Limita o acesso: Em caso de comprometimento da segurança, os únicos diretórios danificados são aqueles dentro da jaula chroot.
- Limites de comando: os usuários ou processos ficam limitados aos comandos permitidos na prisão.
Desvantagens
- Pode ser um desafio configurar.
- Requer muito trabalho - Se você precisar de um comando extra além dos permitidos por padrão, você deve incluí-lo manualmente.
Como criar uma jaula chroot básica
Neste processo, iremos criar uma jaula chroot básica com 3 comandos limitados a essa pasta. Isso ajudará a ilustrar como criar uma jaula 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, nós o chamamos de / chrootjail
sudo mkdir / chrootjailUsaremos este diretório como a raiz falsa contendo os comandos que atribuiremos a ele. Com os comandos que usaremos, exigiremos o diretório bin (contém os executáveis do comando) e o, etc., diretório (contendo arquivos de configuração para os comandos).
Dentro da pasta / chrootjail, crie estas duas pastas:
sudo mkdir / chrootjail / etc, bin
A próxima etapa é criar diretórios para bibliotecas vinculadas dinamicamente para os comandos que queremos incluir na prisão. Para este exemplo, usaremos os comandos bash, ls e grep.
Use o comando ldd para listar as dependências desses comandos, conforme mostrado abaixo:
sudo ldd / bin / bash / bin / ls / bin / grep
Se você não estiver dentro da pasta bin, você precisa passar o caminho completo para os comandos que deseja usar. Por exemplo, ldd / bin / bash ou ldd / bin / grep
A partir da saída do ldd acima, precisamos dos diretórios lib64 e / lib / x86_64-linux-gnu. Dentro do diretório jail, crie essas pastas.
sudo mkdir -p / chrootjail lib / x86_64-linux-gnu, lib64Depois de criar os diretórios da biblioteca dinâmica, podemos listá-los usando uma árvore, conforme mostrado abaixo:
Conforme progredimos, você começará a obter uma imagem clara do que significa uma jaula 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 o bin. 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, exigimos as bibliotecas para cada comando. Você pode usar o comando ldd para ver os arquivos a serem copiados.
Vamos começar com bash. Para o bash, exigimos as seguintes bibliotecas:
/ lib / x86_64-linux-gnu / libtinfo.tão.6/ lib / x86_64-linux-gnu / libdl.tão.2
/ lib / x86_64-linux-gnu / libc.tão.6
/ lib64 / ld-linux-x86-64.tão.2
Em vez de copiar todos esses arquivos um por um, podemos usar um loop for simples para copiar cada biblioteca em todas as bibliotecas para / chrootjail / lib / x86_64-linux-gnu
Vamos repetir esse processo para os comandos ls e grep:
Para o comando ls:
Para o comando grep:
Em seguida, dentro do diretório lib64, temos uma biblioteca compartilhada entre todos os binários. Podemos simplesmente copiá-lo usando um comando cp simples:
A seguir, vamos editar o arquivo de login principal do bash (localizado em / etc / bash.bashrc no Debian) para que possamos ajustar o prompt bash ao nosso gosto. Usando comandos simples de echo e tee, conforme mostrado:
sudo echo 'PS1 = "CHROOTJAIL #"' | sudo tee / chrootjail / etc / bash.bashrcDepois de concluir todas as etapas acima, podemos fazer login no ambiente de prisão usando o comando chroot como mostrado.
sudo chroot / chrootjail / bin / bashVocê obterá privilégios de root com o prompt semelhante aos criados nos comandos 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, você deve adicioná-los manualmente.
NOTA: Visto que você incluiu o shell bash, você terá acesso a todos os comandos internos do bash. Isso permite que você saia da prisão usando o comando exit.
Conclusão
Este tutorial cobriu o que é chroot jail e como podemos usá-lo para criar um ambiente isolado 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 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)