Linux-Expo

Filtrage IP sous Linux - Netfilter

Christophe PREMEL / Hervé Schauer Consultants

1er Février 2000


Reproduction strictement interdite

1. Introduction

Cette présentation va aborder plusieurs points distincts :

2. Mise en place de Netfilter

2.1 Compilation du noyau

2.2 Compilation/Installation de Netfilter

3. Au démarrage

3.1 Chargement des modules

Pour que le filtrage soit pris en compte, puisque Netfilter fonctionne à base de modules, il est nécessaire de les charger.

3.2 Lancement à chaque démarrage

Pour que le filtrage soit en place à chaque démarrage, il est nécessaire de charger les modules à chaque 'boot', puis de lancer les règles de filtrage/masquage.

# cd /etc/init.d
# cat filtres.sh
   #!/bin/sh
   #
   modprobe=/sbin/modprobe
   iptables=/sbin/iptables
   #
   $modprobe iptables || exit 1
   $modprobe ipt_state || exit 1
   $modprobe ipt_tcp || exit 1
   $modprobe ipt_udp || exit 1
   $modprobe ipt_LOG || exit 1
   $modprobe ipt_defrag || exit 1
   $modprobe ip_conntrack || exit 1
   $modprobe ip_conntrack_ftp || exit 1
   $modprobe ip_nat || exit 1
   $modprobe ip_nat_ftp || exit 1
   #
   $iptables -F
   $iptables -P INPUT DROP
   $iptables -P OUTPUT DROP
   $iptables -P FORWARD DROP
   #
   [... règles de filtrage ...]
   #

# ln -s /etc/init.d/filtres.sh /etc/rc2.d/S10filtres
(Le lien lançant les filtres dépend des distributions de Linux)

4. Possibilités de Netfilter

5. Qu'est-ce que le "StateFul" ?

Le 'stateful' est la possibilité de garder en mémoire, dans une table d'états, les connexions en cours. Cela permet d'associer que tel client (adresse IP cliente) vers tel serveur (adresse IP serveur) est en train de faire telle chose (connexion du port source x vers le port destination y).

On ne filtre plus simplement maintenant, sur le filtrage TCP/UDP, mais sur l'état en cours des connexions. La fenêtre du paquet retour correspond bien à la transaction en cours, et aux numéros de séquence associés.

6. Différences entre ACCEPT, DROP et REJECT

6.1 Fonction ACCEPT

6.2 Fonction DROP

6.3 Fonction REJECT

7. Différences entre IPchains et Netfilter

8. Comment un paquet traverse les filtres ?

Il y a par défaut, trois chaînes. Ces chaînes sont :

8.1 Chaîne INPUT

8.2 Chaîne OUTPUT

8.3 Chaîne FORWARD

9. Les chaînes

9.1 Qu'est-ce qu'une chaîne ?

Une chaîne peut être assimilée à une 'politique' de sécurité par rapport à des services prédéfinis faisant partie de cette politique. Ces chaînes ou 'politiques' sont decidées et définies par l'administrateur du garde barrière (service sécurité et direction).

Exemples :

9.2 Comment créer une chaîne ?

9.3 Filtrage : les flux

9.4 Filtrage : les règles

 iptables -F
 iptables -P INPUT DROP
 iptables -P OUTPUT DROP
 iptables -P FORWARD DROP
 iptables -A INPUT -s 0/0 -d 0/0 -p icmp --icmp-type 3 -j ACCEPT
 iptables -A OUTPUT -s 0/0 -d 0/0 -p icmp --icmp-type 3 -j ACCEPT
 iptables -A FORWARD -s 0/0 -d 0/0 -p icmp --icmp-type 3 -j ACCEPT
 iptables -N internet_vers_web_local
 iptables -A FORWARD -i eth0 -j internet_vers_web_local
 iptables -A internet_vers_web_local -m state --state ESTABLISHED,RELATED -j ACCEPT
 iptables -A internet_vers_web_local -i eth0 -p tcp -s 0/0 -d 192.70.106.71/32 --source-port 1023: --destination-port 80 -j ACCEPT
 iptables -A internet_vers_web_local -p all -s any/0 -d any/0 -j LOG
 iptables -A internet_vers_web_local -i eth0 -p all -s any/0 -d any/0 -j DROP
 iptables -N interne_vers_internet 
 iptables -A FORWARD -o eth0 -j interne_vers_internet
 iptables -A interne_vers_internet -m state --state ESTABLISHED,RELATED -j ACCEPT
 iptables -A interne_vers_internet -o eth0 -p tcp -s 192.70.106.0/0 -d 0/0 --dport 53 -j ACCEPT
 iptables -A interne_vers_internet -o eth0 -p udp -s 192.70.106.0/0 -d 0/0 --dport 53 -j ACCEPT
 iptables -A interne_vers_internet -o eth0 -p tcp -s 192.70.106.0/0 -d 0/0 --sport 1023: --dport 80 -j ACCEPT
 iptables -A interne_vers_internet -o eth0 -p all -s 192.70.106.0/0 -d 0/0 --sport 1023: --dport 137:139 -j DROP
 iptables -A interne_vers_internet -p all -s any/0 -d any/0 -j LOG
 iptables -A interne_vers_internet -o eth0 -p tcp -s 192.70.106.0/0 -d 0/0 --dport 22 -j ACCEPT
 iptables -A interne_vers_internet -o eth0 -p all -s any/0 -d any/0 -j DROP

10. Etat d'avancement

10.1 Limitations de Netfilter

10.2 Problèmes dans Netfilter

11. Références


HSC ® © Hervé Schauer Consultants 2000 - 4 bis, rue de la gare - 92300 Levallois-Perret
Téléphone : +33 141 409 700 - Télécopie : +33 141 409 709 - E-mail : <secretariat@hsc.fr>