Sistema Debian ============== A seguir, o procedimento de instalação de um sistema com disco criptografado e gerenciamento de partida via dispositivo de armazenamento USB. Local de instalação ------------------- O procedimento a seguir utiliza LVM e assume que o nome de volume group vg esteja disponível para utilização. Assim, recomenda-se que, durante o procedimento de instalação, seja utilizado 1. Um sistema simples sem LVM. 2. Ou um sistema que utilize LVM mas que não tenha um volume group de nome vg. Caso contrário, você ainda poderá utilizar um nome de volume group intermediário durante a instalação, reiniciar a máquina com um outro sistema onde o nome vg esteja disponível e utilizar o vgrename(8) para renomear o volume group. Instalação ---------- Antes de tudo, determine qual o dispositivo no qual o sistema será instalado, a arquitetura, a versão do sistema e o domínio principal: export device=/dev/nome_do_dispositivo export arch=amd64 export version=lenny export hostname=nome_da_maquina export domain=projeto.org A primeira etapa é o particionamento do disco. Neste exemplo, consideremos o seguinte layout para o disco: fdisk -l $device Como exemplo, assumiremos o seguinte layout, ajuste-o conforme as suas necessidades e gostos: Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes 255 heads, 63 sectors/track, 121601 cylinders Units = cilindros of 16065 * 512 = 8225280 bytes Disk identifier: 0x00000000 Dispositivo Boot Start End Blocks Id System /dev/sdb1 1 249 2000061 82 Linux swap /dev/sdb2 * 250 273 192780 83 Linux /dev/sdb3 274 121601 974567160 8e Linux LVM Em seguida vem a criação do LVM: pvcreate "$device"3 vgcreate vg "$device"3 lvcreate -L20G -n root vg vgchange -a y vg Em seguida, preencher o dispositivo com sujeira: dd if=/dev/urandom of=/dev/vg/root A saída do comando acima deve ser algo como dd: escrevendo em `/dev/vg/root': Não há espaço disponível no dispositivo 41943041+0 registos dentro 41943040+0 registos fora 21474836480 bytes (21 GB) copiados, 8544 s, 2,5 MB/s Proceder igualmente com a partição swap: dd if=/dev/urandom of="$device"1 dd: escrevendo em `/dev/sdb1': Não há espaço disponível no dispositivo 4000123+0 registos dentro 4000122+0 registos fora 2048062464 bytes (2,0 GB) copiados, 972,049 s, 2,1 MB/s Com isso, já é possível passar para a criação do volume criptografado: cryptsetup -h sha256 -c aes-cbc-essiv:sha256 -s 256 luksFormat /dev/vg/root cryptsetup luksOpen /dev/vg/root debootstrap mkfs.ext3 /dev/mapper/debootstrap Montando esse dispositivo num local temporário e instalar o sistema básico: mkdir /tmp/debootstrap mount /dev/mapper/debootstrap /tmp/debootstrap/ debootstrap --arch=$arch $version /tmp/debootstrap/ Configuração inicial -------------------- mount none -t proc /tmp/debootstrap/proc/ mount -o bind /dev/ /tmp/debootstrap/dev cp -L /etc/resolv.conf /tmp/debootstrap/etc echo $hostname.$domain >> /tmp/debootstrap/etc/hostname echo "127.0.0.1 localhost $hostname $hostname.$domain" >> /tmp/debootstrap/etc/hosts chroot /tmp/debootstrap/ export PS1="chroot $PS1" apt-get update ; apt-get upgrade apt-get install locales cryptsetup lvm2 initramfs-tools grub O `/etc/crypttab` deve conter (substitua /dev/sda1 pelo seu valor correspondente para $device: # root /dev/mapper/vg-root none luks,cipher=aes-cbc-essiv:sha256 cswap /dev/sda1 /dev/random swap,cipher=aes-cbc-essiv:sha256 E o `/etc/fstab` deve conter: /dev/mapper/cswap none swap sw 0 0 /dev/mapper/root / ext3 defaults,errors=remount-ro Partida ------- Agora é a hora de configurar o gerenciador de partida: mkfs.ext3 /dev/"$device"2 mount /dev/"$device"2 /boot grub-install --no-floppy "$device" Conteúdo do /boot/grub/menu.lst (substitua de acordo com os valores de $arch e da versão do kernel instalado: title Servidor (hd0) root (hd0,1) kernel /vmlinuz-2.6.26-1-vserver-amd64 root=/dev/mapper/root ro quiet rootdelay=10 initrd /initrd.img-2.6.26-1-vserver-686 title Servidor (hd0) (single) root (hd0,1) kernel /vmlinuz-2.6.26-1-vserver-amd64 root=/dev/mapper/root ro single rootdelay=10 initrd /initrd.img-2.6.26-1-vserver-686 Note que a opção rootdelay é importante no caso de sistemas contidos dentro de volumes USB, já que o kernel demora alguns instantes para detectar tais volumes. Detalhes a respeito em * [Installing Linux on USB - Part 5: Installing Debian Linux on USB flash memory drives](http://blogs.koolwal.net/2009/02/03/installing-linux-on-usb-part-5-installing-debian-linux-on-usb-flash-memory-drives/). * [initramfs-tools: lvm is not initialized on USB disks](http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=366175#37). * [When root on USB: add rootdelay=xx to kernel command line](https://blueprints.launchpad.net/ubuntu/+spec/kernel-boot-usb-roodelay). Para que a partição de boot seja montada após a partida do sistema, adicione a seguinte entrada no /etc/fstab, substituindo, se necessário, sda2 pela partição correspondente: /dev/sda2 /boot ext3 defaults,errors=remount-ro Kernel ------ O `/etc/initramfs-tools/modules` deve conter as linhas dm-mod dm-crypt aes twofish sha256 Já o `/etc/kernel-img.conf` deve possuir a linha do_initrd = Yes Proceda [desabilitando o firewire do sistema](firewire) e, em seguida, instale o kernel: if [ "$arch" == "i386" ]; then kernel_arch="686" else kernel_arch="$arch" fi apt-get install linux-image-2.6-vserver-$kernel_arch Imagem de partida ----------------- Para que o sistema consiga inicializar, atualize a imagem de partida: update-initramfs -v -u Continuando remotamente Para que seja possível continuar remotamente com a configuração, é preciso instalar um servidor SSH: apt-get install openssh-server ssh-keygen -l -f /etc/ssh/ssh_host_dsa_key.pub ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub Aproveite para instalar aplicativos básicos: apt-get install sudo cron lsb-release Por fim, passwd root Agora a máquina já está quase a ponto de poder ser administrada remotamente. Antes disso, configure a rede, instale o sudo e adicione as contas de usuário/a iniciais: vi /etc/network/interfaces # configuracao de rede vi /etc/udev/rules.d/70-persistent-net.rules # ajuste das placas de rede vi /etc/resolv.conf # para usar o dns disponivel no data center apt-get install sudo && adduser nome-de-usuario Antes de largar a máquina no data center, lembre-se de anotar os fingerprints do ssh que você listou anteriormente. Expansão de espaço em disco --------------------------- * [How to resize a LUKS-encrypted partition created over LVM2](http://www.saout.de/tikiwiki/tiki-index.php?page=ResizeLUKSPartitions). * [Resizing Encrypted Filesystems](http://www.debian-administration.org/articles/536). * [Resizing a dm-crypt / LVM / ext3 partition](http://www.hermann-uwe.de/blog/resizing-a-dm-crypt-lvm-ext3-partition). Referências ----------- Algumas referências para instalação: * [Encrypted Root LVM](http://www.howtoforge.com/encrypted-root-lvm). * [Encrypted filesystem - rigacci.org](http://www.rigacci.org/wiki/doku.php/doc/appunti/linux/sa/cryptfs). * [EncryptedFilesystems - Ubuntu Documentation](https://help.ubuntu.com/community/EncryptedFilesystems).