Gentoo Logo

1.  Retirer des fonctionnalités

La règle de base lorsque vous configurez le noyau est de retirer tout ce dont vous n'avez pas besoin. Cela créera non seulement un noyau de petite taille mais retirera également toute vulnérabilité qui pourrait être contenue dans un pilote ou dans d'autres modules.

Vous pouvez également envisager de désactiver le support du chargement des modules. Même s'il est possible de charger des « root kits » sans cette option, cela compliquera l'installation d'un « root kit » par le biais des modules du noyau, du moins pour les attaquants conventionnels.

1.  Le système de fichiers /proc

De nombreux paramètres peuvent être modifiés par le biais de /proc ou en utilisant sysctl.

Vous devez avoir défini CONFIG_SYSCTL dans votre noyau afin de pouvoir modifier des paramètres et variables du noyau dynamiquement. Le noyau 2.4 contient cette option par défaut.

Exemple de code 1.1 : désactiver l'« IP forwarding »

# /bin/echo "0" > /proc/sys/net/ipv4/ip_forward

Assurez-vous d'avoir désactivé l'« IP forwarding ». Cela n'est utile que pour une machine avec plusieurs cartes réseau.

Exemple de code 1.1 : ignorer les paquets ping

# /bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all

Cette commande indiquera au noyau d'ignorer les messages de ping (messages ICMP de type 0). La raison pour cela est qu'un paquet IP transportant un message ICMP peut contenir beaucoup plus d'informations que vous ne le pensez. Les administrateurs utilisent ping comme un outil de diagnostic et se plaindront souvent s'ils ne peuvent l'utiliser. Il n'y a aucune raison que quelqu'un de l'extérieur puisse faire un ping, mais quelquefois cela peut être pratique pour les utilisateurs locaux. Ce problème peut être résolu en désactivant les messages ICMP de type 0 sur le pare-feu.

Exemple de code 1.1 : ignorer les pings de diffusion (« broadcast »)

# /bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

Ceci désactive les réponses aux diffusions ICMP et préviendra des attaques « smurf ». Les attaques « smurf » fonctionnent en envoyant un message ICMP de type 0 (ping) à l'adresse de diffusion du réseau. Typiquement, l'attaquant utilisera une adresse source fausse. Tous les ordinateurs du réseau répondront alors au message ping et l'hôte qui possède vraiment l'adresse source utilisée sera surchargé de messages.

Exemple de code 1.1 : désactiver le routage de paquets d'origine interne

# /bin/echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route

N'acceptez pas les paquets apparemment d'origine interne. Un attaquant peut en effet générer du trafic vers votre réseau en prétendant faire partie du réseau interne. Accepter de tels paquets lui permettrait alors de compromettre votre réseau. Le routage de paquets d'origine interne est rarement utilisé à des fins légitimes ; désactivez-le donc.

Exemple de code 1.1 : désactiver l'autorisation de redirection

# /bin/echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects

Désactivez l'autorisation des redirections ICMP. Elles sont souvent utilisées pour altérer vos tables de routage, parfois de façon malicieuse.

Exemple de code 1.1 : protection contre les mauvais messages d'erreurs

# /bin/echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

Activez la protection contre les faux messages d'erreurs.

Exemple de code 1.1 : activer le filtrage de chemin inverse

# for i in /proc/sys/net/ipv4/conf/*; do
        /bin/echo "1" > $i/rp_filter
done

Activez le filtrage de chemin inverse. Cela vous permet de vous assurer que les paquets utilisent des adresses sources légitimes en rejetant automatiquement les paquets entrants si l'entrée de leur adresse source dans la table de routage ne correspond pas à la carte réseau par laquelle ils entrent. Un des avantages est de pouvoir empêcher l'usurpation d'IP (« spoofing »). Cette option doit être activée sur toutes les interfaces net/ipv4/conf/* pour être efficace.

Attention : par contre, cela peut poser des problèmes si vous utilisez un routage asymétrique (les paquets qui vont de votre machine vers une autre prennent un chemin différent de celui pris par les paquets revenant de cette machine vers la vôtre) ou bien si vous utilisez un hôte non routant qui a plusieurs adresses IP sur différentes cartes.

Exemple de code 1.1 : consigner tous les paquets falsifiés, routés par la source et redirigés

# /bin/echo "1" > /proc/sys/net/ipv4/conf/all/log_martians

Enregistre dans le journal les paquets falsifiés, les paquets routés par la source et ceux qui sont redirigés.

Tous ces paramètres seront effacés lors de votre prochain redémarrage. Je vous conseille donc de les ajouter au fichier de configuration /etc/sysctl.conf qui est utilisé par le script d'initialisation /etc/init.d/bootmisc.

La syntaxe à utiliser dans le fichier /etc/sysctl.conf est simple. Vous devez utiliser la même syntaxe que ci-dessus en enlevant la partie /proc/sys/ des chemins mentionnés ci-dessus et en remplaçant les / par des . :

Exemple de code 1.1 : configurer sysctl.conf

(La commande manuelle) :
/bin/echo "0" > /proc/sys/net/ipv4/ip_forward

(Initialisation automatique via sysctl.conf) :
net.ipv4.ip_forward = 0

1.  Grsecurity

Le correctif disponible sur Grsecurity est inclus dans les sources sys-kernel/hardened-sources, mais il est désactivé par défaut. Configurez votre noyau comme vous le faites normalement et configurez ensuite l'option Grsecurity (sélectionnez l'option « custom »). Des explications détaillées sont disponibles sur la page du projet Gentoo Hardened.

Les sources hardened-sources récentes contiennent la version 2.* de Grsecurity. Pour de plus amples informations, veuillez consulter la documentation disponible sur la page d'accueil de Grsecurity.

1.  Kerneli

Kerneli est un correctif qui ajoute des fonctions de cryptage à votre noyau. En corrigeant votre noyau, vous obtiendrez de nouvelles options comme : le chiffrement cryptographique, des algorithmes de validation et des filtres de boucles cryptographiques.

Attention : le correctif kerneli n'est actuellement pas stable pour les derniers noyaux. Vous prenez donc des risques en l'utilisant.

1.  Autres correctifs du noyau

Il en existe probablement beaucoup d'autres.

Dernière mise à jour le 15 avril 2008

Une version originale plus récente datée du 17 décembre 2013 existe.

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.