it-swarm-pt.tech

A maneira mais segura de particionar o linux?

Recentemente, adquiri um netbook para jogar e quero instalar o Kali Linux para poder começar a aprender sobre segurança de rede e explorar o desenvolvimento. Eu quero usar isso para aprender o máximo de segurança possível.

Qual é a melhor maneira de particionar uma caixa Linux para que ela seja mais resistente a um risco de segurança? É uma partição única que contém todas as pastas no linux realmente tão ruim?

Pontos extras se você puder entrar em detalhes sobre as ameaças possíveis. Eu quero aprender o máximo possível.

33
DCIndieDev

Lembre-se da Santíssima Trindade da Segurança da Informação: C (confidencialidade), I (integridade) e A (disponibilidade). Portanto, quando falamos sobre o fortalecimento da configuração, é necessário considerar a tecnologia com a qual você está trabalhando, as informações protegidas, como as informações são usadas na organização e as ameaças. Com base nessas respostas e possivelmente em outras, você pode começar a determinar em quais inquilinos são mais importantes e em que se concentrar.

No nível do sistema de arquivos, você normalmente está mais interessado em Integridade e Disponibilidade. A confidencialidade das informações provavelmente deve ser tratada em uma camada diferente, mas como você coloca nossos sistemas de arquivos e como os utiliza deve garantir que as informações sejam confiáveis ​​e estejam sempre disponíveis quando necessário.

Uma coisa a ter em mente ao organizar suas partições são os modos de falha. Normalmente, essa pergunta está no formato: "O que acontece quando a partição x é preenchida?"

O que acontece se a partição que armazena o sistema operacional estiver cheia? Às vezes, coisas estranhas acontecem quando / É preenchido. Às vezes, o sistema trava. Às vezes, nenhuma nova sessão de logon pode ocorrer. Às vezes, o sistema se recusa a inicializar.

De todos os modos de falha, este é o mais difícil de caracterizar estritamente, pois seus sintomas têm maior probabilidade de mudar com base no SO, versão do kernel, configuração etc. Alguns sistemas de arquivos, principalmente a linha ext, reservam uma certa quantidade de espaço quando o sistema de arquivos é criado. Esse espaço reservado apenas pode ser usado pelo usuário root e destina-se a permitir que o administrador do sistema ainda opere e limpe o espaço.

O que acontece se a partição de armazenamento de logs estiver cheia? Você perde dados de auditoria/relatório e, às vezes, é usado pelos atacantes para ocultar suas atividades. Em alguns casos, seu sistema não autenticará novos usuários se não conseguir registrar o evento de login.

O que acontece em um sistema baseado em RPM quando /var Está cheio? O gerenciador de pacotes não instala ou atualiza pacotes e, dependendo da sua configuração, pode falhar silenciosamente.

É fácil preencher uma partição, especialmente quando um usuário é capaz de escrever nela. Por diversão, execute este comando e veja com que rapidez você pode criar um arquivo muito grande: cat /dev/zero > zerofile.

Além de preencher partições, quando você coloca locais em diferentes pontos de montagem, também pode personalizar as opções de montagem.

O que acontece quando /dev/ Não está montado com noexec? - Como /dev É normalmente assumido como sendo mantido pelo sistema operacional e contém apenas dispositivos nos quais ele era frequentemente (e às vezes ainda é) usado para ocultar programas maliciosos. Sair de noexec permite iniciar binários armazenados lá.

Por todas essas razões e mais, muitos guias de proteção discutirão o particionamento como uma das primeiras etapas a serem executadas. De fato, se você está construindo um novo servidor, como particionar o disco é quase exatamente o que você precisa para decidir, e muitas vezes o mais importante primeiro coisa que você tem difícil mudar depois. Existe um grupo chamado Centro de segurança na Internet que produz montes de guias de configuração fáceis de ler. Provavelmente, você pode encontrar um guia para o seu sistema operacional específico e ver quaisquer detalhes que eles possam dizer.

Se olharmos para o RedHat Enterprise Linux 6, o esquema de particionamento recomendado é o seguinte:

# Mount point           Mount options
/tmp                    nodev,nosuid,noexec
/var                    
/var/tmp                bind (/tmp)
/var/log
/var/log/audit
/home                   nodev
/dev/shm                nodev,nosuid,noexec

O princípio por trás de todas essas alterações é impedir que elas impactem uma à outra e/ou limitar o que pode ser feito em uma partição específica. Pegue as opções para /tmp Por exemplo. O que isso diz é que nenhum nó de dispositivo pode ser criado lá, nenhum programa pode ser executado a partir daí e o bit set-uid não pode ser definido em nada. Por sua natureza, /tmp É quase sempre gravável no mundo e geralmente é um tipo especial de sistema de arquivos que só existe na memória. Isso significa que um invasor pode usá-lo como um ponto de preparo fácil para descartar e executar código malicioso e, ao travar (ou simplesmente reiniciar), o sistema limpará todas as evidências. Como a funcionalidade de /tmp Não exige nenhuma dessas funcionalidades, podemos desativar facilmente os recursos e evitar essa situação.

Os locais de armazenamento de log, /var/log E /var/log/audit São esculpidos para ajudar a protegê-los da exaustão de recursos. Além disso, o auditd pode executar algumas tarefas especiais (geralmente em ambientes de segurança mais alta) quando o armazenamento de log começa a encher. Ao colocá-lo em sua partição, essa detecção de recurso tem melhor desempenho.

Para ser mais detalhado, e citar mount(8), é exatamente isso que as opções usadas acima são:

noexec Não permita a execução direta de nenhum binário no sistema de arquivos montado. (Até recentemente, era possível executar binários de qualquer maneira usando um comando como /lib/ld*.so/mnt/binary. Esse truque falha desde o Linux 2.4.25/2.6.0.)

nodev Não interprete caracteres ou bloqueie dispositivos especiais no sistema de arquivos.

nosuid Não permita que os bits set-user-identifier ou set-group-identifier entrem em vigor. (Isso parece seguro, mas na verdade é bastante inseguro se você tiver o suidperl (1) instalado).

Do ponto de vista da segurança, essas são opções muito boas de conhecer, pois permitem proteger o sistema de arquivos. Em um ambiente altamente seguro, você pode até adicionar a opção noexec a /home. Isso tornará mais difícil para o usuário padrão escrever scripts do Shell para processar dados, por exemplo, analisar arquivos de log, mas também impedirá que eles executem um binário que elevará privilégios.

Além disso, lembre-se de que o diretório inicial padrão do usuário raiz é /root. Isso significa que ele estará no sistema de arquivos /, e não em /home.

Exatamente quanto você dá a cada partição pode variar bastante, dependendo da carga de trabalho do sistema. Um servidor típico que eu gerenciei raramente exigirá interação pessoal e, como tal, a partição /home Não precisa ser muito grande. O mesmo se aplica a /var, Pois ele tende a armazenar dados bastante efêmeros que são criados e excluídos com frequência. No entanto, um servidor Web normalmente usa /var/www Como playground, o que significa que isso também precisa estar em uma partição separada ou /var/ Precisa ser grande.

No passado, eu recomendei o seguinte como linhas de base.

# Mount Point       Min Size (MB)    Max Size (MB)
/                   4000             8000
/home               1000             4000
/tmp                1000             2000
/var                2000             4000
swap                1000             2000
/var/log/audit       250

Elas precisam ser revisadas e ajustadas de acordo com a finalidade do sistema e com o funcionamento do seu ambiente. Eu também recomendaria o uso do LVM e contra a alocação de todo o disco. Isso permitirá que você cresça ou adicione partições facilmente, se essas coisas forem necessárias.

38
Scott Pack

A divisão em uma ou várias partições não é realmente um problema de segurança , mas de confiabilidade A idéia é que, se uma das suas partições falhar, você perderá o conteúdo da partição dessa partição , mas as outras partições serão válidas. Além disso, se você preencher essa partição, outras partições não serão afetadas. Cada partição pode ter seu próprio sistema de arquivos e nem todos os tipos de sistemas de arquivos são equivalentes em relação ao desempenho em vários contextos (embora a maioria dos sistemas de arquivos seja tão boa quanto a outra na maioria dos contextos). Em alguns PCs, o processo de inicialização pode ter problemas para acessar mais do que os primeiros gigabytes do disco devido a peculiaridades históricas dessa arquitetura, que são horríveis demais para serem lembradas aqui; portanto, /boot geralmente é melhor definido como uma partição separada de tamanho limitado e localizado primeiro no disco.

Se você deseja aplicar a criptografia no nível da partição, poderá ter problemas se criptografar demais - ou seja, o código que faz a descriptografia deve estar localizado fora da referida partição. Isso depende muito do produto de criptografia real (alguns podem incorporar o código de descriptografia no gerenciador de inicialização).

Observe que quanto mais você divide seu disco em partições, menos flexível a coisa toda se torna. Quando uma partição é preenchida, ela fica cheia e permanece assim, mesmo que outras partições tenham espaço livre ( LVM pode ajudar a lidar com isso, então você pode querer para dizer "sim" quando o instalador do sistema operacional perguntar se você deseja usar o LVM). Quanto mais partições você criar, mais provável e difícil será esse problema.

O caminho fácil e seguro é permitir que o instalador do SO escolha as partições da maneira que achar melhor. Não altere os tamanhos das partições até ter um conhecimento e experiência precisos sobre o que isso implica. Não se esqueça de fazer backups regulares. Espera-se que, após alguns meses, você deseje reinstalar o sistema operacional para "fazer o que é certo", e isso não é necessariamente uma má idéia, portanto, não se preocupe. Esta é uma ferramenta de aprendizado, não um servidor que entrará em produção.

12
Tom Leek

Eu consideraria isso de uma maneira diferente do que os outros respondentes até agora: se você estiver analisando várias explorações, todas as ameaças serão possíveis e colocar o sistema em sandbox no lugar onde você faz isso o máximo possível parece uma precaução útil. O Xen é uma maneira fácil de fazer isso. Ele pode usar imagens de disco em outro sistema de arquivos, mas se você souber que vai usá-lo, sugiro deixar partições de disco separadas (e verifique se elas não são montadas automaticamente no seu Dom0).

Não sei como Kali funciona como Xen Dom0. Ubuntu, pelo menos, parece ter problemas. Você pode considerar deixar espaço para XenServer ou outra compilação especializada do Xen Dom0. [Editar: Não tenho certeza de como são os netbooks hoje em dia, mas acho que o XenServer não está realmente mirando neles ... Talvez alguma outra distribuição mais simples que funcione bem com o Xen como Dom0. Você poderá configurar uma instalação do Kali que seja executada de forma independente ou como um DomU se analisar explorações for uma tarefa menos comum.]

Nos sistemas BSD, ouvi falar de métodos de proteção que envolvem particionamento para montar o máximo possível somente leitura e usando sinalizadores imutáveis. Eu diria que existem pelo menos alguns sistemas Linux em que uma configuração semelhante é possível, no entanto, parece que o Kali é baseado no Debian e meu senso é que você realmente não pode fazer isso no Debian [editar: a menos que você monte um gravável] FS, o que ainda seria difícil de manter ao longo do tempo]. De qualquer forma, eu não sugeriria isso para uma máquina de uso geral e apenas a apresentaria caso você estivesse mais interessado em todas as maneiras pelas quais o particionamento pode ser usado. Para seu propósito, coloque as ameaças em um sistema que você pode excluir e recriar facilmente.

2
joveian

Há muitas informações boas em algumas dessas respostas, mas não tenho certeza de que elas realmente atendam aos seus requisitos específicos. Dado que seu objetivo declarado é aprender e você planeja usar esse sistema para experimentar e jogar com o Kali Linux para obter um entendimento melhor dos assuntos relacionados à segurança, eu gostaria de procurar um sistema que seja rápido e fácil de reinstalar, e não um que seja reforçado ou seguro. Depois de adquirir conhecimento e experiência com o sistema, você estará em uma posição muito melhor para tomar decisões sobre qual configuração melhor atende às suas necessidades e se encaixa melhor com o seu estilo de trabalho, etc.

Algumas coisas para estar ciente das quais não foram mencionadas por outras.

  • Muitos dos conselhos sobre particionamento estão parcialmente desatualizados e podem entrar em conflito com algumas técnicas modernas usadas para acelerar o processo de inicialização, como pré-ligação e pré-carregamento ou armazenamento em cache.

  • Até você ter uma idéia muito boa de como usará um sistema e como esse sistema está configurado, é quase impossível obter os tamanhos de partição corretos. Conforme indicado por outro usuário, se o Kali usa/opt por exemplo, você deve criar uma partição opt ou/opt usará o espaço alocado para /. Se você não sabe se tem ou se não sabe para que serve, não poderá avaliar o tamanho da partição.

  • Os requisitos que você precisa para aprender são muito diferentes dos requisitos para um sistema de teste de caneta de produção ou auditoria/investigação de segurança. Ao aprender, o que você geralmente precisa fazer é retornar com rapidez e facilidade o sistema para um estado conhecido e bom (padrão de fábrica). Por esse motivo, eu costumava usar uma imagem virtual, mas isso não é realmente viável em um netbook. Para um sistema de produção, teste de caneta, auditoria de segurança etc., eu gostaria de algo bem protegido. Provavelmente eu configuraria o Kali em uma mídia somente leitura com algum suporte de armazenamento dedicado (e limpável). Isso aumentaria minha confiança de que meu sistema não será modificado ou alterado ao ser usado em um ambiente hostil e posso aumentar a confiança de que sempre que eu reiniciar o sistema, ele retornará a uma configuração conhecida etc.

Eu acho que você encontrará o Kali Linux um grande desafio para começar. Dizer que você aprenderá a segurança usando o Kali é como dizer que você está indo para voar ao entrar em um avião de combate. O quão fácil você achará isso dependerá da sua experiência com Linux e da sua familiaridade com os sistemas baseados no Debian. Eu iria apenas com uma instalação padrão com apenas uma única partição que pode ser facilmente apagada e reinstalada. Posteriormente, dependendo do que você encontrar e decidir fazer, considere configurações mais robustas e seguras. Lembre-se também de que Kali é realmente relativamente novo e ainda tem seus próprios problemas de dentição. Manter uma instalação padrão ajudará a reduzir a probabilidade de disparar bugs na configuração do Kali, o que pode ser realmente confuso quando você está aprendendo. Resumindo, mantenha-o simples para começar.

1
Tim X

Todas as outras respostas são bons pontos de partida.

Nos velhos tempos (início dos anos 90), os discos eram pequenos o suficiente para termos a opção de instalar o unix e colocar o/usr em seu próprio disco físico. Após a instalação, poderíamos definir um jumper somente leitura no disco físico. Naqueles dias de texto simples e aberto, tudo na internet, era comum ficar enraizado. O legal dessa configuração é que, mesmo quando você estava enraizado, estava protegido contra arquivos na alteração/usr.

É possível fazer algo semelhante criando/bin,/sbin e/usr em sistemas de arquivos ro, exec e tendo todos os outros sistemas de arquivos noexec.

0
jrwren