O tÃtulo é meu pedido. Estou lendo há horas e encontrei tutoriais para mover /home para uma partição e /tmp para uma partição. Mas nenhum para converter todos os diretórios recomendados em partições para o Ubuntu Server. Um tutorial chegou perto, mas ignorou a etapa obviamente necessária de copiar dados de diretórios anteriores para novas partições.
De qualquer forma, depois de muitas horas, ainda não encontrei um tutorial que cubra minha situação bastante comum.
Situação:
Instalei o Ubuntu Server em servidores Prod & Test (vps e virtualbox, respectivamente), fiz algum trabalho. Ao ler os tutoriais de proteção do servidor, percebi que é uma prática recomendada ter /boot /home /swapfile /tmp /usr e var... /opt? tudo em partições separadas para gerenciamento de recursos e motivos de segurança.
A maneira correta de criar as partições mencionadas acima é usando o LVM
No entanto, nenhum dos tutoriais discute / recomenda tamanhos de partição (proporcionalmente, como obviamente sistemas diferentes têm espaço em disco diferente disponÃvel, o meu é de 80 GB em / )
Além disso, alguns tutoriais mencionam as alterações necessárias /etc/fstab
e outros não.
Meu objetivo é converter minha configuração de partição única de 80 GB em várias partições e, em seguida, proteger as partições contra ataques e explorações comuns usando: uma combinação nodev,noexec,nosuid
de/etc/fstab
Eu posso passar dias testando e falhando em diferentes configurações no virtualbox... Ou algum bonito e/ou bonito " Ubuntu Server Partitioning Guru " pode publicar um guia definitivo fácil de seguir (público-alvo de usuário intermediário) como descrevi acima e se tornar famoso na Internet como muitos usuários que hospedam seus próprios projetos em vps vão amar e adorar você para sempre. :-)
ATUALIZAÇÃO
Eu originalmente não publiquei o guia de proteção do servidor primário porque eu não queria que este post se tornasse um "debate" sobre o trabalho muito completo desse cara. No entanto, em retrospectiva, acho que seria útil para as pessoas que desejam responder a esta postagem, para ver os benefÃcios reais de segurança que estou tentando alcançar.
Eu acho que geralmente separar as coisas em diferentes sistemas de arquivos não ajuda/melhora a segurança. Se alguém invadir o sistema enquanto ele estiver em execução, de qualquer forma, tudo está montado e não há diferença lógica em ter tudo em um sistema de arquivos. Que razões foram dadas no material que você estudou?
Dito isso, ele pode ajudar no desempenho (diferentes sistemas de arquivos ou hardware diferente abaixo desses pontos de montagem) e diminuir o tempo de recuperação de desastres (por exemplo, se apenas o SSD que mantinha /var sumiu, você só precisa restaurar esse backup e o resto continua funcionando).
Você estava perguntando sobre os tamanhos de partição recomendados:
/
você é bom com 15-20 GB. Eu nunca precisei de mais um servidor (executando um servidor web + servidor de email).swap
Eu costumo colocar em seu próprio volume / partição que tem o mesmo tamanho que a RAM - simplesmente para que o suspend-to-disk possa funcionar. As pessoas costumavam recomendar o tamanho de 2xRAM, mas com os tamanhos de RAM atuais, quando você se depara com uma situação em que precisa de uma quantidade séria de troca, você está com problemas. Você notará isso a partir de uma grande desaceleração e deverá aumentar rapidamente a RAM disponÃvel./boot
só precisa de 500 MB, o que lhe dá espaço para mais de 8 versões kernel+initrd. Certifique-se de executar comapt autoremove
frequência, para mantê-lo aparado após as atualizações do kernel./usr
e/opt
como diretórios em/
, só não vejo vantagem em movê-los para seus próprios sistemas de arquivos./tmp
faz sentido, pois permite que você torne esse diretório gravável em todo o mundo mais restrito - tanto em quanto espaço ele pode usar do espaço totalmente disponÃvel e o que pode ser feito com os arquivos que estão armazenados lá. O guia recomenda usar as opções nodev, nosuid e noexec ao montar o sistema de arquivos. O guia apenas fornece os comandos de montagem para "uso único". Traduzir isso em uma linha em /etc/fstab significaria que você colocanodev,nosuid,noexec
na 4ª (opções) coluna da linha onde você monta o volume /tmp dedicado no arquivo/tmp
./home
e/var
- isso geralmente é o material "importante". Em meus servidores/home
está praticamente vazio, mas/var
contém public_html, os logs, os bancos de dados, etc. Então, mantenho/home
como um diretório em/
, mas/var
definitivamente obtém seu próprio volume e é feito backup com mais frequência. Dê todo o espaço restante depois que o acima foi feito.Então você perguntou como fazer a transição:
/
, anexe o novo disco (arquivo VDI, ...), prepare-o com pvcreate, lvcreate e depois os sistemas de arquivos de sua escolha (mkfs.ext4 por exemplo).rsync -xaP <source>/ <destination>/
para cada um dos seus sistemas de arquivos. A opção '-x' impedirá que o rsync cruze os limites do sistema de arquivos, ou seja, se você fizerrsync -xaP / /mnt/newroot/
isso, ele também não copiará /var, /home ou mesmo todos os novos sistemas de arquivos montados em /mnt. '-a' garantirá que as permissões etc. sejam assumidas sem modificação, e '-P' mostra o progresso. Para obter detalhes, consulteman rsync
.Depois disso, edite o
/mnt/newroot/etc/fstab
e certifique-se de listar todos os sistemas de arquivos nos pontos de montagem apropriados. Se você chegou tão longe, isso não deve ser muito difÃcil (já que você escolheu todos os nomes /dev/mapper/..., sistemas de arquivos, etc.).Você também terá que usar grub-install e talvez update-grub para tornar o novo disco inicializável, mas não tenho tanta certeza sobre o procedimento exato. Com as VMs, você pode experimentá-lo facilmente e, se não inicializar, conecte o disco antigo novamente e corrija-o.
Para referência, aqui está uma sessão de shell que fornece alguns comandos especÃficos sobre particionamento + LVM + formatação + referência nos tópicos fstab. Por favor, note que você provavelmente terá que modificá-los, por exemplo, se o seu dispositivo não for /dev/sda, se você quiser sistemas de arquivos diferentes, etc. - é apenas um exemplo.