Vous êtes sur la page 1sur 53

Universit Abdelmalek Essaadi

Ecole Nationale des Sciences Appliques


Ttouan

Firewall sous Linux

Netfilter / iptables

ENSA Ttouan Scurit EL FOUKI Mohammed


des Rseaux 2
GSTR3
Introduction

Lesous systme de traitement de paquets


rseau linux sappelle Netfilter

La commande employe pour le configurer


est Iptables
Intrts

Filtragede paquets
Traduction,Translation dadresse rseau
Modification de paquets

Les commandes iptables oprent au niveau


de la couche osi 3 (couche rseau)
Exemple de commande

iptables t filter A INPUT i eth1 -j DROP


#
-t filter = table filter
-A INPUT = ajoute au point dentre Input
-i eth1 = interface (carte rseau)eth1
-j DROP = -j (jump) que fait-on du paquet

DROP (elimine)
En clair : on interdit tout entre sur eth1
Les points dentres

Pr-routage PREROUTING
Entre INPUT
Transfert FORWARD
Post-routage POSTROUTING
Sortie OUTPUT
Flux des paquets

Points dentres du NAT


Flux des paquets

Points dentres pour le filtrage


Flux des paquets

Points dentres pour lamputation (mangle)


Les points dentres

FORWARD (transfert)
Permet le traitement des paquets qui arrivent
vers une passerelle, arrivant vers lune des
interfaces et ressortant immdiatement par
une autre.
Les points dentres

INPUT (entre)
Permet le traitement des paquets
immdiatement avant quils ne soient dlivrs
au processus local.
Les points dentres

OUPUT (sortie)
Permet le traitement des paquets
immdiatement aprs leur gnration par un
processus local.
Les points dentres

Postrouting (post-routage)
Permet le traitement des paquets
immdiatement juste avant quils ne quittent
linterface rseau.
Les points dentres

Prerouting (pr-routage)
Permet le traitement des paquets
immdiatement aprs leur traitement par
linterface rseau.(vrification de leur somme de contrle et
suppression des paquets non autoriss en raison de lactivation du mode
promiscuous de linterface rseau)
Les Tables

Iptables intgre trois tables par dfaut

NAT Utilise en conjonction avec le


suivi de connexion pour rediriger les
connexions pour la traduction dadresses
rseau.
Utilise les points dentre (chanes)
Output, Postrouting et prerouting
Les Tables

Filter Utilise pour configurer les politiques de


scurit relatives au trafic autoris entrer,
sortir ou transiter par le PC
Iptables utilisera cette table par dfaut si aucune
autre nest explicitement dsigne.

Utilise les points dentre (chanes)


Forward, Input et Output.
Les Tables

mangle Utilise pour modifier les


paquets comme la suppression de
certaines option IP(par exemple le TOS de
len-tete IP).
Utilise les points dentre (chanes)
Forward,Input,Output, Postrouting et
prerouting
Actions possibles sur les paquets

Ces actions galement appels cibles

ACCEPT

Autoriser le paquet passer ltape


suivante du traitement.
Actions possibles sur les paquets

Ces actions galement appels cibles

DROP

Arrter compltement le traitement du


paquet. Ne pas appliquer les autres rgles,
chanes ou tables.
Actions possibles sur les paquets

Ces actions galement appels cibles

DROP

Arrter compltement le traitement du


paquet. Ne pas appliquer les autres rgles,
chanes ou tables.
Reject (rejeter) fournira un retour lmetteur
Flux des paquets

Ordre suivant lequel les paquets sont prsents aux


tables
Lors du forwarding
Nat Prerouting
Filter Forward
Nat Postrouting

Le paquet que vous voulez filtrer en forward nat-


il pas tait modifi en NAT lors de son entre
(prerouting) ?
Flux des paquets

Ordre suivant lequel les paquets sont


prsents aux tables
Lors dune entre vers un processus local Input

Nat Prerouting
Filter input
Flux des paquets

Ordre suivant lequel les paquets sont


prsents aux tables
Lors dune sortie du processus local Ouput
Nat Output
Filter Output
Nat Postrouting
Flux des paquets

Ordre suivant lequel les paquets sont


prsents aux tables
Lors dun transit dun processus local vers un autre
processus local
Nat Output
Filter Output
Filter Input
Gestion des chanes

Par dfaut il ny a aucun filtrage, cest--dire


que toutes les trames sont acceptes, routes
et envoyes.
Gestion des chanes

On peut filtrer :
soit par ladresse IP.
soit par le port.

Mais : il serait beaucoup trop long de donner


une liste exhaustive de tout ce qui existe.
Une premire tape est de choisir ce qui est
appel la politique de filtrage.
Gestion des chanes

Si on rejette peu dlments: le mieux est de commencer par


tout accepter, puis dindiquer individuellement ce que lon
naccepte pas.
Si on est trs prcautionneux: le mieux est de commencer
par tout rejeter, puis dindiquer individuellement ce que lon
accepte.
Dans un cas mdian: on choisit lune ou lautre de ces
politiques, plus ou moins au hasard.
Gestion des chanes

Syntaxe:

Pour choisir la politique de filtrage, on utilise la


commande :

#iptables -P chain policy


Gestion des chanes

Exemple:

Rejetons de faon un peu dure toutes les trames


entrantes pour notre ordinateur :
# iptables -P INPUT DROP
Gestion des chanes

Vrifions que la table est bien change :

# 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
Gestion des chanes

Ajouter une rgle

Une fois la politique choisie, on peut ajouter des


rgles aux chanes pour affiner notre filtrage, et il en
a videmment bien besoin.
Gestion des chanes

Syntaxe
: On peut ajouter une rgle grce
la commande :

iptables -A chain [match][target/jump]


avec A pour append, qui ajoute la rgle la fin de
la liste.
Gestion des chanes

Nacceptonsen entre que ce qui provient


du serveur 193.48.143.10 :

# iptables -P INPUT DROP


# iptables -A INPUT -s 193.48.143.10 -j ACCEPT
Gestion des chanes

Vrifions que la table est bien change :

# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- 193.48.143.10 anywhere
Gestion des chanes

Supprimer des rgles


Syntaxe.- On peut supprimer des rgles
dune chane une une grce la
commande -D (ou --delete), avec les mmes
paramtres que pour - A, ou vider la chane
complte grce la commande :
# iptables -F
Gestion des chanes

Exemple :
# iptables -F
# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
Gestion des chanes

Rgles de filtrage

Maintenant que nous avons vu le principe


dutilisation de iptables, dtaillons les rgles de
filtrage que celui-ci permet.
Gestion des chanes

Syntaxe

Un filtrage gnral permet daccepter (ou de


rejeter) tous les paquets dune interface rseau
donne (en entre ou en sortie) :

iptables -A chain -i interface [jump]


iptables -A chain -o interface [jump]
Gestion des chanes

iptables -A chain -i interface [jump]


la chane ne peut tre que INPUT, FORWARD et
PREROUTING
iptables -A chain -o interface [jump]
la chane ne peut tre que OUTPUT, FORWARD et
POSTROUTING.
Gestion des chanes

Filtrages UDP
Syntaxe : Un filtrage UDP permet daccepter (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]
Gestion des chanes

Exemple :

On peut permettre le trafic entrant sur un port


spcifique, par exemple 22 (traditionnellement
utilis par ssh) :
#iptables -A INPUT -p udp --dport 22 -j ACCEPT
Gestion des chanes

Filtrages TCP
Syntaxe : Un filtrage TCP permet daccepter
(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]
Gestion des chanes

suivant ltat des drapeaux :


iptables -A chain -p tcp --tcp-flags drapeaux--
comparer drapeaux [jump]
les drapeaux tant SYN, FIN, ACK, RST,
URG et PSH spars par des virgules si on
en spcifie plusieurs. On peut aussi utiliser
les valeurs ALL et NONE.
Gestion des chanes

Exemples:

#iptables -A INPUT -p tcp --dport 22 -j ACCEPT


#iptables -A INPUT -p tcp --tcp-flags
SYN,FIN,ACK SYN -j ACCEPT
Gestion des chanes

Nouvelles chanes
Syntaxe : On utilise la commande -N pour crer
une nouvelle table :
iptables -N chain
Gestion des chanes

Exemple :
Crons une nouvelle chane charge de placer
dans le fichier log les paquets accepts :

iptables -N LOGACCEPT
iptables -A LOGACCEPT -j LOG --log-prefix
"LOGACCEPT : "
iptables -A LOGACCEPT -j ACCEPT
Gestion des chanes

Exercice :

Crer de mme une nouvelle chane


LOGDROP charge de placer dans le fichier
log les paquets rejeter et qui rejette ces
paquets.
Source nat et Masquerade

Le SNAT est utilis pour partager une connection Internet


entre plusieurs ordinateurs.
Le poste disposant de la connection va modifier ladresse
source des paquets sortant en la remplaant par lIP
publique fixe de la passerelle.
Lorsque le serveur rpond il envoie ses paquets la
passerelle. Celle-ci va modifier ladresse de destination
pour mettre celle de la machine du LAN
Source nat et Masquerade

Le SNAT implique la modification des


adresses et/ou des ports source des
paquets juste avant quils ne quittent le
noyau.
Cette modification doit tre effectue dans la
chane Postrouting de la table nat
Source nat et Masquerade : 2 solutions

Si vous avez une IP publique fixe


#iptables t nat A Postrouting o eth0 j SNAT

Si vous avez une IP publique dynamique


#iptables t nat A Postrouting o eth0 j masquerade
Loption masquerade gre les changement dadresse
et les coupures de connexion
Destination NAT

Vous hberger un serveur web dans une DMZ.


Vous souhaitez que le public y accde.
Ladresse public de votre passerelle sera demande
par les clients du net.
Le serveur de votre DMZ ladresse 192.168.2.1 et
il coute sur le port 8080
#iptables t nat A Prerouting i eth0 p tcp dport
80 j DNAT to-destination 192.168.2.1:8080
#iptables t nat A Prerouting i eth0 p tcp dport
80 j DNAT to-destination 192.168.2.1:8080

-t nat table Nat


-A Prerouting on ajoute une rgle en (entre dinterface)
-i etho on prcise le sens (i=input) et la carte rseau
-p TCP on indique le protocole TCP
--dport 80 le port de destination prvu lorigine.
-J jump, quel action on va faire subir au paquet.
DNAT modification de la destination
-todestination 192.168.2.1:80 on prcise la nouvelle
destination
La syntaxe dIptables

#iptable t filter -A input p TCP S 192.168.3.1 j drop

Table Chane Slection Action


Nat Prerouting -p protocole -j
Filter Postrouting -S source Drop
paquet
Mangle Input
rejet
Outpout
Accept
forward paquet
accept
La syntaxe dIptables

Listerles rgles -L
Retirer les rgles -F
Ajouter une rgle A
Remplacer une rgle R

Vous aimerez peut-être aussi