0% ont trouvé ce document utile (0 vote)
39 vues13 pages

Ip Table

Le document traite des pare-feux, qui sont des systèmes de sécurité contrôlant le trafic réseau pour protéger les ressources internes contre les accès non autorisés. Il distingue les pare-feu matériels et logiciels, décrit leurs fonctionnalités, et explique leur positionnement dans une architecture réseau. En outre, il aborde l'utilisation d'IPTables pour configurer des règles de filtrage sur les paquets dans un système Linux.

Transféré par

taneyofranck79
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
39 vues13 pages

Ip Table

Le document traite des pare-feux, qui sont des systèmes de sécurité contrôlant le trafic réseau pour protéger les ressources internes contre les accès non autorisés. Il distingue les pare-feu matériels et logiciels, décrit leurs fonctionnalités, et explique leur positionnement dans une architecture réseau. En outre, il aborde l'utilisation d'IPTables pour configurer des règles de filtrage sur les paquets dans un système Linux.

Transféré par

taneyofranck79
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

The Future Belongs To Us

MODULE VII : LES PARE-FEUX

I. Généralité sur les pare feux


1. Définition d’un pare-feu

Un pare-feu (ou firewall en anglais) est un système de sécurité chargé de contrôler les
entrées et sorties d’un réseau informatique. Il agit comme une barrière entre un réseau interne
sécurisé (comme celui d’une entreprise) et un réseau externe non fiable (comme Internet).
Il permet de filtrer les communications en fonction d’un ensemble de règles définies, dans le
but de protéger les ressources internes contre les accès non autorisés, les attaques ou les logiciels
malveillants. Un pare-feu analyse les paquets de données qui transitent par le réseau. Chaque
paquet contient des informations comme L’adresse IP source et destination ; Le port utilisé
(HTTP, FTP, etc.) ; Le protocole (TCP, UDP, etc.). Le pare-feu compare ces données à ses
règles de filtrage, et décide d’autoriser le passage (ACCEPT), de bloquer (DROP ou
REJECT), ou de rediriger (par exemple vers un proxy ou une alerte).

Objectifs et rôles principaux d’un pare-feu

• Contrôler le trafic réseau : autoriser ou bloquer les connexions selon des règles.
• Protéger le réseau interne : empêcher les intrusions, attaques, et accès non autorisés.
• Filtrer le contenu : bloquer certains types de contenus ou sites web.
• Suivre et journaliser l’activité réseau : pour détecter d’éventuelles anomalies.
• Limiter les points d’entrée : et renforcer les politiques de sécurité.

2. Catégories de pare-feu

On peut dire qu’il existe deux grandes catégories principales de pare-feu

Pare-feu matériel

• Il s’agit d’un appareil physique dédié au


filtrage réseau.
• Placé entre le réseau interne et Internet.
• Utilisé dans les entreprises ou environnements
professionnels.
• Peut gérer de gros volumes de trafic.
• Exemples : Cisco ASA, FortiGate, SonicWall.

Pare-feu logiciel

• C’est un programme installé sur un ordinateur ou


un serveur.
• Contrôle les connexions réseau de cette machine
uniquement.
• Utilisé dans les PC personnels ou serveurs.
• Examples: Windows Defender Firewall, Zone
Alarm, UFW (Linux), Iptables.

Startech Academy P. 1
The Future Belongs To Us
➢ Ce que peut faire un pare-feu
o Être un point central de contrôle de sécurité plutôt que de multiples contrôles dans
différents logiciels clients ou serveurs.

o Appliquer une politique de contrôle d’accès


o Enregistrer le trafic (journaux de sécurité / logs)

o Appliquer une défense en profondeur (multiples pare-feu)

➢ Ce que ne peut pas faire un pare-feu


o Protéger contre les utilisateurs internes (selon leurs droits)
o Protéger un réseau d’un trafic qui ne passe pas par le pare-feu (eg. Modems)
o Protéger contre les virus
o Se configurer tout seul.
➢ Niveaux de filtrage d’un pare-feu selon le modèle OSI
Un pare-feu peut agir à plusieurs couches du modèle OSI, ce qui lui permet d'analyser et de
filtrer les données avec plus ou moins de précision.
Couche Nom de la Type de filtrage effectué Exemple
OSI couche
2 Liaison de Filtrage par adresse MAC, Bloquer une machine par
données interface réseau son adresse MAC
3 Réseau Filtrage sur l’adresse IP, Bloquer une IP ou un
protocole IP, ICMP ping
4 Transport Filtrage selon les ports Autoriser le port 80
TCP/UDP ou protocole (HTTP), bloquer 21

Startech Academy P. 2
The Future Belongs To Us
3/4 Filtrage Suivi de l’état des connexions Autoriser les réponses
dynamique (connexion établie, en cours, aux connexions initiées
(stateful) etc.)
7 Application Analyse du contenu des Bloquer des mots-clés,
applications (HTTP, FTP, des URL, ou des types de
DNS, etc.) – proxy fichiers

Plus on monte dans les couches, plus l’analyse est fine, mais cela demande plus de ressources.
Les pares-feux de nouvelle génération (NGFW) intègrent souvent tous ces niveaux de filtrage,
y compris une inspection approfondie au niveau applicatif (DPI – Deep Packet Inspection). Un
outil comme iptables travaille principalement aux couches 3 et 4, mais peut aussi gérer du
stateful inspection.
3. Fonctionnalités

➢ Principale → filtrage IP (TCP/UDP)

➢ Traduction d’adresses et de → filtrage IP (TCP/UDP) ports.

➢ Control d’accès
➢ VPN : pour sécuriser les communications à distance
➢ IDS / IPS : systèmes de détection et prévention d’intrusion
➢ Proxy : relais entre utilisateurs et services
➢ …

4. Positionnement des pares-feux dans une architecture réseau

• À la frontière du réseau interne et Internet


• Entre les différentes zones du réseau (DMZ, LAN, WAN)
• Devant les serveurs sensibles ou services critiques

En entreprise, les pares-feux sont souvent positionnés selon le modèle en "zones" :

• Zone publique (Internet)


• Zone démilitarisée (DMZ) : serveurs accessibles depuis l’extérieur
• Zone privée (LAN) : utilisateurs et données internes

Startech Academy P. 3
The Future Belongs To Us
II. IPTABLES
Nous avons vu qu’une des méthodes fondamentales de sécurisation des réseaux
informatique est le filtrage des paquets. Maintenant que nous en connaissons le principe, voyons
comment le mettre en place. Le principe est d’´écrire un programme qui récupère toutes les
trames entrantes et sortantes, les analyse et les fait suivre ou non suivant le filtrage désiré. On
a intérêt `à utiliser un modèle en couches qui facilite le travail. Le traitement des trames est
effectué au niveau noyau (non accessible aux utilisateurs, y compris au super-utilisateur) par le
sous-système réseau du système d’exploitation. On ajoute donc une fonctionnalité au niveau
noyau `a ce sous-système avec une interface utilisateur (uniquement le super-utilisateur en
général) permettant de paramétrer le filtrage désiré. Dans le cas du système d’exploitation
Linux, la fonctionnalité est implémentée par netfilter, dont l’interface utilisateur en ligne de
commande s’appelle iptables.
1. Mise en place
Avant d’utiliser iptables il faut, d’une part, configurer le noyau pour qu’il prenne en charge
Netfilter et, d’autre part, mettre en place l’interface utilisateur iptables. Heureusement, les
distributions de Linux les installent la plupart du temps par défaut. Pour le vérifier, placez-vous
en super-utilisateur (soit dans un terminal virtuel texte, soit grâce à la commande sue dans un
pseudo-terminal) et exécuter la commande :
# iptables -L
Si tout est installé et que vous n’avez encore jamais touché `à iptables, les chaines sont vides
et vous vous devriez voir :
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
2. Tables et chaines
Au début, comme le montre l’option -L de la commande iptables, tout passe dans toutes les
directions (Policy ACCEPT), c’est-`a-dire pour chacune des trois chaines par défaut (INPUT,
OUTPUT et FORWARD) de la table filtre (celle par d´défaut).
Nous allons donc nous positionner comme étant sur la machine qui fera office de
firewall/routeur pour tenter de la sécuriser. Lorsqu'un paquet arrive, il va être orienté (selon un
certain nombre de paramètres) dans l'une des différentes chaînes disponibles.

Startech Academy P. 4
The Future Belongs To Us

Ainsi que nous le montre le schéma un paquet rentrera toujours dans la machine via la
chaîne PREROUTING et sortira toujours de la machine via la chaîne POSTROUTING (chaînes
servant notamment à certaines opérations de routage entre les 2 réseaux) raccordés par notre
routeur. Les chaînes INPUT et OUTPUT quant à elle serviront respectivement à placer des
règles pour les paquets destinés à la machine et ceux émis par la machine, pour faire simple si
un paquet est destiné à ma machine, "il arrivera dans la chaîne INPUT" [1] Par exemple si je
demande la visualisation d'une page sur le web depuis la machine, j'émets une requête qui sortira
par la chaîne OUTPUT et la réponse arrivera sur ma machine par la chaîne INPUT. [La nuance
est dans le "destiné", à savoir que l'on peut considérer qu'un paquet à destination du LAN sera,
au moins à certain(s) moment(s) et à certain(s) niveau(x) du modèle OSI, destiné à la machine
faisant office de routeur mais sera lui orienté dans la chaîne FORWARD et non pas dans la
chaîne INPUT] Au moment où le paquet rentre dans la chaîne, les règles correspondant à cette
chaîne sont appliquées dans l'ordre dans lequel elles sont stockées.
La syntaxe générale d'une commande iptables, utilisée pour configurer le pare-feu Netfilter
sous Linux, est la suivante :
# iptables [-t table] command [match] [target/jump]
Détail des éléments :
➢ -t table : spécifie la table à utiliser. Les tables disponibles sont :
▪ filter (par défaut) : pour le filtrage de paquets.
▪ nat : pour la traduction d’adresses (NAT).
▪ mangle : pour modifier les paquets.
▪ raw : pour définir certaines exceptions à la connexion tracking (conntrack).
➢ command : indique l’action sur la chaîne, comme :
▪ -A : ajouter une règle (append)
▪ -I : insérer une règle (insert)
▪ -D : supprimer une règle (delete)
▪ -L : lister les règles (list)
▪ -F : vider toutes les règles (flush)
➢ [match] : critères de correspondance, par exemple :
▪ -p tcp : protocole TCP
▪ --dport 22 : port de destination 22 (SSH)
▪ -s 192.168.1.0/24 : source 192.168.1.0/24

Startech Academy P. 5
The Future Belongs To Us
➢ [target/jump] : l'action à appliquer si les critères sont remplis :
▪ ACCEPT : accepter le paquet
▪ DROP : rejeter le paquet
▪ REJECT : rejeter le paquet avec un message
▪ LOG : journaliser le paquet
La description de l’ensemble des commandes disponibles se retrouve, de façon usuelle, grâce à
: # man iptables
Exemples :
▪ Cette règle autorise les connexions SSH entrantes
# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
▪ rediriger les connexions HTTP (port 80) vers un serveur local sur le port 8080
# iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
3. Gestion des chaines
a. Politique de filtrage
Commençons par une commande qui ne concerne pas réellement la gestion générale des
chaines.
Comme nous l’avons vu ci-dessus, par d´défaut il n’y a aucun filtrage, c’est-à-dire que toutes
les trames sont acceptées, redoutées et envoyées. On peut filtrer finement, soit par l’adresse IP,
soit par le port, mais il serait beaucoup trop long de donner une liste exhaustive de tout ce qui
existe. Une première ´étape est de choisir ce qui est appelé la politique de filtrage :
▪ Si on rejette peu d’´éléments, le mieux est de commencer par tout accepter, puis
d’indiquer individuellement ce que l’on n’accepte pas.
▪ Si on est très précautionneux et que l’on rejette beaucoup, le mieux est de commencer
par tout rejeter, puis d’indiquer individuellement ce que l’on accepte.
▪ Dans un cas médian, on choisit l’une ou l’autre de ces politiques, plus ou moins au
hasard.
Pour choisir la politique de filtrage, on utilise la commande :
# iptables Chain Policy
Où Chain est le nom d’une chaine et Policy l’une des deux valeurs ACCEPT (pour tout accepter
sauf ce qui sera explicitement rejeté) ou DROP (pour tout rejeter sauf ce qui sera explicitement
accepte). Bien entendu il faut passer en paramètre le nom de la table s’il ne s’agit pas de la table
par défaut. On peut remplacer -P par --policy.
Exemple : Rejetons de façon un peu dure toutes les trames entrantes pour notre ordinateur :
# iptables -P INPUT DROP
Vérifions que la table est bien changée :

Startech Academy P. 6
The Future Belongs To Us
# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Vérifions surtout que l’on ne peut plus rien recevoir, par exemple en essayant dans le
navigateur web quelque chose de nouveau (n’oublions pas que le cache pourrait nous afficher
une page web sans aller la chercher effectivement sur le réseau).
b. Ajouter une règle
Une fois la politique choisie, on peut ajouter des règles aux chaines pour affiner notre
filtrage, et il en a ´évidemment bien besoin. On peut ajouter une règle grâce `a la commande #
iptables -A chain [match][target/jump]
avec A pour append, qui ajoute la règle à la fin de la liste. Il faut faire attention que l’ordre dans
la liste peut être important. On peut utiliser --append au lieu de -A.
Exemple : Nous avons tout rejeter en entrée. Permettons cependant ce qui provient du serveur
web www.startech.com de notre centre. En permettant à nouveau toutes les entrées, cherchons
l’adresse de son serveur grâce à un ping, ce qui donne 193.48.143.10. N’acceptons-en entrée
que ce qui provient de ce serveur :
# iptables -P INPUT DROP
# iptables -A INPUT -s 193.48.143.10 -j ACCEPT
sans avoir détaillé, pour l’instant, les règles de syntaxe mais celles utilisées sont suffisamment
explicites. Vérifions que la table est bien changée :
# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- 193.48.143.10 anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Nous avons défini une politique de filtrage stricte avec iptables, en bloquant par défaut
tout le trafic entrant (DROP) et en n'autorisant que les paquets provenant de l'adresse IP
193.48.143.10. Ainsi, toute tentative de communication nécessitant une résolution DNS

Startech Academy P. 7
The Future Belongs To Us
(comme accéder à www.sartech.com) échoue, puisque les serveurs DNS ne sont pas
accessibles. En revanche, un accès direct à une adresse IP autorisée (comme 193.48.143.10)
fonctionne, ce qui permet de charger la page d'accueil du serveur web du centre et de naviguer
tant que les liens restent sur cette même IP.
c. Supprimer des règles
On peut supprimer des règles d’une chaine une à une grâce à la commande -D (ou --delete),
avec les mêmes paramètres que pour -A, ou vider la chaine complète grâce `a la commande :
# iptables -F ou –flush
Exemple : Vérifier que :
# iptables -F nous ramène à l’´état antérieur :
# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
d. Utilisation d’un script
On n’a pas ´écrit grand-chose pour l’instant. Tout sera perdu lors de la prochaine session
mais on peut le réécrire facilement. Lorsqu’on aura ´écrit quelque chose de plus conséquent,
cela deviendra gênant. Heureusement, comme pour toutes commandes en ligne, on peut utiliser
un script. Ecrivons donc :
# !/bin/bash
iptables -P INPUT DROP
iptables -A INPUT -s 193.48.143.10 -j ACCEPT

dans un fichier texte appelé, par exemple, mon_script.sh. Revenons `a la situation par d´défaut
où l’on accepte tout, rendons le script exécutable (on ne sait jamais) :
# chmod +x ./mon_script.sh puis exécutons-le script en tant que super-utilisateur :
# sh ./moniptables.sh
On revient `a la situation où toute entrée est bloquée sauf l’accès au serveur de notre centre.
4. Règles de filtrage
Maintenant que nous avons vu le principe d’utilisation de iptables, détaillons les règles de
filtrage que celui-ci permet.
a. Filtrages généraux

Startech Academy P. 8
The Future Belongs To Us
Un filtrage général permet d’accepter (ou de rejeter) :
▪ tous les paquets d’une interface réseau donnée (en entrée ou en sortie) :
iptables -A chain -i interface [jump]
iptables -A chain -o interface [jump]
où -i peut ˆêtre remplacer par --in-interface et -o par --out-interface. Pour la première règle,
la chaine ne peut ˆêtre qu’INPUT, FORWARD et PREROUTING et pour la seconde
qu’OUTPUT, FORWARD et POSTROUTING.
▪ une adresse IP source ou destination donnée :
iptables -A chain -s Ip [jump]
iptables -A chain -d IP [jump]
où -s peut ˆêtre remplace par --src ou --source et -d par --dst ou --destination. L’adresse peut
´également utiliser un masque CIDR, par exemple 192.168.0.0/24 ou un masque, par exemple
192.168.0.0/255.255.255.0 pour obtenir le même effet que précédemment.
▪ un protocole donné :
iptables -A chain -p protocol [jump]
où -p peut ˆêtre remplacé par --protocol. Le protocole est TCP, UDP ou ICMP. On peut utiliser
une valeur entière, par exemple 1 pour ICMP.
Exemples : 1o ) Le problème en bloquant tout par d´défaut est que même l’interface locale
(loopback, par exemple utilisée pour l’impression) est bloquée. On a donc intérêt `à insérer au
tout début des règles :
#iptables -A INPUT -i lo -j ACCEPT
2o ) Nous avons déjà rencontré la règle :
#iptables -A INPUT -s 194.214.24.116 -j ACCEPT
3o ) Il peut ˆêtre utile de valider les réponses aux requêtes ping, ne serait-ce que pour s’assurer
que le poste est toujours en activité :
#iptables -A INPUT -p ICMP -j ACCEPT
b. Filtrages UDP
Un filtrage UDP permet d’accepter (ou de rejeter) suivant le port source ou le port de
destination :
iptables -A chain -p udp --sport port [jump]
iptables -A chain -p udp --dport port [jump]
où --sport peut ˆêtre remplacée par --source-port et --dport par --destination-port. Le
numéro de port peut ˆêtre remplacer par le nom du service par exemple ssh au lieu de 22. On
peut utiliser des intervalles de port, par exemple 22 :80.

Startech Academy P. 9
The Future Belongs To Us
Exemple : On peut permettre le trafic entrant sur un port spécifique, par exemple 22:
#iptables -A INPUT -p udp --dport 22 -j ACCEPT
c. Filtrages TCP
Un filtrage TCP permet d’accepter (ou de rejeter) :
▪ suivant le port source ou le port de destination :
iptables -A chain -p tcp --sport port [jump]
iptables -A chain -p tcp --dport port [jump]
▪ suivant l’état des drapeaux :
iptables -A chain -p tcp --tcp-flags drapeaux `a-comparer drapeaux [jump]
les drapeaux ´étant SYN, FIN, ACK, RST, URG et PSH séparés par des virgules si on en
spécifie plusieurs. On peut aussi utiliser les valeurs ALL et NONE.
Exemples.- 1o ) On peut permettre le trafic entrant sur un port spécifique, par exemple 22:
#iptables -A INPUT -p tcp --dport 22 -j ACCEPT
2o ) On peut permettre le trafic entrant des segments qui essaient d’´établir une connexion :
#iptables -A INPUT -p tcp --tcp-flags SYN,FIN,ACK SYN -j ACCEPT
même si on ne voit pas `à quoi cela peut servir pour l’instant
5. Politique de retransmission
Supposons que notre réseau d’entreprise soit formé de deux réseaux locaux d’adresses
privées 192.168.1.0/24 et 192.168.2.0/24 reliés par une passerelle (avec une interface réseau
eth0 vers le premier sous-réseau et eth1 vers le second sous-réseau). Une machine d’un des
sous-réseaux peut ´évidemment communiquer avec toute machine de ce même sous-réseau. Par
contre on peut, dans ces conditions, décider si une machine du premier sous-réseau peut
communiquer ou non avec une machine du second sous-réseau. La politique FORWARD
permet `à l’administrateur de contrôler où les paquets peuvent ˆêtre routes au sein du réseau
d’entreprise.
Mise en place : Pour autoriser la retransmission du sous-réseau local 192.168.2.0/24 dans tout
le réseau d’entreprise, on utilise les règles suivantes :
# iptables -A FORWARD -i eth1 -j ACCEPT
# iptables -A FORWARD -o eth1 -j ACCEPT
Ces règles permettent `à une machine d’un sous-réseau de communiquer avec une machine de
l’autre sous-réseau en utilisant des adresses IP privées mais pas `à une machine sur Internet : si
les machines du réseau d’entreprise ci-dessus envoyant directement des paquets sur Internet,
les réponses ne reviendront jamais, parce que l’IANA (institut de régulation des adresses) a
considère ce réseau (avec d’autres) comme privé, et a restreint son usage `a des réseaux locaux
isoles d’Internet. Bien entendu, pour interdire de façon explicite la communication entre les
machines d’un sous-réseau `a un autre, on utilisera :

Startech Academy P. 10
The Future Belongs To Us
# iptables -A FORWARD -i eth1 -j DROP
# iptables -A FORWARD -o eth1 -j DROP
6. Traduction d’adresse
Nous avons expliqué antérieurement le principe et l’intérêt de la traduction d’adresse :
un serveur NAT (pour Network Address Translation) traduit les adresses IP source et/ou
destination des paquets en adresses différentes en jouant sur les numéros de port. Le serveur
NAT récoit le paquet, change l’en-tête IP (il réécrit l’adresse source ou destination et recalcule
la somme de contrôle du paquet) puis change l’en-tête de transport (il donne un numéro de port
non utilisé et recalcule la somme de contrôle si celle-ci a un sens). La partie netfilter de Linux
permet de mettre en place facilement ces traductions d’adresse : on n’a pas en particulier `à se
préoccuper explicitement de la gestion des numéros de port ou du calcul des sommes de
contrôle, effectues pour nous par le noyau Linux. On se sert pour cela de la table nat et de l’une
des cinq cibles suivantes :
▪ La cible principale est SNAT, employée pour changer l’adresse source des paquets.
Avec cette cible, le serveur NAT effectuera automatiquement sur les paquets de la
traduction d’adresse source dans un sens et de la traduction d’adresse source inverse
dans l’autre sens.
▪ La cible DNAT est employée de même pour changer l’adresse de destination.
▪ La cible MASQUERADE (camouflage en français) est l’analogue de la cible SNAT
mais s’utilise lorsque les adresses sont données par DHCP. On spécifiera donc
l’interface réseau au lieu d’une adresse IP.
▪ La dernière cible s’appelle REDIRECT

a. Traduction d’adresse source


La traduction d’adresse réseau source est utilisée le plus fréquemment lorsque nous
n’avons pas les moyens ou ne voyons pas l’intérêt d’avoir une adresse IP publique pour chacun
des postes d’un réseau local. Disons, par exemple, que nous avons un réseau local
192.168.1.0/24. L’une des machines de ce réseau local sera transformée en passerelle (Gateway
en anglais) possédant deux interfaces réseau : l’une d’adresse réseau privée, disons 192.168.1.0,
reliée au réseau local et l’autre d’adresse réseau publique, disons 217.115.95.34, reliée `à
Internet. Cette passerelle jouera le rôle de serveur SNAT, traduisant toutes les adresses
192.168.1.0/24 en l’adresse publique. De cette façon, il y aura 5-10 clients ou beaucoup plus
qui utiliseront la même adresse IP publique partagée.
Mise en place : Pour netfilter, la cible SNAT n’est valide que dans la table nat, `a
l’intérieur de la chaine POSTROUTING. C’est, en d’autres termes, la seule chaine dans laquelle
on peut utiliser SNAT, c’est-`a-dire juste avant que le paquet ne soit d´définitivement envoyé
`à l’extérieur : ceci signifie que toute autre fonction sur la machine sous Linux (routage, filtrage
de paquets) verra le paquet non modifier par la traduction d’adresse. Cela signifie aussi que
l’option ‘-o’ (interface de sortie) peut ˆêtre utilisée.
La traduction d’adresse source est spécifiée en utilisant l’option ‘-j SNAT’, suivie de ‘–
tosource’ qui spécifie une adresse IP, une plage d’adresses IP et ´éventuellement un port ou une
plage de ports (pour les protocoles UDP et TCP seulement) :

Startech Academy P. 11
The Future Belongs To Us
▪ pour changer l’adresse source en 1.2.3.4 :
# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4
▪ pour changer l’adresse source en 1.2.3.4, 1.2.3.5 ou 1.2.3.6 (netfilter choisira
l’adresse `à utiliser pour une meilleure répartition des charges) :
# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4-1.2.3.6
▪ pour changer l’adresse source en 1.2.3.4, port 1-1023 :
# iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT \ --to 1.2.3.4 :1-1023
Exemple : En reprenant notre exemple de début et en supposant que la passerelle a pour
interface eth1 vers l’extérieur (d’adresse 217.115.95.34) et eth0 vers le réseau local, nous
réaliserons la traduction d’adresse voulue grâce `a la règle :
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j SNAT \ --to 217.115.95.34
b. Traduction d’adresse de destination
La traduction d’adresse de destination est utile lorsque, dans la configuration ci-dessus,
on veut qu’un serveur visible de l’extérieur par l’adresse 217.115.95.34 se trouve en fait
physiquement sur une machine du réseau local qui n’est pas la passerelle. Par exemple, nous
pouvons faire tourner un serveur web et ftp sur la même machine, tandis qu’il existe une
machine physiquement distincte contenant différents services d’IRC que les employés
travaillants `à domicile ou ´étant sur la route peuvent utiliser en relation avec le personnel sur
le site de l’entreprise. Nous pouvons alors faire fonctionner tous ces services sur la même IP
depuis l’extérieur via DNAT.
Mise en place : Pour netfilter, la cible DNAT n’est valide que dans la table nat, `a
l’intérieur de la chaine PREROUTING, au moment où le paquet arrive : cela signifie que toute
autre fonction de la machine sous Linux (routage, filtrage de paquets) verra le paquet aller vers
sa destination ‘réelle’. Cela signifie aussi que l’option ‘-i’ (interface d’entrée) peut ˆêtre utilisée.
La traduction d’adresse de destination est spécifiée en utilisant ‘-j DNAT’, suivie de ‘–
todestination’ qui spécifie une adresse IP, une plage d’adresses IP et ´éventuellement un port
ou une plage de ports (pour les protocoles UDP et TCP seulement) :
▪ pour changer l’adresse de destination en 5.6.7.8 :
# iptables -t nat -A PREROUTING -i eth0 -j DNAT --to 5.6.7.8
▪ pour changer l’adresse de destination en 5.6.7.8, 5.6.7.9 ou 5.6.7.10 :
# iptables -t nat -A PREROUTING -i eth0 -j DNAT --to 5.6.7.8-5.6.7.10
▪ pour changer l’adresse de destination du trafic web en 5.6.7.8, port 8080 :
# iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0 \ -j DNAT --to 5.6.7.8 :8080
Exemple : Le dernier cas nous montre comment faire dans le cas d’un serveur déporté.

Startech Academy P. 12
The Future Belongs To Us
Remarque : Si la politique par défaut est DROP dans la chaine FORWARD, on doit ajouter une
règle autorisant la retransmission de requêtes HTTP entrantes afin que le routage NAT de
destination soit possible :
# iptables -A FORWARD -i eth0 -p tcp --dport 80 -d 5.6.7.8 -j ACCEPT
Cette règle autorise la retransmission de requêtes HTTP entrantes depuis la passerelle vers la
destination souhaitée sur le serveur HTTP derrière la passerelle.
c. Camouflage
Le camouflage d’adresse IP est un cas particulier de traduction d’adresse source `à
utiliser pour des adresses IP allouées dynamiquement, comme pour la liaison téléphonique avec
les fournisseurs d’accès. Dans ce cas on ne spécifie pas explicitement l’adresse source publique
mais l’interface : netfilter utilisera l’adresse source de l’interface par laquelle le paquet sort. De
plus, si le lien est rompu, les connexions (qui sont de toute façon perdues) sont oubliées, ce qui
´évite des problèmes ´éventuels quand la connexion est rétablie avec une nouvelle adresse IP.
Mise en place : Pour camoufler tout ce qui sort par l’interface ppp0, on utilise la règle
suivante :
# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

Startech Academy P. 13

Vous aimerez peut-être aussi