Uma coisa a ter em mente ao organizar suas partições são os modos de falha. Normalmente, essa pergunta tem a forma: "O que acontece quando a partição x é preenchida?" O mais caro voretaq7 trouxe à tona a situação, /
causando uma série de problemas difíceis de diagnosticar. Vejamos algumas situações mais específicas.
O que acontece se sua partição armazenando logs estiver cheia? Você perde dados de auditoria / relatório e, às vezes, é usado pelos invasores 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, executar este comando e ver o quão rápido você pode fazer um arquivo grande bem: 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 noexec
? Como /dev
geralmente é assumido que o sistema operacional é mantido e contém apenas dispositivos, ele era frequentemente (e algumas vezes ainda é) usado para ocultar programas maliciosos. Sair 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. Na verdade, se você está construindo um novo servidor como particionar o disco é quase exatamente a primeira coisa que você tem que decidir sobre, e muitas vezes o mais difícil de mudar mais tarde. Existe um grupo chamado Center for Internet Security que produz vários guias de configuração fáceis de ler. Provavelmente, você pode encontrar um guia para 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, /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 própria natureza, /tmp
é quase sempre gravável no mundo e geralmente é um tipo especial de sistema de arquivos que existe apenas 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 log, /var/log
e /var/log/audit
são esculpidos fora a ajuda tampão-los de esgotamento dos 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 um desempenho melhor.
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 ótimas opções para conhecer, pois permitem que você coloque proteções no próprio sistema de arquivos. Em um ambiente altamente seguro, você pode até adicionar a noexec
opção /home
. Isso tornará mais difícil para o usuário padrão gravar scripts de 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, não no /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 /home
partição não precisa ser muito grande. O mesmo se aplica, uma /var
vez que 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 ele também precisa estar em uma partição separada ou /var/
deve ser aumentado.
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.