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.