Durcir son kernel : Grsecurity

Publié le par Sabina

Plus d'information sur Grsecurity ici. Pour installer le dernier patch "test" de Grsecurity (qui contient également PaX), il faut se rendre sur la page des patchs de Grsecurity pour récupérer la dernière version "test" correspondant à l'un des derniers kernels stables Linux disponibles sur kernel.org. Les patchs stables n'étant plus disponibles gratuitement (réservés aux sponsors ou clients commerciaux), il est toujours possible de récupérer leur patch en cours de développement qui est le même que l'on retrouve sur des distributions durcies comme Arch Linux ou Hardened Gentoo. Il est tout à fait possible, et même recommandé de faire fonctionner Grsecurity & PaX en combinaison avec SELinux ou AppArmor, pour Ubuntu.

Disclaimer : Si vous ne vous sentez pas de tenter une telle opération (qui n'est pas si compliquée que ça en soi, puisque j'y suis arrivée), laissez-vous le temps de mieux connaitre votre système d'exploitation. Vous devez pouvoir être en mesure de redémarrer sur un ancien noyau si le nouveau ne fonctionne pas, et de pouvoir faire les recherches nécessaires pour ôter le nouveau et recommencer l'opération.

 

  • Pour installer le dernier patch de sécurité "test" Grsecurity 3.1 - 4.4.2 (patch 3.1 correspondant au kernel "vanilla" 4.4.2) sur Ubuntu 14.04, le télécharger sur la page download du site de Grsecurity :

- grsecurity-3.1-4.4.2-201602182048.patch

 

  • Ensuite, récupérer le dernier kernel stable .tar.xz correspondant au dernier patch "test" de Grsecurity sur le site kernel.org :

- Kernel stable 4.4.2.tar.xz

 

  • Vous devez décompresser votre kernel avec votre utilitaire de décompression depuis votre dossier /Téléchargements/ ou /Download/ ce qui va vous donner un dossier /linux-4.4.2/. Créez un dossier /grsec/ dans /usr/src/ puis déplacer ce dossier ainsi que le patch Grsecurity dans /usr/src/grsec/ avec la commande "mv" ou "sudo nautilus".

 

  • A l'installation, Ubuntu ne dispose pas de tous les utilitaires nécessaires pour compiler votre noyau. Il est donc indispensable d'installer les paquets nécessaires à sa compilation puis à son installation (il est possible que certains paquets ne vous soient pas utiles) :
# sudo apt-get install libncurses5 libncurses5-dev libnewt-dev
# sudo apt-get install build-essential initramfs-tools
# sudo apt-get install debconf-utils dpkg-dev debhelper libssl.dev
# sudo apt-get install kernel-package

 

  • Pour pouvoir compiler le kernel 4.4.2 sur Ubuntu 14.04, pensez également à installer la dernière version de l'utilitaire GCC nécessaire à la compilation ainsi que le plugin :
# sudo add-apt-repository ppa:ubuntu-toolchain-r/test
# sudo apt-get update
# sudo apt-get install gcc-4.9 g++-4.9
# sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.9
# sudo apt-get install gcc-4.9-plugin-dev

 

  • A partir du terminal, déplacez-vous dans le dossier /usr/src/linux-4.4.2/ puis patcher le noyau avec les commandes suivantes. Les modifications du patch Grsecurity se trouvant dans /usr/src/grsec/ seront ainsi appliquées dans le dossier du noyau /4.4.2/.
# cd /usr/src/grsec/linux-4.4.2/
# sudo patch -p1 < ../grsecurity-3.1-4.4.2-201602182048.patch

 

  • Toujours depuis /usr/src/grsec/linux-4.4.2/ créer ensuite le fichier de configuration de votre nouveau noyau à partir de la configuration de votre précédent noyau avec la commande suivante. Le nouveau noyau a besoin d'être configurer pour fonctionner. Pour simplifier le travail, nous utiliserons les données de configuration fonctionnelles du noyau précédent. Cette commande copie la configuration du précédent noyau pour l'appliquer au nouveau :
# sudo make oldconfig

 

  • Puis créer et accéder à l'interface de configuration de celui-ci avec la commande suivante afin d'activer et configurer Grsecurity et PaX :
# sudo make menuconfig

 

Je vous suggère de vous rendre sur le toturiel d'InsanityBit, rubrique "Configuring The Kernel" pour un exemple de configuration de Grsecurity & PaX (sur lequel je me suis basée et qui est fonctionnel sur Ubuntu 14.04). Vous pourrez faire vos propres essais de configuration avec votre propre distribution. Une fois terminé, "save" et "exit". Une fois votre nouveau noyau patché et installé, si vous rencontrez des éléments cassés dans votre installation, c'est cette configuration qu'il faudra modifier avant de repatcher et de réinstaller un nouveau noyau fonctionnel.

 

  • Compiler ensuite votre noyau avec la commande suivante (l'opération peut prendre plusieurs heures) toujours depuis /usr/src/grsec/linux-4.4.2/ :
# sudo make deb-pkg

 

  • Enfin, vous pouvez installer le kernel avec les paquets ainsi créés grâce à :

 

# cd ..
# sudo dpkg -i *.deb

 

Lorsque l'opération est terminée, vous pouvez redémarrer votre ordinateur et sélectionner 4.4.2-grsec depuis Grub. Puis une fois connecté à votre session, lancer la commande suivante pour vérifier que vous utilisez bien le nouveau noyau :

# uname -a
Linux 4.4.2-grsec #1 SMP Tue Feb 19 00:20:35 CET 2016

 

C'est réussi ! Il reste à vérifier que rien n'est cassé. Le cas échéant, il faudra compiler plusieurs versions avec différentes configurations pour trouver la plus fonctionnelle.

 

_______________________________________________________________

Sources et références :

- http://www.cyberciti.biz/faq/debian-ubuntu-building-installing-a-custom-linux-kernel/

- https://www.howtoforge.com/kernel_compilation_ubuntu

- http://www.insanitybit.com/2012/05/31/compile-and-patch-your-own-secure-linux-kernel-with-pax-and-grsecurity/

- https://www.linux.com/community/blogs/133-general-linux/881143-how-to-insta........n-ubuntulinux-mint-systems/

Publié dans Hardening

Commenter cet article