Sur tous les systèmes, un certain nombre de paramètres sont
actifs par défaut sur les interfaces réseau. Avec le noyau Linux,
ces paramètres sont placés dans le système de fichiers virtuel
/proc.
Dans le noyau Linux, la granularité du paramétrage de la pile de
protocoles TCP/IP est très fine. Aussi le nombre de paramètres est
important. Il suffit de visualiser le résultat des commandes
ls
/proc/sys/net/ipv4/ ou sysctl -A |grep net pour le
constater.
Voici un petit script appelé show_proc.sh qui permet de visualiser les
paramètres par protocole ou catégorie et leurs valeurs :
#!/bin/bash for param in `find /proc/sys -type f -name "*$1*"`; do echo $param = `cat $param` done
Dans le cas des réglages ICMP on obtient le résultat suivant avec un noyau de distribution standard :
# ./bin/show_proc.sh icmp /proc/sys/net/ipv4/netfilter/ip_conntrack_icmp_timeout = 30 /proc/sys/net/ipv4/icmp_ratemask = 6168 /proc/sys/net/ipv4/icmp_ratelimit = 1000 /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses = 0 /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts = 0 /proc/sys/net/ipv4/icmp_echo_ignore_all = 0
Pour changer les valeurs par défaut attribuées dans le noyau, il existe au moins trois solutions :
-
La première solution consiste à affecter les valeurs individuellement. Prenons l'exemple célèbre de la fonction de routage des paquets IP du noyau :
echo 1 > /proc/sys/net/ipv4/ip_forward
-
La seconde solution utilise le fichier de configuration
/etc/sysctl.confde la commande sysctl appartenant au paquet procps. Ce fichier de configuration n'est pas limité aux fonctions réseau du noyau Linux comme le montre le résultat de la commandesysctl -A. Voici un exemple très simple de fichier/etc/sysctl.conf:# Activation de protection contre les mauvais messages d'erreurs ICMP net.ipv4.icmp_ignore_bogus_error_responses=1
La commande
sysctl -pactive l'ensemble des valeurs indiquées dans le fichier ce configuration. On obtient alors :# ./bin/show_proc.sh icmp_ignore_bogus_error_responses /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses = 1
Comme le fichier
/etc/sysctl.confest lu à chaque démarrage du système, les valeurs des paramètres ajustés seront reprises. Ce fichier de configuration est un moyen pratique de conserver les paramètres personnels des fonctions réseau d'une interface. -
La troisième solution est présentée dans la section «Sécurations des accès réseau» du Manuel de sécurisation de Debian.
Voici un exemple de fichier de configuration /etc/sysctl.conf type :
# Refuser la prise en charge des requêtes ARP pour d'autres hôtes net.ipv4.conf.all.proxy_arp = 0 # Ignorer les mauvais messages d'erreurs ICMP net.ipv4.icmp_ignore_bogus_error_responses = 1 # Ignorer les messages de diffusion ICMP net.ipv4.icmp_echo_ignore_broadcasts = 1 # Journaliser les adresses sources falsifiées ou non routables net.ipv4.conf.all.log_martians = 1 # Refuser les adresses sources falsifiées ou non routables net.ipv4.conf.all.rp_filter = 1 # Refuser les messages ICMP redirect net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.all.send_redirects = 0 # Refuser le routage source net.ipv4.conf.all.accept_source_route = 0
Les quelques paramètres des fonctions réseau du noyau Linux présentés ci-avant ne constituent qu'une infime partie. Le document Ipsysctl tutorial présente l'ensemble des paramètres utilisables pour ajuster le fonctionnement de la pile de protocoles TCP/IP.