
Par Xavier GRUSELLE et Grégory ALLAIN (Site optimisé pour Firefox 1.5)
Liens conseillés
2- Installation et configuration
2.1) Installation d'Iptables
Il nous faut d'abord les sources du noyau
On les reccupère donc (sur ftp.lip6.fr par exemple;)
On décompresse tout ca dans /usr/src :
tar zxvf linux-2.4.x.tar.gz
On fait un peu le ménage :
cd linux
make mrproper
make menuconfig (pour créer le ficher .config)
On telecharge Iptables :
ncftp ftp.netfilter.org
cd /pub/iptables
get iptables-1.2.6a.tar.bz2
quit
On le décompresse :
tar jxvf iptables-1.2.6a.tar.bz2
cd iptables-1.2.6a
On patch les sources du noyau Linux (on ajoute des fonctionnalités à Netfilter)
make pending-patches
make most-of-pom
Ca lance un script qui nous pose quelques de questions. Le script nous propose pour chaque patch si on veut ou non l'appliquer. Attention ! Certains patches ne sont pas compatibles en eux, lisez bien leur description.
Nous allons dire non à tout sauf :
- config-cleanup.patch
Corrige des petits bugs de chargement.
- conntrack + nat-helper-unregister.patch
Corrige des petit bugs dans nat
- macro-trailing-semicolon-fix.patch
Idem pour certaines macros
- nat-export_symbols.patch
Rajoute des symboles
- netlink-tcpdiag.patch
Permet d'utiliser Ulogd (un journal système en userland)
- nf_register_hook.patch
Ajoute une verification lors du chargement d'un module
- REJECT-dont_fragment.patch
Enleve le flag ``don't fragment'' des packets ICMP Host Unreachable
- iplimit.patch
Permet de limiter le nombre de connexions par IP
- ipv4options.patch
Permet d'appliquer des regles en fonction des options ipv4
- ip_conntrack_protocol_destroy.patch
Permet d'utiliser plusieurs types de passerelles applicatives
- IPV4OPTSSTRIP.patch
Retire les options de l'entete IP
- lenght.patch
Permet de limiter la taille de certains packets
- mport.patch
Permet de spécifier plusieurs ports auquels on applique une regle
- NETLINK.patch
Permet de reccuperer les paquets ``dropés'' dans des applications qui utilisent une socket Netlink. Pratique pour ecrire des IDS.
- nth.patch
Très pratique, permet d'appliquer une regle tous les N packets et de fixers des conteurs sur les règles. Cela peut permetre de faire un load balancer basique.
- pkttype.patch
Permet de verifier la classe d'adresse (Broadcast, multicast ... )
- psd.patch
Pour detecter certains scanns (dérivé de Scanlogd du célèbre Solar Designer)
- quota.patch
Pour limiter un certain type de traffic à un volume maximal
- time.patch
Permet d'appliquer des regles en fonction de l'heure !!
- TTL.patch
Pour modifier la valeur du ttl
- recent.patch
Permet de garder dans une liste pendant un temps donné une adresse ip intercepté par une règle.
- string.patch
Extrèmement pratique ! Permet de rechercher une chaine dans un paquet entier ! Grace à ce patch on peut se faire plusieurs règle de détection d'intrusion ( par exemple on peut rechercher les URL qui font peter un IIS ... )
On compile et on installe :
make && make install
Certains de ces patchs sont expérimentaux et risquent de faire planter votre bécanne. Biensur, en production, on utilisera jamais toutes ces fonctions en meme temps, ce serait un peu lourd à gérer... On ne prend toute fois aucun risque à les compiler comme modules car on est pas obligé de les charger. On pourra par exemple utiliser que deux ou trois nouvelles fonctions en plus des modules standards.