Install Debian sans les mains (presque)

Donc, une installation de Debian (presque) sans les mains, ça vous paraît impossible? C’est pourtant ce que permet l’installeur Debian (d-i) grâce à sa fonction de preseeding.

Personnellement, je m’en sers pour aller vite sur la partie pas drôle de l’installation d’un nouveau serveur: installation et configuration de base (jusqu’à la conf du shell et des outils de base).

Prérequi: mon article “Install Debian 100% réseau

Attention: Avec ce qui est décrit là, vous ruinez le disque de la machine que vous réinstallez (on flingue la table de partition – et tout ou partie des données – et on recommence au propre).

Pour les impatients, voir l’exemple d’utilisation 😉

Continue reading

Install Debian 100% réseau

Le but de cet article est d’expliquer comment faire une vraie installation via le réseau de Debian, sans même utiliser une clé USB. Ceci est possible en faisant booter son PC sur sa carte réseau (à condition que celle-ci supporte ce genre de chose)PXE.

Cette méthode est aussi applicable pour d’autres distributions, à condition de trouver les bonnes infos/images (je ferai peut-être un article complémentaire pour les distributions Ubuntu, Red Hat/CentOS/Fedora, …).

Continue reading

Cryptage de partitions sous Linux

Avant d’attaquer le cryptage de partitions sous Linux, je vais rappeler quelques règles de base (parce que bon, crypter une partition, ça fait pas tout :))

Sécurisation à minima de sa machine

Je ne rentre pas dans le détail, ce sont justes des principes généraux:

  • protéger l’accès au BIOS par un mot de passe*;
  • protéger le boot manager avec un mot de passe*: on peut soit empêcher le démarrage du kernel en demandant un mot de passe, soit empêcher de passer des options au kernel en demandant un mot de passe (histoire d’empêcher un petit malin de de démarrer avec un init=/bin/sh si pratique quand on a perdu le mot de passe root);
  • empêcher root de se logguer directement sur la machine;
  • ne pas communiquer le mot de passe de root (quand on est plusieurs à se servir d’une machine) ;
  • on ne se loggue pas en root sans avoir une bonne raison ;
  • on ne laisse pas traîner des sessions root ouvertes (un peu de conf dans le serveur SSH, ou des petits outils comme autolog sont très pratiques) ;
  • si on active un serveur SSH sur la machine, c’est une très bonne idée de limiter les utilisateurs qui ont le droit de s’y connecter (cf AllowUsers dans sshd_config(5))
  • configurer correctement NetFilter (cf iptables/ip6tables), ça ne fait jamais de mal, surtout sur une machine nomade que l’on connecte un peu n’importe où.

*: un bon mot de passe fait au moins 8 caractères de longs, il contient des majuscules et des minuscules, un ou plusieurs chiffres et un ou plusieurs signes de ponctuations (personnellement, j’évite ceux qui peuvent avoir une signification dans un shell comme *,# ou \, j’ai déjà eu des surprises). On évite aussi les mots du dictionnaires (même écrit en l33t), les dates de naissances, sa plaque d’immatriculation ou son code de carte de crédit. Au passage, j’en profite pour refaire un peu de pub pour pwgen (package pwgen chez Debian) qui permet de pallier aux problèmes d’imagination quand on doit générer des mots de passe.

Crypter ses partitions:

À mon avis, il y a au moins deux partitions très critiques à protéger: /home qui contient ses données personnelles et de travail, et le swap (vu qu’il contient une image de la mémoire, surtout quand on sert pour mettre sa machine en veille prolongée). Si on le souhaite, on peut aussi crypter l’intégralité de son système (sauf peut-être la partition où l’on stocke le kernel et l’initrd qui va avec), il y a un paquet de tuto sur internet qui expliquent comment jouer avec cryptsetup/LUKS et LVM, je ne l’aborde pas ici.

Dans les exemples qui suivent, le swap sera sur /dev/sda7, et le /home sur /dev/sda8.

Prérequis:

  • installer le package cryptsetup ;
  • choisir un bon mot de passe (voir le laïus plus haut) ;
  • choisir des petits noms pour les partitions (personnellement je fait cNomPartition, c pour dire crypté, ce qui pour la suite donnera cswap pour le swap et chome pour /home) ;
  • les partitions à crypter ne doivent pas être montées, et il faut les backuper avant de faire quoi que ce soit: les opérations suivantes vont tout effacer.

Cryptage des partitions

cryptsetup luksFormat /dev/sda7
cryptsetup luksFormat /dev/sda8

Initialisation/utilisation des partitions

ouverture

cryptsetup luksOpen /dev/sda7 cswap
cryptsetup luksOpen /dev/sda8 chome

On se retrouve avec deux nouveaux périphériques:

  • /dev/mapper/cswap
  • /dev/mapper/chome

formattage et montage

Là, c’est assez standard, il suffit de manipuler les périphériques que l’on vient de créer:

# mkswap -L swap /dev/mapper/cswap
# swapon LABEL=swap
# mkfs.ext4 -L /home /dev/mapper/chome
# mount LABEL=/home /home

Un peu de conf système

mise à jour de l’initrd

# update-initramfs -u -k $(uname -r)

ou plus radical:

# update-initramfs -d -k $(uname -r)
# update-initramfs -c -k $(uname -r)

modif de /etc/crypttab et /etc/fstab

Histoire de pas tout perdre au reboot, on ajoute ces deux lignes dans le fichier /etc/crypttab:

cswap /dev/sda7 none luks
chome /dev/sda8 none luks

et celles-ci dans le fichier /etc/fstab:

LABEL=swap none swap sw 0 0
LABEL=/home /home ext relatime,nodev,nosuid 0 2

Maintenant, au reboot, le système vous demande un mot de passe pour chaque volume crypté qu’il active puis monte.

Si quelqu’un démonte le disque dur pour le mettre ailleurs, il devrait bien se casser les dents sur vos données 🙂