Cela fait quelques mois que je n’ai pas eu le temps de rédiger de nouveaux articles pour mon blog. La troisième année de bachelier en ingénieur n’est pas des plus évidentes. Bref, passons aux choses sérieuses !
Quand j’ai reçu mon ordinateur après le concours « Parce que je suis Techie », j’ai directement installé un dualboot Ubuntu 14.04 en parallèle avec mon Windows. Une installation de ce genre se fait classiquement en démarrant sur une clé USB (depuis le BIOS) où l’on a préalablement gravé une image disque de l’OS qu’on désire (dans ce cas Ubuntu). Les installateurs Linux ont, en natif, une installation possible d’une cohabitation avec un autre OS. Ce qui implique forcément l’installation d’un lanceur de partition, généralement Grub. Tout est assez simple et n’est jamais qu’une suite de « Enter » et de barres de progression. Mon installation a été faite en moins d’une heure, sans aucun souci.
J’utilise Ubuntu assez diversement. Le temps de démarrage étant assez court et la consommation de la batterie assez réduite, je m’en sers autant pour regarder des séries, assis sur le canapé, que pour suivre un cours avec les slides ou les énoncés des exercices. Le cours de programmation en « Oz », langage inventé par la fac pour un cours, n’est facilement utilisable que depuis un Mac ou un Linux. J’ai été ravi de ne pas devoir installer une machine virtuelle pour l’occasion.
Les mois passent, et je me rends compte que je n’ai plus accès à mon BIOS. Dans ma situation, il y a plusieurs moyens d’y entrer : la touche classique au démarrage F12 ; une entrée dans le menu Grub ; et redémarrer son Windows en mode configuration de l’EFI. Ces trois méthodes m’amenaient à un écran noir où seul un tiret blanc était présent ; l’ordinateur était alors figé. Le forum MSI m’a conseillé de démonter l’ordinateur pour aller déconnecter quelques instants la pile CMOS pour réinitialiser le BIOS. Difficilement réalisable, mais faisable, le résultat était par contre inchangé. Le démarrage sur une clé USB n’était plus possible, et l’installation d’un utilitaire comme Plop dans Grub, qui permet de bypasser le BIOS, était bloqué par le Secure Boot de l’UEFI. J’étais avec deux OS parfaitement fonctionnels, mais bloqués le jour où j’aurais un pépin.
Le temps s’écoule, et mon Linux se fait vieux : quelques bugs à gauche et à droite, démarrage lent et qui parfois n’aboutit à rien, écran bloqué après la mise en veille, etc. Il était grand temps de faire l’upgrade vers la version 16, chose que j’ai faite sans trop de soucis. Le démarrage s’annonçait bien jusqu’à ce que l’écran se mette à freezer à cause du driver Nvidia qui ne supporte pas cette dernière version (pourtant pas toute récente). Quelques changements de drivers conseillés par les forums me permettent de résoudre ce problème d’écran, mais j’ai alors le login loop problem, bien connu des forums Ubuntu : bloqué sur l’écran de login en boucle. Le problème est le driver d’écran. Je suis en quelque sorte dans une boucle de problème : YES ! Je ne chercherai pas plus loin, parce que j’ai déjà un petit projet en tête.
J’ai toujours souhaité essayer d’autres versions de Linux : Debian, Fedora, Manjaro, etc. J’ai très envie de découvrir un peu plus la sécurité informatique et réseautique et, après ma lecture du livre Les bases du hacking de Patrick Engebretson, la distribution qu’il me faut est sans aucun doute Kali Linux. C’est une dérivée de Debian qui préinstalle tous les outils de pentesting (test d’intrusion) en natif : Metasploit, Armitage, Nmap, aircrack, etc. et est configurée pour être sécurisée et « quasi » invisible de base. Alors, comment peut-on installer une nouvelle distribution sans avoir accès au BIOS ? C’est ce que je vais vous expliquer.
J’ai demandé de l’aide sur le forum français de Debian, où les gars ont été super-rapides et très efficaces pour me filer les bons tuyaux. Je suis loin d’avoir compris tout ce que j’ai fait, mais le principal c’est que ça ait fonctionné !
L’idée va être de partir du Linux qui existe mais qui fonctionne mal (dans mon cas Ubuntu) avec juste une connexion internet et un terminal. Dans un premier temps on va créer une nouvelle partition pour la nouvelle distribution (ici Kali), opération assez risquée ; et, dans un deuxième temps, décompresser un noyau Linux et réellement faire une installation dessus avec l’utilitaire debootstrap. Le tout est donc réalisé depuis un premier Linux et permet de « construire » un deuxième.
Pour créer la partition, on utilise l’utilitaire Gparted. Personnellement, j’ai redimensionné la partition Windows pour libérer environ 80 Go en ext4. Attention, cette opération est risquée : faites des sauvegardes de vos données ! Retenez le nom de la partition, dans mon cas il s’agit de sda10.
On va créer un répertoire où l’on montera la partition du second Linux :
sudo mkdir /mnt/work
sudo mount /dev/sda10 /mnt/work/
On installe les quelques outils liés à debootstrap :
sudo apt-get install gksu debootstrap schroot
On télécharge le script permettant à debootstrap d’installer Kali, et on le place dans le bon répertoire :
curl -O https://raw.githubusercontent.com/hackgnar/gumstix-overo-images/master/kali/kali_debootstrap
sudo mv kali_debootstrap /usr/share/debootstrap/scripts/kali-rolling
Et on commence l’installation. Dans mon cas, mon processeur est un Intel i7 ; donc une architecture amd64 est adaptée. Documentez-vous si vous vous préparez à faire une manœuvre du même genre.
sudo debootstrap --arch=amd64 kali-rolling /mnt/work http://http.kali.org/kali
On espère que l’installation s’est bien terminée, et a priori on a déjà une version minimaliste de Kali sur notre partition. On utilise alors l’outil chroot après avoir monté les différents répertoires pour rentrer carrément dans le nouveau Linux. Ce passage est complètement dingue et je n’y comprends pas tout.
sudo mount -o bind /dev /mnt/work/dev
sudo mount -o bind /dev/pts /mnt/work/dev/pts
sudo mount -t sysfs /sys /mnt/work/sys
sudo mount -t proc /proc /mnt/work/proc
sudo cp /proc/mounts /mnt/work/etc/mtab
sudo cp /etc/resolv.conf /mnt/work/etc/resolv.conf
sudo chroot /mnt/work/
On est maintenant dans un terminal « sur » la nouvelle distribution. On va installer un noyau et une image Kali :
apt-get install linux-headers-4.9.0-kali3-amd64
apt-get install linux-image-4.9.0-kali3-amd64
Les commandes apt-cache search linux-headers ou linux-image peuvent être utiles pour trouver la dernière version.
- On met tout à jour :
- Définissez un mot de passe pour l’utilisateur root :
- Installez le sudo :
- Ajoutez un utilisateur avec droit administrateur (root):
- Installez et configurer les locales (langue et clavier) :
- Vous aurez besoin d’une connexion internet filaire pour la suite de l’installation, mais on va déjà configurer l’interface eth0 :
- Installez un service de connexion internet :
- Installez l’utilitaire d’amorçage sur cette distribution :
- Remettez une dernière fois tout à jour
- Sortez du chroot :
- Mettez à jour le Grub déjà existant sur la premier Linux :
Redémarrez votre ordinateur et choisissez l’entrée « Kali » dans Grub : normalement le démarrage se déroule sans trop de souci. Vous allez aboutir à un terminal où l’on vous demande de vous logger avec vos identifiants. Attention, le clavier est peut-être encore en configuration QWERTY.
Si le démarrage semble bien se passer mais que vous n’arrivez pas à un terminal (figé sur une ligne, par exemple), vous pouvez essayer un CTRL + ALT + F2 ;vous devriez arriver dans un terminal.
Une fois dans ce terminal, vous pouvez être déjà satisfait, vous êtes sous la version minimaliste de Kali ! On va se connecter à internet par un simple :
sudo ifup eth0
Notez que le sudo est utile si vous ne vous êtes pas connecté en root mais avec votre compte utilisateur. Testez la connexion internet en pingant n’importe quel site :
ping www.google.com
Évidemment, dans mon cas, ça ne répondait pas : ma partition n’était qu’en lecture seule. Temporairement, j’ai simplement fait un mount -o remount, rw / en sudo pour activer l’écriture. J’ai ensuite redémarré le service de connexion sudo service network-manager restart, et le ping passait enfin. À ce stade, j’ai dû essayer des dizaines de solutions puisque j’avais mes DNS qui ne répondaient pas correctement (problème indépendant).
On installe alors la distribution complète :
sudo apt-get install kali-linux-full
Cette installation va prendre un peu de temps puisqu’elle télécharge tous les programmes natifs de Kali Linux. On installe ensuite une interface graphique, c’est quand même plus agréable. J’utilise Gnome, mais libre à vous de préférer :
sudo apt-get install gnome-core kali-defaults kali-root-login desktop-base
Une fois que tout ça est fait, normalement votre Kali est prêt à vous montrer son interface graphique et à vous donner l’impression d’être derrière un véritable ordinateur :
startx
Vous avez officiellement une nouvelle distribution sur votre ordinateur ! Ça soulage !
J’ai dû chipoter encore avec quelques problèmes dont je vais vous faire part.
Impossible de lancer un terminal dans Gnome, c’est un problème assez connu : les locales sont mal configurées. Je l’ai résolu en allant éditer à la main les différents fichiers :
- locale.conf : y insérer LANG=en_US.UTF-8
- locale.gen : décommenter en_US.UTF-8 en enlevant le #
Et finir par sudo locale gen en_US, sudo locale gen en_US.UTF-8 et sudo update-locale ; vous pouvez regarder vos locales avec locale – a
L’installation du Wifi dans le cas de Gnome se fait en root après avoir installé correctement sa carte Wifi. Je vous renvoie à ce lien :
aptitude install network-manager-gnome
J’avais un souci avec mes DNS, j’étais connecté au Wifi, et le nslookup fonctionnait pour tous les sites web, mais le ping (et donc l’accès web) ne répondait pas toujours. C’est apparemment un bug classique, facilement corrigé en éditant le fichier /etc/nsswitch.conf pour y lire hosts: dns files. Pensez aussi à indiquer dans votre fichier d’interfaces et dans le fichier resolv vos DNS (celle de Google, par exemple : 8.8.8.8).
Kali démarrait très bien mais était toujours en lecture seule au démarrage, impliquant que Gnome ne se lançait pas de manière automatique, et pas d’internet. J’ai dû faire un fsck -y /dev/sda10 pour vérifier le disque (depuis Ubuntu) et aller ajouter une ligne dans le fichier /etc/fstab pour définir le montage du sda10 en paramètre par défaut. Je vous laisse enquêter là-dessus si vous avez le même problème.
En conclusion, un OS super-stable, super-rapide. L’interface est très agréable à utiliser, facile à configurer, et tous les outils ont l’air de fonctionner correctement. Dans quelques semaines, je passerai le pas et j’effacerai carrément la partition contenant Ubuntu ! Une installation sans BIOS, quand on a déjà un Linux qui tourne, c’est donc entièrement faisable, mais pas sans galères. Je rappelle encore une fois que je n’ai pas clairement compris l’intégralité de ce que je faisais ; c’était trop astucieux pour moi, mais finalement c’est une réussite.