[[!toc levels=4]] Sistema Debian ============== A seguir, o procedimento de instalação de um sistema com disco criptografado e gerenciamento de partida via dispositivo de armazenamento USB. 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 vg="install" 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, assumiremos o seguinte layout, ajuste-o conforme as suas necessidades e gostos: # fdisk -l $device 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/install/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 echo LANG=C > /tmp/debootstrap/etc/default/locale 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`): cat > /etc/crypttab <<-EOF # root /dev/mapper/vg-root none luks,cipher=aes-cbc-essiv:sha256 cswap /dev/sda1 /dev/random swap,cipher=aes-cbc-essiv:sha256 EOF E o `/etc/fstab` deve conter: cat > /etc/fstab <<-EOF /dev/mapper/cswap none swap sw 0 0 /dev/mapper/root / ext3 defaults,errors=remount-ro 0 1 EOF Partida ------- Agora é a hora de configurar o gerenciador de partida: mkfs.ext3 "$device"2 mount "$device"2 /boot grub-install --no-floppy "$device" Opcionalmente, adicione ao `/etc/fstab` (substituindo `sda1` pelo valor correspondente para `$device`): /dev/sda2 /boot ext3 defaults,errors=remount-ro 0 2 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-2-vserver-amd64 root=/dev/mapper/root ro quiet rootdelay=10 initrd /initrd.img-2.6.26-2-vserver-amd64 title Servidor (hd0) (single) root (hd0,1) kernel /vmlinuz-2.6.26-2-vserver-amd64 root=/dev/mapper/root ro single rootdelay=10 initrd /initrd.img-2.6.26-2-vserver-amd64 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). Kernel ------ Adicione a lista dos módulos criptográficos necessários ao arquivo `/etc/initramfs-tools/modules`: cat > /etc/initramfs-tools/modules <<-EOF dm-mod dm-crypt aes twofish sha256 EOF Tenha certeza de que o kernel irá utilizar uma imagem de inicialização adicionando a seguinte linha ao arquivo `/etc/kernel-img.conf`: cat > /etc/kernel-img.conf <<-EOF do_initrd = Yes EOF 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 Renomeando o volume group ------------------------- Num sistema GNU/Linux, não pode haver dois volume groups com o mesmo nome. Assim, para evitar conflitos de `LVM`, utilizamos um nome temporário (`$vg`) na instalação do sistema. No entanto, o sistema apenas funcionará com o volume group `vg`. Assim, é preciso renomear o volume group. Para isso, **certifique-se de estar num sistema e computador que não possua nenhum volume group com o nome** `vg` (caso contrário vá para um que satisfaça tal condição) e proceda com a mudança: vgchange -a n $vg vgrename $vg vg 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 screen cron lsb-release openssl 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).