|
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 |
/bin/echo "0" > /proc/sys/net/ipv4/ip_forward
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.
|