Les FIREWALL
A. EL FERGOUGUI
Qu’est ce qu’un firewall ?
 Un firewall est essentiellement un dispositif
de protection qui constitue un filtre entre un
réseau local et un autre réseau non sûr tel
que l’Internet ou un autre réseau local.
A. EL FERGOUGUI filtres IPTABLES 2
Objectifs d’un firewall
Les firewalls visent, au niveau de la sécurité,
deux objectifs:
1. Contrôler et protéger les hôtes du réseau
local: Contre la divulgation non autorisée
d’informations sensibles
2. Protéger les serveurs Internet
 Contre des commandes jugées dangereuses
associées à des services du type « telnet » et «
sendmail »
 Contre la modification ou la suppression non
autorisée de fichiers vitaux pour le système
A. EL FERGOUGUI filtres IPTABLES 3
Principes de base d’un firewall
 Le moindre privilège :
 Octroyer le moindre privilège aux utilisateur (processeurs) pour
réaliser leur tâches.
==>Objectif: limiter les conséquences d'une vulnérabilité ou d'une
erreur.
 La défense en profondeur :
 Utilisation de plusieurs mécanismes de protection redondants
==>Objectif : Garder une défense efficace même si un des
mécanismes de défense devait être vulnérable ou mal configuré
(ex. désactivé les services non utilisés)
 Le goulet d'étranglement
 Le trafic doit passer par un seul point : le FireWall
==> Objectif : Toute attaque doit passer par un chemin connu où il
peut être bloquée (ex. utilisation de modems)
A. EL FERGOUGUI filtres IPTABLES 4
Architecture générale d’un Firewall
A. EL FERGOUGUI filtres IPTABLES 5
Filtrage de paquet IP
Filtrage selon les informations de l’en-tête du
paquet IP
 Type de paquets (TCP, UDP, ….)
 @ source
 @destination
 Port de destination (TCP, UDP, ….)
 Etc..
A. EL FERGOUGUI filtres IPTABLES 6
Filtrage réseau (Network level Firewalls)
 Fonctionnement:
Chaque paquet est comparé à un certain nombre
de règle (filtres: type de paquet (tcp/udp), port,
@sources, @déstination ), puis est transmis ou
rejeté
A. EL FERGOUGUI filtres IPTABLES 7
Filtrage réseau (Network level Firewalls)
 Avantages
 C’est un firewall transparent
 Apporte un premier degré de protection s’il
est utilisé avec d’autres firewall
 Inconvénients
 Définir des filtres de paquets est une tâche
complexe
 Le débit diminue lorsque le nombre de filtres
augmente
A. EL FERGOUGUI filtres IPTABLES 8
Filtrage applicatif (Application level
Firewalls)
 Permet un contrôle d’accès beaucoup plus précis.
 Il est réalisé par l’examen de ports de services http ou
FTP par exemple
A. EL FERGOUGUI filtres IPTABLES 9
Filtrage applicatif (Application level Firewalls)
 Avantages
 Les paquets entrants et sortants ne peuvent accéder
aux services pour lesquels il n’y a pas de proxy
 Permet de filtrer des commandes spécifiques (ex:
GET ou POST pour HTTP)
 Le plus haut degré de sécurité
 cache les machines du réseau privé, Peut être utilisé
avec des adresses IP réservés et non enregistrés
 Inconvénients
 Les performances les plus faibles
 N’est pas transparent pour les utilisateurs
A. EL FERGOUGUI filtres IPTABLES 10
Firewall : plusieurs configurations
 Le terme de « firewall » regroupe tous les
systèmes de sécurité qui fonctionnent en
connexion avec un réseau
 La philosophie de base du coupe-feu:
 Tout ce qui n’est pas expressément interdit est
autorisé
 Tout ce qui n’est pas expressément autorisé est
interdit
A. EL FERGOUGUI filtres IPTABLES 11
Firewall avec routeur de filtrage
(routed firewall)
A. EL FERGOUGUI filtres IPTABLES 12
NAT (Network Address Translation)
 Une passerelle (routeur/gateway) est dotée de deux
interfaces :
 L'une d'elle appartient au réseau N°1
 La deuxième interface est connectée au deuxième réseau
(avec une adresse faisant partie des adresses du 2ème
réseau).
 Tout le trafic traversant le passerelle et orienté vers le 2ème
réseau est doté de l'adresse IP source de 2ème interface
 Tout le trafic entrant vers le 1er réseau doit être doté de
l'adresse IP de destination la 2ème interface
 Utilisation des adresses non routables ou non enregistrées
[10.0.0] ou [172.16.0.0 à 172.31.0.0] ou [192.168.0.0]
A. EL FERGOUGUI filtres IPTABLES 13
NAT: principe
A. EL FERGOUGUI filtres IPTABLES 14
Firewall avec une zone DMZ (Zone Démilitarisée)
 Une zone démilitarisée (DeMilitarised Zone) est une zone de réseau
sur laquelle on peut connecter des serveurs qui ont besoin d’être
mis séparément du réseau interne et accessible de l'extérieur
 Une zone DMZ n’a de signification que le FireWall possède au
moins deux interfaces réseaux (il est conseillé d'en avoir 3)
 Le traffic de/vers la zone DMZ peut être schématisé comme suit :
 Traffic du réseau externe vers la DMZ autorisé ;
 Traffic du réseau externe vers le réseau interne interdit ;
 Traffic du réseau interne vers la DMZ autorisé ;
 Traffic du réseau interne vers le réseau externe autorisé ;
 Traffic de la DMZ vers le réseau interne interdit ;
 Traffic de la DMZ vers le réseau externe refusé.
A. EL FERGOUGUI filtres IPTABLES 15
Firewall iptables
A. EL FERGOUGUI
A. EL FERGOUGUI filtres IPTABLES 17
netfilter
 effectuer des filtrages de paquets,
principalement pour assurer des fonctions de
Firewall: interdire , acepeter..
 effectuer des opérations de NAT (Network
Address Translation)
 effectuer des opérations de marquage des
paquets, pour leur appliquer un traitement
spécial
chaines et règles
 Une chaine est une pile de règles
 Chaque règle d'une chaine est composée de
deux parties: (un critère et une politique)
 Le critère précise les cas d'application
 Le politique précise l'action accomplie
 Si le critère ne s'applique pas au paquet, on
examine la règle suivante
==> l'ordre des règles est important
 Si aucune règle ne s'applique on examine la
politique associée à la chaine.
A. EL FERGOUGUI filtres IPTABLES 18
A. EL FERGOUGUI filtres IPTABLES 19
tables et leurs chaînes
Il existe trois tables qui vont servir à contenir
des règles de "filtrage":
 FILTER: (INPUT, OUTPUT, FORWORD)
 NAT: (PREROUTING, POSTROUTING,
OUTPUT)
 MANGLE: (PREROUTING, OUTPUT)
Les différentes chaines prédéfinies
 INPUT: le trafique destiné à la machine locale
 OUTPUT: le trafique sortant de la machine
vers le réseau
 FORWARD: trafique qui transite par la
machine
 PREROUTING: cette chaine peut modifier un
trafique dès qu'il entre dans le système avant
qu'il soit routé
 POSTROUTING: cette chaine peut modifier un
trafique mais après le routage
A. EL FERGOUGUI filtres IPTABLES 20
A. EL FERGOUGUI filtres IPTABLES 21
La table "Filter"
 La chaîne INPUT.
Cette chaîne décidera du sort des paquets entrant
localement sur l'hôte.
 La chaîne OUTPUT.
Ici, ce ne sont que les paquets émis par l'hôte local
qui seront filtrés
 La chaîne FORWARD.
Enfin, les paquets qui traversent l'hôte, suivant les
routes implantées, seront filtrés ici.
A. EL FERGOUGUI filtres IPTABLES 22
La table NAT
 La chaîne PREROUTING.
Permet de faire de la translation d'adresse de destination. Cette
méthode est intéressante si l'on veut faire croire au monde
extérieur, par exemple, qu'il y a un serveur WEB sur le port 80
de la passerelle, alors que celui-ci est hébergé par un hôte du
réseau privé, sur le port 8080.
 La chaîne POSTROUTING.
Elle permet de faire de la translation d'adresse de la source,
comme du masquage d'adresse, la méthode classique pour
connecter un réseau privé comme client de l'Internet, avec une
seule adresse IP "officielle".
 La chaîne OUTPUT.
Celle-ci va permettre de modifier la destination de paquets
générés localement (par la passerelle elle-même).
A. EL FERGOUGUI filtres IPTABLES 23
La table MANGLE
 Cette table permet le marquage des paquets
entrants (PREROUTING) et générés
localement (OUTPUT).
A. EL FERGOUGUI filtres IPTABLES 24
A. EL FERGOUGUI filtres IPTABLES 25
Les politiques des règles (Les
chaînes)
Les chaînes sont des ensembles de règles que nous allons écrire
dans chaque table.
 ACCEPT
Les paquets qui satisfont aux critères sont acceptés, ils
continuent leur chemin dans la pile,
 DROP
Les paquets qui satisfont aux critères sont rejetés, on les oublie,
on n'envoie même pas de message ICMP .
 LOG
C'est une cible particulière qui permet de tracer au moyen de
syslog les paquets qui satisfont aux critères.
 REJECT (similaire à DROP, mais avec envoi d'un message
d'erreur ICMP à la source du paquet rejeté)
 RETURN, REDIRECT, SNAT, DNAT, MASQUERADE...
A. EL FERGOUGUI filtres IPTABLES 26
Cibles de la table mangle
 TOS
 TTL
 MARK
A. EL FERGOUGUI filtres IPTABLES 27
Cibles de la table nat
 DNAT
 SNAT
 MASQUERADE
Le DNAT ou NAT Destination
 La chaîne PREROUTING (avant routage) permet
de modifier que l'adresse de destination mais
conserve l'adresse source.
C'est ce qu'on appel faire du DNAT (NAT
destination).
Dans cette exemple, on va redireger le trafic en
destination du réseau "195.111.222.0" vers le
réseau "193.168.1.0".
iptables -t nat -A PREROUTING -d
195.111.222.0/24 -j DNAT --to-destination
193.168.1.0/24
A. EL FERGOUGUI filtres IPTABLES 28
Le SNAT ou NAT Source
 La chaîne POSTROUTING (après routage)
permet de modifier que l'adresse source mais
conserve l'adresse de destination.
C'est ce qu'on appel faire du SNAT (NAT
source).
Dans cette exemple, on va substituer l'adresse
source du trafic privé sortant vers l'extérieur par
une des trois adresses.
iptables -t nat -A POSTROUTING -s
193.168.1.0/24 -j SNAT --to-source 192.168.1.5-
192.168.1.8
A. EL FERGOUGUI filtres IPTABLES 29
L'IP Masquerade
 Le principe est d'utiliser une adresse IP publique
source pour cacher derrière elle toutes les adresses
IP du réseau privé
 iptables -t nat -A POSTROUTING -s 193.168.1.0/24 -j
SNAT --to-source 192.168.1.199 est équiv à
 iptables -t nat -A POSTROUTING -s 193.168.1.0/24 -j
MASQUERADE
 On peut utilisez d'autres options, comme choisir par
rapport a votre interface réseau , ici "eth0" et au
numéro de port, dans ce cas "80".
 iptables -t nat -A POSTROUTING -o eth0
--dport 80 -j MASQUERADE
A. EL FERGOUGUI filtres IPTABLES 30
question
SNAT vs MASQUERADE
A. EL FERGOUGUI filtres IPTABLES 31
A. EL FERGOUGUI filtres IPTABLES 32
La machine d'état
 NEW: nouvelle connexion
 ESTABLISHED: connexion déjà établie
 RELATED : connexion avec une autre déjà
établie
 INVALID: le paquet invalide
En générale ils fonctionnent avec la
correspondance --state
A. EL FERGOUGUI filtres IPTABLES 33
Création d'une règle
 iptables [-t table] commande
[correspondance] [cible]
A. EL FERGOUGUI filtres IPTABLES 34
Commandes
 -A, --append : ajoute une règle
exemple: iptables -A INPUT
 -D, --delete : supprime une régle
exemple: iptables -D INPUT --dport 80 -j
DROP ou iptables –D INPUT 1
 -R, --replace
exemple: iptables -R INPUT 1 -s
192.168.0.1 -j DROP
 -I, --insert
A. EL FERGOUGUI filtres IPTABLES 35
Commandes
 -L, --list : donne la liste des entrées de la chaîne
donnée. (–v –line-numbers )
Exemple iptables –L INPUT
 -F, --flush : vide la chaine de toutes ses règle
exemple: iptables -F INPUT
 -X, --delete-chain: supprime une chaine utilisateur
 -P, --policy: fixe la politique d'une chaine
 -p, --protocol : type de protocole,
exemple:iptables -A INPUT -p tcp
 -s, --src, --source: source du paquet
exemple: iptables -A INPUT -s 192.168.1.1
 -d, --dst, --destination
exemple: iptables -A INPUT -d 192.168.1.1
A. EL FERGOUGUI filtres IPTABLES 36
Commandes
 -i, --in-interface
 -o, --out-interface
 --sport, --source-port : port source
iptables -A INPUT -p tcp --sport 22
 --dport, --destination-port
 --src-range : spécifier une plage d’adresses source
exempel:iptables -A INPUT -p tcp -m iprange --
src-range 192.168.1.200-192.168.2.220
 --dst-range idem pour destination
A. EL FERGOUGUI filtres IPTABLES 37
Commandes
 --length : longueur de paquet
iptables -A INPUT -p tcp -m length --length
1400:1500
 --mac-source
iptables -A INPUT -m mac --mac-source
00:01:02:0 3:04:05
 --source-port : multiport source max 15
iptables -A INPUT -p tcp -m multiport --source-
port 22,53,80,110
 --destination-port : idem pour destination
 --port : port source = port detination
Commandes pour le protocole tcp
(-p tcp)
 --tcp-flags [!] mark [,…]: spécifie l'ensemble
de drapeaux tcp (SYN,ACK,FIN,RST,URG)
 [!] –syn : spécifie la présence du drapeaux
SYN (! Contraire)
A. EL FERGOUGUI filtres IPTABLES 38
Commandes pour le protocole icmp
(-p icmp)
 --icmp-type [!] type: spécifie le type de paquet
icmp
 Exemple: type= echo-request, echo-reply
A. EL FERGOUGUI filtres IPTABLES 39
A. EL FERGOUGUI filtres IPTABLES 40
Commandes
 --state :
iptables -A INPUT -m state --state
NEW,RELATED,ESTABLISHED [,INVALID]
 --tos :
iptables -A INPUT -p tcp -m tos --tos 0x16
 --ttl
iptables -A OUTPUT -m ttl --ttl 60
Commande du module limit (-m limit)
 Le module limit limite les informations écrites
dans le journal de bord ou limite les
messages icmp (ping)
 --limit rate : taux maximum, le taux rate est
exprimé par un nombre suivi de /seconde,
/minute, /hour, /day exemple 5/minute
 --limit-burst number : le nimbre maximum de
paquets initiaux que l'on accepte
A. EL FERGOUGUI filtres IPTABLES 41
A. EL FERGOUGUI filtres IPTABLES 42
Cible DNAT
 --to-destination
Exemple: iptables -t nat -A PREROUTING -
p tcp -d 15.45.23.67 --dport 80 -j DNAT --
to-destination 192.168.1.1-192.168.1.10
A. EL FERGOUGUI filtres IPTABLES 43
Cible MASQUERADE
 --to-ports
exempel: iptables -t nat -A POSTROUTING
-p TCP -j MASQUERADE --to-ports 1024-
31000
A. EL FERGOUGUI filtres IPTABLES 44
Cible SNAT
 --to-source
Exemple
iptables -t nat -A POSTROUTING -p tcp -o
eth0 -j SNAT --to-source 194.236.50.155-
194.236.50.160:1024-32000
A. EL FERGOUGUI filtres IPTABLES 45
Cible TOS
 --set-tos
Exemple
iptables -t mangle -A PREROUTING -p
TCP --dport 22 -j TOS --set-tos 0x10
A. EL FERGOUGUI filtres IPTABLES 46
Cible TTL
 --ttl-set
Exemple
iptables -t mangle -A PREROUTING -i eth0
-j TTL --ttl-set 64
A. EL FERGOUGUI filtres IPTABLES 47
Exemple de scripte firewall
 # vide tout
 IPTABLES -F
 IPTABLES -X
 IPTABLES –t nat -F
A. EL FERGOUGUI filtres IPTABLES 48
Exemple de scripte firewall
 # DEBUT des politiques par défaut
 # Je veux que les connexions entrantes soient
bloquées par défaut
iptables -P INPUT DROP
 Je veux que les connexions destinées à être
forwardées soient bloquées par défaut
iptables -P FORWARD DROP
 Je veux que les connexions sortantes soient
acceptées par défaut
iptables -P OUTPUT ACCEPT
A. EL FERGOUGUI filtres IPTABLES 49
iptables -A INPUT -j ACCEPT -i eth1 -s 192.168.1.0/24
–d 172.16.0.0/24
iptables -A OUTPUT -j ACCEPT -o eth1 –d
192.168.1.0/24 -s 172.16.0.0/24
iptables -A INPUT -j ACCEPT -p ALL -i lo
iptables -A OUTPUT -j ACCEPT -p ALL -o lo
iptables -A FORWARD -j ACCEPT -i eth1 -o eth0 -s
192.168.1.0/24
iptables -A FORWARD -j ACCEPT -o eth1 -i eth0 -s
0/0
A. EL FERGOUGUI filtres IPTABLES 50
 J'accepte les packets sortants d'établissement de
connexion
iptables -A FORWORD –i eth1 –o eth0 -m state --state
NEW -j ACCEPT
 Et les réponses
iptables -A FORWORD –i eth0 -m state --state
RELATED,ESTABLISHED -j ACCEPT
 J'accepte les packets entrants relatifs à des
connexions déjà établies
iptables -A INPUT -m state --state
RELATED,ESTABLISHED -j ACCEPT
A. EL FERGOUGUI filtres IPTABLES 51
 J'autorise les connexions TCP entrantes sur
les ports 20 et 21 (pour que mon serveur FTP
soit joignable de l'extérieur)
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
 J'autorise les connexions TCP entrantes sur
le port 22 (pour que mon serveur SSH soit
joignable de l'extérieur)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
A. EL FERGOUGUI filtres IPTABLES 52
 J'autorise les connexions TCP entrantes sur
le port 25 (pour que mon serveur de mail soit
joignable de l'extérieur)
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
 J'autorise les connexions TCP et UDP
entrantes sur le port 53 (pour que mon
serveur DNS soit joignable de l'extérieur)
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
A. EL FERGOUGUI filtres IPTABLES 53
 J'autorise les connexions TCP entrantes sur le port 80
(pour que mon serveur HTTP soit joignable de
l'extérieur)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
 J'autorise les connexions TCP et UDP entrantes sur le
port 139 mais uniquement sur l'interface "eth1" (pour
que mon serveur Samba soit joignable depuis mon
LAN seulement)
iptables -A INPUT -p tcp --dport 139 -i eth1 -j ACCEPT
iptables -A INPUT –p udp --dport 139 -i eth1 –j ACCEPT
A. EL FERGOUGUI filtres IPTABLES 54
 J'autorise les flux UDP entrants sur le port
1234 (pour pourvoir reçevoir les flux VideoLAN)
iptables -A INPUT -p udp --dport 1234 -j ACCEPT
 J'autorise les flux UDP envoyés sur l'adresse
multicast 224.2.127.254 et dont le port
destination est 9875 (pour recevoir les
annonces SAP)
iptables -A INPUT -p udp -d 224.2.127.254
--dport 9875 -j ACCEPT
A. EL FERGOUGUI filtres IPTABLES 55
 J'accepte le protocole ICMP (i.e. le "ping")
iptables -A INPUT -p icmp -j ACCEPT
 J'accepte le protocole IGMP (pour le multicast)
iptables -A INPUT -p igmp -j ACCEPT
 Pas de filtrage sur l'interface de "loopback"
iptables -A INPUT -i lo -j ACCEPT
A. EL FERGOUGUI filtres IPTABLES 56
 La cible LOG
iptables -A INPUT -i eth0 -p icmp -j LOG
Faire un $ ping -n 1 192.168.1.34
Voir la tracer la réponse au ping (INPUT). Nous récupérons cette trace dans
/var/log/messages :
Apr 1 08:40:15 linux kernel:
IN=eth0
OUT= MAC=00:00:b4:bb:5d:ee:00:20:18:29:11:31:08:00
SRC=192.168.1.22
DST=192.168.1.34
LEN=84 TOS=0x00
PREC=0x00
TTL=255 ID=4938
PROTO=ICMP TYPE=0
CODE=0
ID=53771
SEQ=256
A. EL FERGOUGUI filtres IPTABLES 57
 La règle par défaut pour la chaine INPUT
devient "REJECT" (il n'est pas possible de
mettre REJECT comme politique par défaut)
iptables -A INPUT -j REJECT
A. EL FERGOUGUI filtres IPTABLES 58
 DEBUT des règles pour le PARTAGE DE
CONNEXION
 Je veux que mon système fasse office de
"serveur NAT"
 (on supose que "eth0" par est l'interface de
connexion à Internet
iptables -t nat -A POSTROUTING -o eth0 -j
MASQUERADE
A. EL FERGOUGUI filtres IPTABLES 59
 Je veux que les requêtes TCP reçues sur le
port 80 soient forwardées à la machine dont l'IP
est 192.168.0.3 sur son port 80 (la réponse à la
requête sera forwardée au client)
 iptables -t nat -A PREROUTING -p tcp --dport
80 -j DNAT --to-destination 192.168.0.3:80
A. EL FERGOUGUI filtres IPTABLES 60
iptables -A INPUT -j ACCEPT -p TCP -i eth0
--sport 1024: --dport 21
optables -A INPUT -j ACCEPT -p TCP -i eth0
--sport 1024: --dport 80
iptables -A INPUT -i eth1 -p ALL -j DROP
-s 10.0.0.255
Iptables –L INPUT –v –line-numbers
Nouvelles chaines
 Iptables –N CH_telnet
 Iptables –A CH_telnet –p tcp –s 192.168.1.14
--dport 23 –j RETURN
 Iptables –A CH_telnet –p tcp –s
192.168.1.0/24 --dport 23 –j DROP
 Iptables –A INPUT –j CH_telnet
 Iptables –A FORWARD –j CH_telnet
A. EL FERGOUGUI filtres IPTABLES 61
Limiter un trafique et Utilisation des journaux
 La politique par défaut #iptables -P INPUT DROP
 La règle qui laisse passer 5 tentatives de connexion TCP
puis qui n'en laisse passer plus que 2 par minute
iptables -A INPUT -p tcp --syn -m limit --limit 2/minute --
limit-burst 5 -j ACCEPT
 Même chose avec les pings
iptables -A INPUT -p icmp --icmp-type ping -m limit --limit
2/minute --limit-burst 5 -j ACCEPT
 La politique par défaut #iptables -P INPUT ACCEPT
Iptables –A INPUT –d 127.0.0.1 –m limit
--limit 3/minute --limit-burst 3 –j LOG
Iptables –A INPUT –d 127.0.0.1 –j DROP
A. EL FERGOUGUI filtres IPTABLES 62
Interdiction de connexion
 Interdire les connexion TCP destinées au
poste quelque soit leur provenance:
 Iptables –A INPUT –p tcp –s 0/0 –d
192.168.1.14 --sys -j DROP
A. EL FERGOUGUI filtres IPTABLES 63
Luter contre les attaques DoS
 Lutter contre l'inondation de conexion(SYN-
FLOOD)
Iptables –A INPUT –p tcp --syn –m limit --limit
1/s –j ACCEPT
 Lutter contre le ping de la mort
Iptables –A INPUT –p icmp --icmp-type
echo-request –m limit --limit 1/s –j ACCEPT
 Lutter contre l'UDP Flood
Iptables –A INPUT –p udp –m limit --limit 1/s –j
ACCEPT
A. EL FERGOUGUI filtres IPTABLES 64
A. EL FERGOUGUI filtres IPTABLES 65
 Pour conserver tout ce beau travail
iptables-save
Ou pour l'exploiter ailleur
iptables-save > /root/maconfig.iptables
 Pour restaurer ce travail
iptable-restore < /root/maconfig.iptables
Script Démarrage et arrêt du pare-feu Iptables
#!/bin/sh
FW_start() {
echo "[Démarrage du pare-feu]"
### EFFACE TOUT LES PARAMETRES
iptables -F ; iptables -t filter -F ; iptables -t nat -F ;iptables -t mangle -F
echo "Vidages [OK]"
### REGLES DE FILTRAGE
# Autoriser le Loopback
iptables -A INPUT -i lo -j ACCEPT; iptables -A OUTPUT -o lo -j ACCEPT
# Ne pas casser les connexions déjà établies
iptables -t filter -A INPUT -m state --state RELATED,ESTABLISHED -j
ACCEPT
iptables -t filter -A OUTPUT -m state --state RELATED,ESTABLISHED -j
ACCEPT
# PING (ICMP)
iptables -t filter -A INPUT -p icmp -j ACCEPT; iptables -t filter -A OUTPUT -p
icmp -j ACCEPT
A. EL FERGOUGUI filtres IPTABLES 66
# SSH
iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 22 -j ACCEPT
# Serveur web (HTTP)
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT
# Serveur web (HTTPS)
iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT
# Serveur FTP
iptables -t filter -A INPUT -p tcp --dport 20:21 -j ACCEPT
iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j
ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 20:21 -j ACCEPT
# Serveur MAIL SMTP:25
iptables -t filter -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT
A. EL FERGOUGUI filtres IPTABLES 67
# Serveur MAIL POP3:110
iptables -t filter -A INPUT -p tcp --dport 110 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 110 -j ACCEPT
# Serveur MAIL IMAP:143
iptables -t filter -A INPUT -p tcp --dport 143 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT
# Serveur MAIL POP3S:995
iptables -t filter -A INPUT -p tcp --dport 995 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 995 -j ACCEPT
# DNS In/Out
iptables -t filter -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT
# NTP
iptables -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT
# Rejeter tout le reste
iptables -A INPUT -j DROP
echo "Filtrages [OK]"
A. EL FERGOUGUI filtres IPTABLES 68
### POLITIQUES #
Trafic entrants bloqués
iptables -P INPUT DROP
# Trafic forwardés bloqués
iptables -P FORWARD DROP
# Trafic sortants bloqués
iptables -P OUTPUT DROP
echo "Politiques [OK]"
}
A. EL FERGOUGUI filtres IPTABLES 69
FW_stop() {
echo "[Arret du pare-feu]"
# Supprime tous les filtres
iptables -F ;iptables -t filter –F; iptables -t nat -F iptables -t mangle -F
# Attribut une politiques "ACCEPT" aux tables
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t filter -P INPUT ACCEPT
iptables -t filter -P FORWARD ACCEPT
iptables -t filter -P OUTPUT ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P INPUT ACCEPT
iptables -t mangle -P FORWARD ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
iptables -t mangle -P POSTROUTING ACCEPT
}
A. EL FERGOUGUI filtres IPTABLES 70
FW_restart() {
FW_stop;
sleep 2;
FW_start;
}
case "$1" in
'start') FW_start ;;
'stop') FW_stop ;;
'restart') FW_restart ;;
'status') iptables -L
iptables -t nat -L
iptables -t mangle -L ;;
*) echo "Usage: firewall {start|stop|restart|status}" ;;
esac
A. EL FERGOUGUI filtres IPTABLES 71
A. EL FERGOUGUI filtres IPTABLES 72
 iptables start (ou restart)
permet de restaurer l'état des tables
 iptables stop
efface toutes vos règles et met par défaut
ACCEPT sur toutes les chaînes de toutes les
tables
 iptables status
Affiche l'état du FW

firewallfirewallfirewallfirewallfirewall.pdf

  • 1.
  • 2.
    Qu’est ce qu’unfirewall ?  Un firewall est essentiellement un dispositif de protection qui constitue un filtre entre un réseau local et un autre réseau non sûr tel que l’Internet ou un autre réseau local. A. EL FERGOUGUI filtres IPTABLES 2
  • 3.
    Objectifs d’un firewall Lesfirewalls visent, au niveau de la sécurité, deux objectifs: 1. Contrôler et protéger les hôtes du réseau local: Contre la divulgation non autorisée d’informations sensibles 2. Protéger les serveurs Internet  Contre des commandes jugées dangereuses associées à des services du type « telnet » et « sendmail »  Contre la modification ou la suppression non autorisée de fichiers vitaux pour le système A. EL FERGOUGUI filtres IPTABLES 3
  • 4.
    Principes de based’un firewall  Le moindre privilège :  Octroyer le moindre privilège aux utilisateur (processeurs) pour réaliser leur tâches. ==>Objectif: limiter les conséquences d'une vulnérabilité ou d'une erreur.  La défense en profondeur :  Utilisation de plusieurs mécanismes de protection redondants ==>Objectif : Garder une défense efficace même si un des mécanismes de défense devait être vulnérable ou mal configuré (ex. désactivé les services non utilisés)  Le goulet d'étranglement  Le trafic doit passer par un seul point : le FireWall ==> Objectif : Toute attaque doit passer par un chemin connu où il peut être bloquée (ex. utilisation de modems) A. EL FERGOUGUI filtres IPTABLES 4
  • 5.
    Architecture générale d’unFirewall A. EL FERGOUGUI filtres IPTABLES 5
  • 6.
    Filtrage de paquetIP Filtrage selon les informations de l’en-tête du paquet IP  Type de paquets (TCP, UDP, ….)  @ source  @destination  Port de destination (TCP, UDP, ….)  Etc.. A. EL FERGOUGUI filtres IPTABLES 6
  • 7.
    Filtrage réseau (Networklevel Firewalls)  Fonctionnement: Chaque paquet est comparé à un certain nombre de règle (filtres: type de paquet (tcp/udp), port, @sources, @déstination ), puis est transmis ou rejeté A. EL FERGOUGUI filtres IPTABLES 7
  • 8.
    Filtrage réseau (Networklevel Firewalls)  Avantages  C’est un firewall transparent  Apporte un premier degré de protection s’il est utilisé avec d’autres firewall  Inconvénients  Définir des filtres de paquets est une tâche complexe  Le débit diminue lorsque le nombre de filtres augmente A. EL FERGOUGUI filtres IPTABLES 8
  • 9.
    Filtrage applicatif (Applicationlevel Firewalls)  Permet un contrôle d’accès beaucoup plus précis.  Il est réalisé par l’examen de ports de services http ou FTP par exemple A. EL FERGOUGUI filtres IPTABLES 9
  • 10.
    Filtrage applicatif (Applicationlevel Firewalls)  Avantages  Les paquets entrants et sortants ne peuvent accéder aux services pour lesquels il n’y a pas de proxy  Permet de filtrer des commandes spécifiques (ex: GET ou POST pour HTTP)  Le plus haut degré de sécurité  cache les machines du réseau privé, Peut être utilisé avec des adresses IP réservés et non enregistrés  Inconvénients  Les performances les plus faibles  N’est pas transparent pour les utilisateurs A. EL FERGOUGUI filtres IPTABLES 10
  • 11.
    Firewall : plusieursconfigurations  Le terme de « firewall » regroupe tous les systèmes de sécurité qui fonctionnent en connexion avec un réseau  La philosophie de base du coupe-feu:  Tout ce qui n’est pas expressément interdit est autorisé  Tout ce qui n’est pas expressément autorisé est interdit A. EL FERGOUGUI filtres IPTABLES 11
  • 12.
    Firewall avec routeurde filtrage (routed firewall) A. EL FERGOUGUI filtres IPTABLES 12
  • 13.
    NAT (Network AddressTranslation)  Une passerelle (routeur/gateway) est dotée de deux interfaces :  L'une d'elle appartient au réseau N°1  La deuxième interface est connectée au deuxième réseau (avec une adresse faisant partie des adresses du 2ème réseau).  Tout le trafic traversant le passerelle et orienté vers le 2ème réseau est doté de l'adresse IP source de 2ème interface  Tout le trafic entrant vers le 1er réseau doit être doté de l'adresse IP de destination la 2ème interface  Utilisation des adresses non routables ou non enregistrées [10.0.0] ou [172.16.0.0 à 172.31.0.0] ou [192.168.0.0] A. EL FERGOUGUI filtres IPTABLES 13
  • 14.
    NAT: principe A. ELFERGOUGUI filtres IPTABLES 14
  • 15.
    Firewall avec unezone DMZ (Zone Démilitarisée)  Une zone démilitarisée (DeMilitarised Zone) est une zone de réseau sur laquelle on peut connecter des serveurs qui ont besoin d’être mis séparément du réseau interne et accessible de l'extérieur  Une zone DMZ n’a de signification que le FireWall possède au moins deux interfaces réseaux (il est conseillé d'en avoir 3)  Le traffic de/vers la zone DMZ peut être schématisé comme suit :  Traffic du réseau externe vers la DMZ autorisé ;  Traffic du réseau externe vers le réseau interne interdit ;  Traffic du réseau interne vers la DMZ autorisé ;  Traffic du réseau interne vers le réseau externe autorisé ;  Traffic de la DMZ vers le réseau interne interdit ;  Traffic de la DMZ vers le réseau externe refusé. A. EL FERGOUGUI filtres IPTABLES 15
  • 16.
  • 17.
    A. EL FERGOUGUIfiltres IPTABLES 17 netfilter  effectuer des filtrages de paquets, principalement pour assurer des fonctions de Firewall: interdire , acepeter..  effectuer des opérations de NAT (Network Address Translation)  effectuer des opérations de marquage des paquets, pour leur appliquer un traitement spécial
  • 18.
    chaines et règles Une chaine est une pile de règles  Chaque règle d'une chaine est composée de deux parties: (un critère et une politique)  Le critère précise les cas d'application  Le politique précise l'action accomplie  Si le critère ne s'applique pas au paquet, on examine la règle suivante ==> l'ordre des règles est important  Si aucune règle ne s'applique on examine la politique associée à la chaine. A. EL FERGOUGUI filtres IPTABLES 18
  • 19.
    A. EL FERGOUGUIfiltres IPTABLES 19 tables et leurs chaînes Il existe trois tables qui vont servir à contenir des règles de "filtrage":  FILTER: (INPUT, OUTPUT, FORWORD)  NAT: (PREROUTING, POSTROUTING, OUTPUT)  MANGLE: (PREROUTING, OUTPUT)
  • 20.
    Les différentes chainesprédéfinies  INPUT: le trafique destiné à la machine locale  OUTPUT: le trafique sortant de la machine vers le réseau  FORWARD: trafique qui transite par la machine  PREROUTING: cette chaine peut modifier un trafique dès qu'il entre dans le système avant qu'il soit routé  POSTROUTING: cette chaine peut modifier un trafique mais après le routage A. EL FERGOUGUI filtres IPTABLES 20
  • 21.
    A. EL FERGOUGUIfiltres IPTABLES 21 La table "Filter"  La chaîne INPUT. Cette chaîne décidera du sort des paquets entrant localement sur l'hôte.  La chaîne OUTPUT. Ici, ce ne sont que les paquets émis par l'hôte local qui seront filtrés  La chaîne FORWARD. Enfin, les paquets qui traversent l'hôte, suivant les routes implantées, seront filtrés ici.
  • 22.
    A. EL FERGOUGUIfiltres IPTABLES 22 La table NAT  La chaîne PREROUTING. Permet de faire de la translation d'adresse de destination. Cette méthode est intéressante si l'on veut faire croire au monde extérieur, par exemple, qu'il y a un serveur WEB sur le port 80 de la passerelle, alors que celui-ci est hébergé par un hôte du réseau privé, sur le port 8080.  La chaîne POSTROUTING. Elle permet de faire de la translation d'adresse de la source, comme du masquage d'adresse, la méthode classique pour connecter un réseau privé comme client de l'Internet, avec une seule adresse IP "officielle".  La chaîne OUTPUT. Celle-ci va permettre de modifier la destination de paquets générés localement (par la passerelle elle-même).
  • 23.
    A. EL FERGOUGUIfiltres IPTABLES 23 La table MANGLE  Cette table permet le marquage des paquets entrants (PREROUTING) et générés localement (OUTPUT).
  • 24.
    A. EL FERGOUGUIfiltres IPTABLES 24
  • 25.
    A. EL FERGOUGUIfiltres IPTABLES 25 Les politiques des règles (Les chaînes) Les chaînes sont des ensembles de règles que nous allons écrire dans chaque table.  ACCEPT Les paquets qui satisfont aux critères sont acceptés, ils continuent leur chemin dans la pile,  DROP Les paquets qui satisfont aux critères sont rejetés, on les oublie, on n'envoie même pas de message ICMP .  LOG C'est une cible particulière qui permet de tracer au moyen de syslog les paquets qui satisfont aux critères.  REJECT (similaire à DROP, mais avec envoi d'un message d'erreur ICMP à la source du paquet rejeté)  RETURN, REDIRECT, SNAT, DNAT, MASQUERADE...
  • 26.
    A. EL FERGOUGUIfiltres IPTABLES 26 Cibles de la table mangle  TOS  TTL  MARK
  • 27.
    A. EL FERGOUGUIfiltres IPTABLES 27 Cibles de la table nat  DNAT  SNAT  MASQUERADE
  • 28.
    Le DNAT ouNAT Destination  La chaîne PREROUTING (avant routage) permet de modifier que l'adresse de destination mais conserve l'adresse source. C'est ce qu'on appel faire du DNAT (NAT destination). Dans cette exemple, on va redireger le trafic en destination du réseau "195.111.222.0" vers le réseau "193.168.1.0". iptables -t nat -A PREROUTING -d 195.111.222.0/24 -j DNAT --to-destination 193.168.1.0/24 A. EL FERGOUGUI filtres IPTABLES 28
  • 29.
    Le SNAT ouNAT Source  La chaîne POSTROUTING (après routage) permet de modifier que l'adresse source mais conserve l'adresse de destination. C'est ce qu'on appel faire du SNAT (NAT source). Dans cette exemple, on va substituer l'adresse source du trafic privé sortant vers l'extérieur par une des trois adresses. iptables -t nat -A POSTROUTING -s 193.168.1.0/24 -j SNAT --to-source 192.168.1.5- 192.168.1.8 A. EL FERGOUGUI filtres IPTABLES 29
  • 30.
    L'IP Masquerade  Leprincipe est d'utiliser une adresse IP publique source pour cacher derrière elle toutes les adresses IP du réseau privé  iptables -t nat -A POSTROUTING -s 193.168.1.0/24 -j SNAT --to-source 192.168.1.199 est équiv à  iptables -t nat -A POSTROUTING -s 193.168.1.0/24 -j MASQUERADE  On peut utilisez d'autres options, comme choisir par rapport a votre interface réseau , ici "eth0" et au numéro de port, dans ce cas "80".  iptables -t nat -A POSTROUTING -o eth0 --dport 80 -j MASQUERADE A. EL FERGOUGUI filtres IPTABLES 30
  • 31.
    question SNAT vs MASQUERADE A.EL FERGOUGUI filtres IPTABLES 31
  • 32.
    A. EL FERGOUGUIfiltres IPTABLES 32 La machine d'état  NEW: nouvelle connexion  ESTABLISHED: connexion déjà établie  RELATED : connexion avec une autre déjà établie  INVALID: le paquet invalide En générale ils fonctionnent avec la correspondance --state
  • 33.
    A. EL FERGOUGUIfiltres IPTABLES 33 Création d'une règle  iptables [-t table] commande [correspondance] [cible]
  • 34.
    A. EL FERGOUGUIfiltres IPTABLES 34 Commandes  -A, --append : ajoute une règle exemple: iptables -A INPUT  -D, --delete : supprime une régle exemple: iptables -D INPUT --dport 80 -j DROP ou iptables –D INPUT 1  -R, --replace exemple: iptables -R INPUT 1 -s 192.168.0.1 -j DROP  -I, --insert
  • 35.
    A. EL FERGOUGUIfiltres IPTABLES 35 Commandes  -L, --list : donne la liste des entrées de la chaîne donnée. (–v –line-numbers ) Exemple iptables –L INPUT  -F, --flush : vide la chaine de toutes ses règle exemple: iptables -F INPUT  -X, --delete-chain: supprime une chaine utilisateur  -P, --policy: fixe la politique d'une chaine  -p, --protocol : type de protocole, exemple:iptables -A INPUT -p tcp  -s, --src, --source: source du paquet exemple: iptables -A INPUT -s 192.168.1.1  -d, --dst, --destination exemple: iptables -A INPUT -d 192.168.1.1
  • 36.
    A. EL FERGOUGUIfiltres IPTABLES 36 Commandes  -i, --in-interface  -o, --out-interface  --sport, --source-port : port source iptables -A INPUT -p tcp --sport 22  --dport, --destination-port  --src-range : spécifier une plage d’adresses source exempel:iptables -A INPUT -p tcp -m iprange -- src-range 192.168.1.200-192.168.2.220  --dst-range idem pour destination
  • 37.
    A. EL FERGOUGUIfiltres IPTABLES 37 Commandes  --length : longueur de paquet iptables -A INPUT -p tcp -m length --length 1400:1500  --mac-source iptables -A INPUT -m mac --mac-source 00:01:02:0 3:04:05  --source-port : multiport source max 15 iptables -A INPUT -p tcp -m multiport --source- port 22,53,80,110  --destination-port : idem pour destination  --port : port source = port detination
  • 38.
    Commandes pour leprotocole tcp (-p tcp)  --tcp-flags [!] mark [,…]: spécifie l'ensemble de drapeaux tcp (SYN,ACK,FIN,RST,URG)  [!] –syn : spécifie la présence du drapeaux SYN (! Contraire) A. EL FERGOUGUI filtres IPTABLES 38
  • 39.
    Commandes pour leprotocole icmp (-p icmp)  --icmp-type [!] type: spécifie le type de paquet icmp  Exemple: type= echo-request, echo-reply A. EL FERGOUGUI filtres IPTABLES 39
  • 40.
    A. EL FERGOUGUIfiltres IPTABLES 40 Commandes  --state : iptables -A INPUT -m state --state NEW,RELATED,ESTABLISHED [,INVALID]  --tos : iptables -A INPUT -p tcp -m tos --tos 0x16  --ttl iptables -A OUTPUT -m ttl --ttl 60
  • 41.
    Commande du modulelimit (-m limit)  Le module limit limite les informations écrites dans le journal de bord ou limite les messages icmp (ping)  --limit rate : taux maximum, le taux rate est exprimé par un nombre suivi de /seconde, /minute, /hour, /day exemple 5/minute  --limit-burst number : le nimbre maximum de paquets initiaux que l'on accepte A. EL FERGOUGUI filtres IPTABLES 41
  • 42.
    A. EL FERGOUGUIfiltres IPTABLES 42 Cible DNAT  --to-destination Exemple: iptables -t nat -A PREROUTING - p tcp -d 15.45.23.67 --dport 80 -j DNAT -- to-destination 192.168.1.1-192.168.1.10
  • 43.
    A. EL FERGOUGUIfiltres IPTABLES 43 Cible MASQUERADE  --to-ports exempel: iptables -t nat -A POSTROUTING -p TCP -j MASQUERADE --to-ports 1024- 31000
  • 44.
    A. EL FERGOUGUIfiltres IPTABLES 44 Cible SNAT  --to-source Exemple iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to-source 194.236.50.155- 194.236.50.160:1024-32000
  • 45.
    A. EL FERGOUGUIfiltres IPTABLES 45 Cible TOS  --set-tos Exemple iptables -t mangle -A PREROUTING -p TCP --dport 22 -j TOS --set-tos 0x10
  • 46.
    A. EL FERGOUGUIfiltres IPTABLES 46 Cible TTL  --ttl-set Exemple iptables -t mangle -A PREROUTING -i eth0 -j TTL --ttl-set 64
  • 47.
    A. EL FERGOUGUIfiltres IPTABLES 47 Exemple de scripte firewall  # vide tout  IPTABLES -F  IPTABLES -X  IPTABLES –t nat -F
  • 48.
    A. EL FERGOUGUIfiltres IPTABLES 48 Exemple de scripte firewall  # DEBUT des politiques par défaut  # Je veux que les connexions entrantes soient bloquées par défaut iptables -P INPUT DROP  Je veux que les connexions destinées à être forwardées soient bloquées par défaut iptables -P FORWARD DROP  Je veux que les connexions sortantes soient acceptées par défaut iptables -P OUTPUT ACCEPT
  • 49.
    A. EL FERGOUGUIfiltres IPTABLES 49 iptables -A INPUT -j ACCEPT -i eth1 -s 192.168.1.0/24 –d 172.16.0.0/24 iptables -A OUTPUT -j ACCEPT -o eth1 –d 192.168.1.0/24 -s 172.16.0.0/24 iptables -A INPUT -j ACCEPT -p ALL -i lo iptables -A OUTPUT -j ACCEPT -p ALL -o lo iptables -A FORWARD -j ACCEPT -i eth1 -o eth0 -s 192.168.1.0/24 iptables -A FORWARD -j ACCEPT -o eth1 -i eth0 -s 0/0
  • 50.
    A. EL FERGOUGUIfiltres IPTABLES 50  J'accepte les packets sortants d'établissement de connexion iptables -A FORWORD –i eth1 –o eth0 -m state --state NEW -j ACCEPT  Et les réponses iptables -A FORWORD –i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT  J'accepte les packets entrants relatifs à des connexions déjà établies iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
  • 51.
    A. EL FERGOUGUIfiltres IPTABLES 51  J'autorise les connexions TCP entrantes sur les ports 20 et 21 (pour que mon serveur FTP soit joignable de l'extérieur) iptables -A INPUT -p tcp --dport 20 -j ACCEPT iptables -A INPUT -p tcp --dport 21 -j ACCEPT  J'autorise les connexions TCP entrantes sur le port 22 (pour que mon serveur SSH soit joignable de l'extérieur) iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  • 52.
    A. EL FERGOUGUIfiltres IPTABLES 52  J'autorise les connexions TCP entrantes sur le port 25 (pour que mon serveur de mail soit joignable de l'extérieur) iptables -A INPUT -p tcp --dport 25 -j ACCEPT  J'autorise les connexions TCP et UDP entrantes sur le port 53 (pour que mon serveur DNS soit joignable de l'extérieur) iptables -A INPUT -p tcp --dport 53 -j ACCEPT iptables -A INPUT -p udp --dport 53 -j ACCEPT
  • 53.
    A. EL FERGOUGUIfiltres IPTABLES 53  J'autorise les connexions TCP entrantes sur le port 80 (pour que mon serveur HTTP soit joignable de l'extérieur) iptables -A INPUT -p tcp --dport 80 -j ACCEPT  J'autorise les connexions TCP et UDP entrantes sur le port 139 mais uniquement sur l'interface "eth1" (pour que mon serveur Samba soit joignable depuis mon LAN seulement) iptables -A INPUT -p tcp --dport 139 -i eth1 -j ACCEPT iptables -A INPUT –p udp --dport 139 -i eth1 –j ACCEPT
  • 54.
    A. EL FERGOUGUIfiltres IPTABLES 54  J'autorise les flux UDP entrants sur le port 1234 (pour pourvoir reçevoir les flux VideoLAN) iptables -A INPUT -p udp --dport 1234 -j ACCEPT  J'autorise les flux UDP envoyés sur l'adresse multicast 224.2.127.254 et dont le port destination est 9875 (pour recevoir les annonces SAP) iptables -A INPUT -p udp -d 224.2.127.254 --dport 9875 -j ACCEPT
  • 55.
    A. EL FERGOUGUIfiltres IPTABLES 55  J'accepte le protocole ICMP (i.e. le "ping") iptables -A INPUT -p icmp -j ACCEPT  J'accepte le protocole IGMP (pour le multicast) iptables -A INPUT -p igmp -j ACCEPT  Pas de filtrage sur l'interface de "loopback" iptables -A INPUT -i lo -j ACCEPT
  • 56.
    A. EL FERGOUGUIfiltres IPTABLES 56  La cible LOG iptables -A INPUT -i eth0 -p icmp -j LOG Faire un $ ping -n 1 192.168.1.34 Voir la tracer la réponse au ping (INPUT). Nous récupérons cette trace dans /var/log/messages : Apr 1 08:40:15 linux kernel: IN=eth0 OUT= MAC=00:00:b4:bb:5d:ee:00:20:18:29:11:31:08:00 SRC=192.168.1.22 DST=192.168.1.34 LEN=84 TOS=0x00 PREC=0x00 TTL=255 ID=4938 PROTO=ICMP TYPE=0 CODE=0 ID=53771 SEQ=256
  • 57.
    A. EL FERGOUGUIfiltres IPTABLES 57  La règle par défaut pour la chaine INPUT devient "REJECT" (il n'est pas possible de mettre REJECT comme politique par défaut) iptables -A INPUT -j REJECT
  • 58.
    A. EL FERGOUGUIfiltres IPTABLES 58  DEBUT des règles pour le PARTAGE DE CONNEXION  Je veux que mon système fasse office de "serveur NAT"  (on supose que "eth0" par est l'interface de connexion à Internet iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
  • 59.
    A. EL FERGOUGUIfiltres IPTABLES 59  Je veux que les requêtes TCP reçues sur le port 80 soient forwardées à la machine dont l'IP est 192.168.0.3 sur son port 80 (la réponse à la requête sera forwardée au client)  iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.0.3:80
  • 60.
    A. EL FERGOUGUIfiltres IPTABLES 60 iptables -A INPUT -j ACCEPT -p TCP -i eth0 --sport 1024: --dport 21 optables -A INPUT -j ACCEPT -p TCP -i eth0 --sport 1024: --dport 80 iptables -A INPUT -i eth1 -p ALL -j DROP -s 10.0.0.255 Iptables –L INPUT –v –line-numbers
  • 61.
    Nouvelles chaines  Iptables–N CH_telnet  Iptables –A CH_telnet –p tcp –s 192.168.1.14 --dport 23 –j RETURN  Iptables –A CH_telnet –p tcp –s 192.168.1.0/24 --dport 23 –j DROP  Iptables –A INPUT –j CH_telnet  Iptables –A FORWARD –j CH_telnet A. EL FERGOUGUI filtres IPTABLES 61
  • 62.
    Limiter un trafiqueet Utilisation des journaux  La politique par défaut #iptables -P INPUT DROP  La règle qui laisse passer 5 tentatives de connexion TCP puis qui n'en laisse passer plus que 2 par minute iptables -A INPUT -p tcp --syn -m limit --limit 2/minute -- limit-burst 5 -j ACCEPT  Même chose avec les pings iptables -A INPUT -p icmp --icmp-type ping -m limit --limit 2/minute --limit-burst 5 -j ACCEPT  La politique par défaut #iptables -P INPUT ACCEPT Iptables –A INPUT –d 127.0.0.1 –m limit --limit 3/minute --limit-burst 3 –j LOG Iptables –A INPUT –d 127.0.0.1 –j DROP A. EL FERGOUGUI filtres IPTABLES 62
  • 63.
    Interdiction de connexion Interdire les connexion TCP destinées au poste quelque soit leur provenance:  Iptables –A INPUT –p tcp –s 0/0 –d 192.168.1.14 --sys -j DROP A. EL FERGOUGUI filtres IPTABLES 63
  • 64.
    Luter contre lesattaques DoS  Lutter contre l'inondation de conexion(SYN- FLOOD) Iptables –A INPUT –p tcp --syn –m limit --limit 1/s –j ACCEPT  Lutter contre le ping de la mort Iptables –A INPUT –p icmp --icmp-type echo-request –m limit --limit 1/s –j ACCEPT  Lutter contre l'UDP Flood Iptables –A INPUT –p udp –m limit --limit 1/s –j ACCEPT A. EL FERGOUGUI filtres IPTABLES 64
  • 65.
    A. EL FERGOUGUIfiltres IPTABLES 65  Pour conserver tout ce beau travail iptables-save Ou pour l'exploiter ailleur iptables-save > /root/maconfig.iptables  Pour restaurer ce travail iptable-restore < /root/maconfig.iptables
  • 66.
    Script Démarrage etarrêt du pare-feu Iptables #!/bin/sh FW_start() { echo "[Démarrage du pare-feu]" ### EFFACE TOUT LES PARAMETRES iptables -F ; iptables -t filter -F ; iptables -t nat -F ;iptables -t mangle -F echo "Vidages [OK]" ### REGLES DE FILTRAGE # Autoriser le Loopback iptables -A INPUT -i lo -j ACCEPT; iptables -A OUTPUT -o lo -j ACCEPT # Ne pas casser les connexions déjà établies iptables -t filter -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -t filter -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # PING (ICMP) iptables -t filter -A INPUT -p icmp -j ACCEPT; iptables -t filter -A OUTPUT -p icmp -j ACCEPT A. EL FERGOUGUI filtres IPTABLES 66
  • 67.
    # SSH iptables -tfilter -A INPUT -p tcp --dport 22 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 22 -j ACCEPT # Serveur web (HTTP) iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT # Serveur web (HTTPS) iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT # Serveur FTP iptables -t filter -A INPUT -p tcp --dport 20:21 -j ACCEPT iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 20:21 -j ACCEPT # Serveur MAIL SMTP:25 iptables -t filter -A INPUT -p tcp --dport 25 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT A. EL FERGOUGUI filtres IPTABLES 67
  • 68.
    # Serveur MAILPOP3:110 iptables -t filter -A INPUT -p tcp --dport 110 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 110 -j ACCEPT # Serveur MAIL IMAP:143 iptables -t filter -A INPUT -p tcp --dport 143 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT # Serveur MAIL POP3S:995 iptables -t filter -A INPUT -p tcp --dport 995 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 995 -j ACCEPT # DNS In/Out iptables -t filter -A INPUT -p tcp --dport 53 -j ACCEPT iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT # NTP iptables -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT # Rejeter tout le reste iptables -A INPUT -j DROP echo "Filtrages [OK]" A. EL FERGOUGUI filtres IPTABLES 68
  • 69.
    ### POLITIQUES # Traficentrants bloqués iptables -P INPUT DROP # Trafic forwardés bloqués iptables -P FORWARD DROP # Trafic sortants bloqués iptables -P OUTPUT DROP echo "Politiques [OK]" } A. EL FERGOUGUI filtres IPTABLES 69
  • 70.
    FW_stop() { echo "[Arretdu pare-feu]" # Supprime tous les filtres iptables -F ;iptables -t filter –F; iptables -t nat -F iptables -t mangle -F # Attribut une politiques "ACCEPT" aux tables iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT iptables -t filter -P INPUT ACCEPT iptables -t filter -P FORWARD ACCEPT iptables -t filter -P OUTPUT ACCEPT iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P POSTROUTING ACCEPT iptables -t nat -P OUTPUT ACCEPT iptables -t mangle -P PREROUTING ACCEPT iptables -t mangle -P INPUT ACCEPT iptables -t mangle -P FORWARD ACCEPT iptables -t mangle -P OUTPUT ACCEPT iptables -t mangle -P POSTROUTING ACCEPT } A. EL FERGOUGUI filtres IPTABLES 70
  • 71.
    FW_restart() { FW_stop; sleep 2; FW_start; } case"$1" in 'start') FW_start ;; 'stop') FW_stop ;; 'restart') FW_restart ;; 'status') iptables -L iptables -t nat -L iptables -t mangle -L ;; *) echo "Usage: firewall {start|stop|restart|status}" ;; esac A. EL FERGOUGUI filtres IPTABLES 71
  • 72.
    A. EL FERGOUGUIfiltres IPTABLES 72  iptables start (ou restart) permet de restaurer l'état des tables  iptables stop efface toutes vos règles et met par défaut ACCEPT sur toutes les chaînes de toutes les tables  iptables status Affiche l'état du FW