10.7. Sécurité du noyau

Ceci constitue une description des options de configuration du noyau en rapport avec la sécurité, une explication de leur effet, et comment les utiliser.

Du fait que le noyau contrôle les communications réseau de votre ordinateur, il est important qu'il soit très sûr, et inviolable. Pour empêcher quelques unes des dernières attaques réseau, vous devriez essayer de garder votre noyau à jour. Vous pouvez trouver les nouvelles versions à ftp://ftp.kernel.org ou grâce aux mises à jour du paquetage du noyau avec MandrakeUpdate.

Il y a là aussi un groupe international qui propose un unique correctif cryptographique unifié pour le noyau GNU/Linux. Ce correctif (patch) fournit le support pour plusieurs sous-systèmes cryptographiques et d'autres choses qui ne peuvent pas être inclues dans le noyau principal, à cause des restrictions à l'export. Pour plus d'information, consulter : http://www.kerneli.org

10.7.1. Options de compilation du noyau

Lorsque ce document a été écrit, le noyau 2.2 était le nec plus ultra. Encore aujourd'hui, la plupart des pare-feu l'utilise encore. Toutefois, avec le noyau 2.4, beaucoup de choses ont changé. La plupart des options de compilation contenues dans ce chapitre sont encore valides, mais le masquage et le transfert de port ont été remplacés par les tables IP. Vous obtiendrez de plus amples renseignements en visitant le Linux iptables HOWTO.

Pour les noyaux 2.2.x, les options suivantes s'appliquent. Vous devriez voir ces options pendant le processus de configuration du noyau. La plupart des commentaires sont issus depuis /usr/src/linux/Documentation/Configure.help, soit le même document utilisé dans l'aide en ligne pendant l'étape make config de la compilation du noyau. Consultez le chapitre Compilation et mise en place de nouveaux noyaux du Manuel de référence pour obtenir une description du processus de compilation d'un nouveau noyau.

10.7.2. Périphériques noyau

Il y a plusieurs périphériques en mode bloc et caractère disponibles sous GNU/Linux qui vous aiderons aussi pour la sécurité.

Les deux fichiers /dev/random et /dev/urandom sont fournis par le noyau pour offrir des données aléatoires à tout instant.

Aussi bien /dev/random que /dev/urandom devraient être assez sûrs pour générer des clés PGP, des challenges ssh, et autres applications où des nombres aléatoires sont requis. Les attaquants devraient être incapable de prédire le nombre suivant, connaissant une séquence initiale de nombres provenant de ces sources. Beaucoup d'efforts ont étés consentis pour s'assurer que les nombres fournis par ces sources sont aléatoires, dans tous les sens du terme.

La seule différence entre ces deux périphériques, est que /dev/random s'épuise en octets aléatoires, et vous fait attendre jusqu'à ce que d'autres ce soient accumulés. Notez que sur certains systèmes, il peut se bloquer pendant un long moment, attendant que de la nouvelle entropie, générée par l'utilisateur entre dans le système. Vous devez donc faire attention avant d'utiliser /dev/random. (La meilleure chose à faire est sans doute de l'utiliser lorsque vous générez des informations de clés sensibles, et vous demandez à l'utilisateur d'utiliser le clavier intensément.)

/dev/random est de haute qualité entropique, généré en mesurant les temps inter-interruptions, etc. Il se bloquera jusqu'à ce que suffisamment de bits aléatoires aient été générés.

/dev/urandom est semblable, mais lorsque la réserve d'entropie baisse, il retournera un mélange cryptographiquement élevé de ce qu'il reste. Ce n'est pas aussi sûr, mais cela suffit pour la plupart des applications.

Vous pouvez lire depuis ces périphériques en utilisant quelque chose comme :

	root#  head -c 6 /dev/urandom | mimencode
Cela imprimera six caractères aléatoires à la console, convenables pour un mot de passe. Vous pourrez trouver mimencode dans le paquetage metamail.

Consultez /usr/src/linux/drivers/char/random.c pour une description de l'algorithme.