Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
slackware:initrd_ssh [2017/03/05 17:21] Thomasslackware:initrd_ssh [2017/03/23 07:51] (Version actuelle) Thomas
Ligne 1: Ligne 1:
 ==== Créer un initrd avec ssh pour déchiffrer la partition système à distance ==== ==== Créer un initrd avec ssh pour déchiffrer la partition système à distance ====
 +
 +=== Création de l'initrd ===
  
 Ayant slackware installée sur une partition chiffrée via Luks, cette distribution propose deux possibilités pour la déchiffrer au démarrage de l'OS : Ayant slackware installée sur une partition chiffrée via Luks, cette distribution propose deux possibilités pour la déchiffrer au démarrage de l'OS :
Ligne 8: Ligne 10:
  
 Avant d'expliquer la marche à suivre, je suppose que vous savez déjà créer un initrd avec les modules et les options nécessaires pour être en mesure de déchiffrer votre partition slackware via la clé USB ou le mot de passe. Voici la marche à suivre : Avant d'expliquer la marche à suivre, je suppose que vous savez déjà créer un initrd avec les modules et les options nécessaires pour être en mesure de déchiffrer votre partition slackware via la clé USB ou le mot de passe. Voici la marche à suivre :
-  - Tout d'abord, créer le paquet [[https://slackbuilds.org/repository/14.2/network/dropbear/|dropbear]] qui sera le serveur ssh utilisé. Une fois le paquet créer, vous aurez juste besoin de l'extraire avec la commande explodepkg.+  - Tout d'abord, créer le paquet [[https://slackbuilds.org/repository/14.2/network/dropbear/|dropbear]] qui sera le serveur ssh utilisé. Une fois le paquet créé, vous aurez juste besoin de l'extraire avec la commande explodepkg
   - Dans votre fichier /etc/mkinitrd.conf, assurez vous d'avoir le module du pilote de votre carte réseau   - Dans votre fichier /etc/mkinitrd.conf, assurez vous d'avoir le module du pilote de votre carte réseau
   - Créer votre initrd.gz comme vous avez l'habitude de le faire avec l'option "-c" pour supprimer /boot/initrd-tree   - Créer votre initrd.gz comme vous avez l'habitude de le faire avec l'option "-c" pour supprimer /boot/initrd-tree
-  - Copier la commande dropbearmulti dans bin/ : <code>cd /boot/initrd-tree/bin +  - Copier la commande dropbearmulti dans /boot/initrd-tree/bin/ : <code>cd /boot/initrd-tree/bin 
-cp dropbearmulti .+cp $PKG/usr/bin/dropbearmulti .
 ln -s dropbearmulti dropbear ln -s dropbearmulti dropbear
 ln -s dropbearmulti dropbearkey</code> ln -s dropbearmulti dropbearkey</code>
   - Créer une bannière (optionnelle). Vous pouvez y saisir les commandes dont vous aurez besoin pour déchiffrer votre partition et poursuivre le démarrage de l'OS : <code>vi /boot/initrd-tree/etc/dropbear/banner</code>   - Créer une bannière (optionnelle). Vous pouvez y saisir les commandes dont vous aurez besoin pour déchiffrer votre partition et poursuivre le démarrage de l'OS : <code>vi /boot/initrd-tree/etc/dropbear/banner</code>
   - L'utilisateur root doit avoir le shell /bin/sh et non bash car il n'est pas présent. Modifier le fichier /boot/initrd-tree/etc/passwd comme ceci : <code>root:x:0:0::/root:/bin/sh</code>   - L'utilisateur root doit avoir le shell /bin/sh et non bash car il n'est pas présent. Modifier le fichier /boot/initrd-tree/etc/passwd comme ceci : <code>root:x:0:0::/root:/bin/sh</code>
-  - Copier votre fichier /etc/shadow (uniquement la ligne root) car il contient le mot de passe à saisir : <code>head -n 1 /etc/shadow > /boot/initrd-tree/etc/shadow</code> +  - Copier votre fichier /etc/shadow (uniquement la ligne root) car il contient le mot de passe à saisir : <code>grep ^root /etc/shadow > /boot/initrd-tree/etc/shadow</code> 
-  - Créer le fichier /boot/initrd-tree/bin/unlock en remplaçant LUKSDEV par celui de votre partition à déchiffrer:<code> +  - Créer le fichier /boot/initrd-tree/bin/bootlock :<code> 
-LUKSDEV=sda4+echo $$ > /bootlock.pid 
 +echo "###########################################" 
 +echo "###        Wait for user input          ###" 
 +echo "###########################################" 
 +echo "Press enter to continue booting:" 
 +read INPUT</code> 
 +  - Créer le fichier /boot/initrd-tree/bin/unlock en spécifiant votre LUKSDEV. Il est important que le nom donné au périphérique déchiffré soit "lukssdXX" :<code> 
 +LUKSDEV=sda2
  
 PATH="/sbin:/bin:/usr/sbin:/usr/bin" PATH="/sbin:/bin:/usr/sbin:/usr/bin"
  
-echo $$ /bootlock.pid 
 # unlock needed devices # unlock needed devices
-cryptsetup luksOpen /dev/${LUKSDEV} luks${LUKSDEV}+cryptsetup luksOpen /dev/${LUKSDEV} luks${LUKSDEV} || exit 1 
 +echo "/dev/${LUKSDEV} unlocked"
  
 # kill bootlock # kill bootlock
 kill $(cat /bootlock.pid)</code> kill $(cat /bootlock.pid)</code>
-  - Créer le fichier /boot/initrd-tree/bin/bootlock :<code> 
-echo "###########################################" 
-echo "###        Wait for user input          ###" 
-echo "###########################################" 
-echo "Type ok and press enter to continue booting:" 
-INPUT='wait' 
-while [ $INPUT != 'ok' ] ; do 
-  read INPUT 
-done</code> 
   - Créer le fichier /boot/initrd-tree/udev.sh :<code>   - Créer le fichier /boot/initrd-tree/udev.sh :<code>
 # initialize network interfaces for ssh boot # initialize network interfaces for ssh boot
Ligne 93: Ligne 93:
 echo "###############################################" echo "###############################################"
 killall dropbear killall dropbear
 +sleep 1
  
 # Now shut down the network so it doesn't interfere with the normal booting process # Now shut down the network so it doesn't interfere with the normal booting process
Ligne 101: Ligne 102:
 ifconfig $INET down ifconfig $INET down
 ifconfig lo down</code> ifconfig lo down</code>
-  - Rendez ces fichiers exécutables :<code>chmod +x /boot/initrd-tree/{udev.sh,network.sh,bin/bootlock,bin/unlock}</code>+  - Rendre ces fichiers exécutables :<code>chmod +x /boot/initrd-tree/{udev.sh,network.sh,bin/bootlock,bin/unlock}</code> 
 +  - Ajouter la ligne "/udev.sh" dans /boot/initrd-tree/init (ligne 139) :<code> 
 +# If udevd is available, use it to generate block devices 
 +# else use mdev to read sysfs and generate the needed devices 
 +if [ -x /sbin/udevd -a -x /sbin/udevadm ]; then 
 +  /sbin/udevd --daemon --resolve-names=never 
 +  /sbin/udevadm trigger --subsystem-match=block --action=add 
 +  /sbin/udevadm settle --timeout=10 
 +  /udev.sh 
 +else 
 +  [ "$DEVTMPFS" != "1" ] && mdev -s 
 +fi</code> 
 +  - Ajouter la ligne "/network.sh" dans /boot/initrd-tree/init (ligne 193) :<code> 
 +if [ -x /sbin/cryptsetup ]; then 
 +  /network.sh 
 + 
 +  # Determine if we have to use a LUKS keyfile: 
 +  if [ ! -z "$LUKSKEY" ]; then…</code> 
 +  - Recréer votre initrd.gz sans l'option "-c" 
 +  - Relancer lilo
slackware/initrd_ssh.1488730909.txt.gz · Dernière modification : 2017/03/05 17:21 de Thomas
CC Attribution 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0