Chapitre Firewall
Chapitre Firewall
Chapitre Firewall
Faouzi ZARAI
faouzi.zarai@isecs.rnu.tn
F. ZARAI
Introduction
F. ZARAI
Définitions
F. ZARAI
Les Firewall
F. ZARAI
Couches de protocoles
Paquet IP
Version IHL TOS Version
@ source
TCP UDP
@ destination
Couches basses
Message TCP
Port Source Port Destination
Paquet ICMP
Sequence Number
Type Code CheckSum
Ack Number
F. ZARAI
Couches de protocoles
Connexion TCP
machine A machine B
(client) (serveur)
SYN
SYN, ACK
ACK
F. ZARAI
Attaques: Déni de service
machine A machine B
(client) (serveur)
SYN
SYN, ACK
ACK
F. ZARAI
Attaques: Spoofing IP
M a c hine a tta q u é e (A )
F. ZARAI
Problématique, Enjeux
Internet
Communications refusées
Communications autorisées
Réseau local
F. ZARAI
Internet
Sécuriser le trafic entrant
Firewall
Réseau local
F. ZARAI
Fonctions principales d’un Firewall
F. ZARAI
F. ZARAI
Fonctions principales d’un Firewall
Interconnecte des réseaux de différents niveaux de confiance.
ALERT!!
Firewall
Routeur
F. ZARAI
Fonctions principales d’un Firewall
• Translation statique/dynamique d’adresses IP (NAT) et
translation de ports (PAT)
• Gestion d’un petit parc d’adresses IP sur internet
• Masquage (masquerading) du plan d’adressage interne
F. ZARAI
Exemple
F. ZARAI
Fonctions principales d’un Firewall
F. ZARAI
F. ZARAI
Catégories des firewalls
F. ZARAI
F. ZARAI
Firewall à filtrage de Paquets
• Le plus simple des Firewalls.
• Pour chaque paquet IP rencontré, il décide de le faire passer (forward) ou de
l’éliminer (deny), selon des règles de filtrages.
• Le filtrage se fait depuis et vers toutes les directions (ex: depuis et vers
Internet).
• Règles de filtrage, basées sur l’analyse des champs dans l’entête IP et TCP:
– Adresse IP source et destination.
– Protocole (TCP, UDP, ICMP, etc).
– Port (TCP ou UDP) source et destination.
– TCP Flags (SYN, ACK, FIN, RST, PSH, etc)
– Type de Message ICMP
– Taille du paquet
F. ZARAI
F. ZARAI
Exemple de règles (Packet-Filtering router)
Packet-filtering router
Internet
193.1.1.0
Action Protocole source port destination Port flag
Deny IP 193.1.1.0 * 10.1.1.1 *
Allow TCP 193.1.1.0 * * 80
Allow TCP * 80 193.1.1.0 * ACK
Deny IP * * * *
• Règle1: Toute connexion depuis le réseau interne (193.1.1.0) vers la machine suspecte
10.1.1.1 est bloquée.
• Règle2: Seulement les connexions HTTP (TCP, port 80) depuis le réseaux interne
(193.1.1.0), sont permises.
• Règle3: Seulement le trafic web en réponse à une connexion déjà initiée du réseau interne
sera accepté de l’extérieur.
• Règle4: La politique de sécurité par défaut.
F. ZARAI
F. ZARAI
Attaques sur Firewall à filtrage de Paquets
• IP address spoofing (Usurpation d’adresse IP)
– L’intrus envoi un paquet de l’externe avec une fausse @IP (généralement égale
à une @IP d’une machine interne), et ceci afin de réussir à passer le mécanisme
de filtrage.
– Solution: bloquer tout paquet venant de l’interface externe ayant une @IP
source interne.
• Source routing attacks (routage à la source)
– L’intrus spécifie une route qui va être empruntée par le paquet autre que celle
appliquée par défaut.
– Solution: bloquer les paquets source routed
• Tiny fragment attacks (fragmentation de paquets)
– Un paquet IP est divisé en plusieurs fragments, où seul le premier fragment
contient le numéro de port.
Insuffisance d’informations pour filtrer ces paquets.
– Solution: rejeter les paquets fragmentés ou les rassembler avant vérification.
F. ZARAI
F. ZARAI
Stateful Inspection Packet Filtering Firewalls
• Renforce les règles de filtrage en suivant l’état des connexions:
F. ZARAI
193.95.1.1 10.1.2.3
Le Firewall se souviendra
De cette information
Cohérent avec le
paquet précédent
Pas de cohérence
avec la
connexion en
cours
F. ZARAI
Circuit-Level Gateway
F. ZARAI
Circuit-Level Gateway
F. ZARAI
Application Level Gateway
F. ZARAI
F. ZARAI
Application Level Gateway
F. ZARAI
Application Gateway
F. ZARAI
Application Level Gateway
F. ZARAI
• Inconvénients
• Un processus par connexion.
• Gestion des connexions dans les deux bouts.
– Peux de Proxies sont disponibles
• les services propres ne sont pas généralement supportés.
– Plus approprié à TCP
• Difficulté avec ICMP.
F. ZARAI
Firewall Multicouche
F. ZARAI
F. ZARAI
Architecture 1: Routeur Filtrant
• Diagramme de flux
– Interdire par défaut toute connexion entrante sur l'interface
Internet, à l'exception de celles déjà initialisées (et donc,
correspondant à des réponses)
– Filtrer les connexions sortant du filtre de paquets vers Internet
– Filtrer les connexions entrant dans le filtre de paquets en
provenance du LAN
– Autoriser par défaut toutes les connexions sortantes des clients
du LAN vers Internet.
F. ZARAI
F. ZARAI
Architecture 3: Screened Host Firewall System (Single-homed
bastion host
F. ZARAI
F. ZARAI
Architecture 3: Screened Host Firewall System (Single-homed
bastion host
F. ZARAI
F. ZARAI
Architecture 4: Screened Host Firewall System (Dual-homed
bastion host
• Double interface: Possède une adresse IP par interface
• Tout est filtré: Cette architecture impose aussi aux utilisateurs internes de
passer obligatoirement par la machine bastion
• En coupure totale le pare feu est arrêté rien ne passe
• Possibilité de cloisonner x réseaux internes si x+1 interfaces
F. ZARAI
F. ZARAI
Architecture 5: Screened Subnet Firewall System
• Plus sécurisée que les deux autres configurations
• Deux Packets-Filtering Routers sont utilisés:
– Entre le Bastion Host et l’Internet.
– Entre le Bastion Host et le réseau local.
• Crée un sous réseau protégé contenant le Bastion Host et les serveurs
(offrant des services publiques).
• L’Internet et le réseau interne ont les deux accès aux machines du sous-
réseau crée, mais le trafic d’un coté à l’autre de ce sous-réseau est bloqué:
– Création de trois niveaux de sécurité.
– Le réseau interne est invisible de l’Internet.
– Les machines du réseau interne ne peuvent communiquer qu’avec le Bastion
Host.
F. ZARAI
F. ZARAI
Architecture 5: Screened Subnet Firewall System
F. ZARAI
Iptables
Si le paquet est destiné à l’hôte local Alors il traverse la chaîne INPUT.
Si il n’est pas rejeté Alors il est transmis au processus impliqué.
Sinon
Si le paquet est destiné à un hôte d’un autre réseau Alors il
traverse la chaîne FORWARD
Si il n’est pas rejeté Alors il poursuit alors sa route
F. ZARAI
Iptables
• Les commandes de iptables associées à la gestion des chaînes sont les
suivantes :
-N : création d'une nouvelle chaîne (iptables -N INTERNET)
-X : suppression d'une chaîne vide (iptables -X INTERNET)
-P : Mise en place de la règle par défaut pour une chaîne existante
(iptables -P INPUT DROP). Seules les chaînes INPUT,
FORWARD et OUTPUT peuvent avoir une règle par défaut et les
seules cibles disponibles sont ACCEPT et DROP.
-L : lister les règles d'une chaîne (iptables -L INTERNET)
-F : effacer les règles d'une chaîne (iptables -F INTERNET)
F. ZARAI
Iptables
• Par défaut iptables utilise la table ‘filter' si on ne lui spécifie par une autre
table via l'option '-t nom_de_table').
• Exemple1: Interdire les connexions sur le port 22 (ssh),
# iptables -A INPUT -p tcp --dport 22 -j DROP
– -A INPUT => ajoute en bas de la liste des règles de la chaîne INPUT
– -p tcp => pour les paquets qui utilisent les protocole TCP
– --dport => pour les paquets qui sont à destination du port 22
– -j DROP => l'action : DROP les paquets (on efface les paquets),
# iptables -L -v
F. ZARAI
Iptables
• Il existe de très nombreuses options pour construire les règles de
filtrage, parmi les plus utilisés on trouve :
-s : sélection de l'adresse IP source (ou réseau source) d'où vient le
paquet
-d : sélection de l'adresse IP de destination (ou réseau de destination)
où va le paquet
--dport : port destination (le port sur lequel le client essaye de se
connecter) vers quel port a été émis le paquet
--sport : port source (le port utilisé par le client pour créer la
connexion) depuis quel port a été émis le paquet
-p suivi d'un nom de protocole
-i : spécifie le nom de l'interface physique à travers laquelle les paquets
entrent
-o : spécifie le nom de l'interface physique à travers laquelle les paquets
sortent
F. ZARAI
Iptables
# iptables -D INPUT 1
– efface la première règle de la chaîne INPUT.
# iptables -L -v --line-numbers
– voir les numéros de chaque règle lorsqu'on liste les règles
# iptables -A chaine -m multiport -p tcp --dports
port1,port2,port3 -j
F. ZARAI
Iptables
• Création d'une chaîne spécifique
# iptables -N ssh
• On indique à la chaîne INPUT que tout ce qui concerne ssh doit être
transmis à cette nouvelle chaîne
# iptables -A INPUT -p tcp --dport 22 -j ssh
• On rajoute nos règles de filtrages dans la chaîne ssh
– on accepte que le voisin se connecte
# iptables -A ssh -s ip_machine_du_voisin -j ACCEPT
– on interdit au reste du monde de se connecter
# iptables -A ssh -j DROP
F. ZARAI
Iptables
• Le module 'state' définit plusieurs états possibles pour les flux
réseaux :
- NEW : c'est une nouvelle connexion
- ESTABLISHED : on connaît déjà cette connexion (elle est passée par
l'état NEW il y a peu de temps)
- RELATED : cela permet d'identifier une connexion qui serait liée ou
dépendant d'une connexion déjà ESTABLISHED.
- INVALID : tout ce qui n'est pas correctement identifiable
F. ZARAI
Iptables
– Paramètre protocole: interdire le protocole icmp
iptables -A INPUT -p icmp -j DROP
– paramètre source: interdire le protocole icmp provenant de localhost
iptables -A INPUT -p icmp -s localhost -j DROP
– chaîne OUTPUT paramètre destination: interdire tout paquet à
destination de localhost
iptables -A OUTPUT -d localhost -j DROP
– paramètre destination port: interdire tout paquet à destination
du port ftp
iptables -A INPUT -p tcp --dport 21 -j DROP
– paramètre source port: interdire tout paquet sortant par eth0
dont le numéro de port source est inférieur à 1024
iptables -A OUTPUT -o eth0 -p tcp --sport :1023 -j DROP
iptables -A OUTPUT -o eth0 -p udp --sport :1023 -j DROP
F. ZARAI
Iptables
– paramètre flag TCP: interdire toute tentative d'initialisation de
connexion TCP provenant de eth0
iptables -A INPUT -i eth0 -p tcp --syn --sport :1023 -j DROP
– paramètre flag icmp: interdire tout paquet entrant correspondant à un
ping
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
– interdire toute réponse à un ping
iptables -A OUTPUT -p icmp --icmp-type echo-reply -j DROP
– extension mac: interdire tout paquet entrant par eth0 dont l'adresse mac
n'est pas celle du voisin
iptables -A INPUT -i eth0 -m mac --mac-source ! 00:50:FC:23:2D:D7 -j DROP
F. ZARAI
Translation d’adresse (NAT)
F. ZARAI
Objectifs
• Utiliser NAT pour :
Sécurité
F. ZARAI
NAT Statique
Outside
Inside
3
5 3 SA
DA 179.2.2.2
SA
10.1.1.1
179.2.2.2 Internet
10.1.1.2
4
SA DA
DA
10.1.1.1 199.6.7.3
179.2.2.2
2/5
199.6.7.3
1/6 NAT Table
10.1.1.1 Host B
Inside Local Inside Global
IP Address IP Address
10.1.1.2 179.2.2.3
10.1.1.1 179.2.2.2
F. ZARAI
NAT Statique
1. Une machine locale envoie un paquet avec comme adresse source
son adresse privée
2. Le routeur chargé de la translation fait correspondre à chaque
adresse privée, une adresse publique. Il envoie vers l’extérieur le
paquet IP en changeant l’adresse source privée par son
correspondant publique
3. Le destinataire reçoit un paquet IP dont il pense qu’il vient d’une
machine ayant une adresse publique et va donc y répondre
4. Le routeur reçoit la réponse, fait la correspondance dans le sens
adresse publique – adresse privée et retransmet le paquet modifié à
la bonne machine interne
F. ZARAI
Terminologie
D
C
SA
D 10.2.2.3
SA
Inside 199.6.7.3
SA Outside DA
199.6.7.3 179.2.2.2
Host B
DA
199.6.7.3
10.1.1.2
C
10.1.1.2
A SA Internet
SA 179.2.2.2
10.1.1.1
B
NAT Table
10.1.1.1
Inside Local IP Inside Global
Address IP Address
10.1.1.2 179.2.2.3
10.1.1.1 179.2.2.2
63
F. ZARAI
NAT Dynamique
Outside
Inside
4
5 3
DA
DA
SA 179.2.2.1
10.1.1.1
179.2.2.1 Internet
10.1.1.2
SA DA 2/5
10.1.1.1 199.6.7.3
NAT Table
199.6.7.3
1/6 Inside Local Inside Global
10.1.1.1 IP Address IP Address Host B
10.1.1.1 179.2.2.1
10.1.1.7 179.2.2.2
10.1.1.21 179.2.2.3
….. à
179.2.2.25
64
F. ZARAI
PAT
SA SA
Inside 179.2.2.2 3 179.2.2.2
DA DA
199.6.7.3 199.6.7.3
SP: 1024 SP: 1024
3 DP : 23 DP : 23 Host B
Internet 199.6.7.3
10.1.1.2
SA DA SP: 1024
10.1.1.1 199.6.7.3 DP : 23
2 Host C
1 196.5.4.7
NAT Table
10.1.1.1
Protocol Inside Local IP Inside Global IP Outside Global
Address: Port Address: Port IP Address: Port
PAT
4 SA 4
Inside SA
199.6.7.3
199.6.7.3
DA
DA 179.2.2.2
179.2.2.2
5 SP: 23
SP: 23
DP : 1024 Host B
DA
DP : 1024 Internet 199.6.7.3
10.1.1.1
7
10.1.1.2
DA
SA DA SP: 23 179.2.2.2
199.6.7.3 10.1.1.1 DP : 1024
2 Host C
5 196.5.4.7
NAT Table
10.1.1.1
Protocol Inside Local IP Inside Global IP Outside Global
Address: Port Address: Port IP Address: Port
F. ZARAI