0% ont trouvé ce document utile (0 vote)
30 vues70 pages

Iptables 2021

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1/ 70

Chapitre 2

Passerelle
iptables/firewalld

1
Passerelle Linux

2
Firewall

Double interface
Notre machine dispose de deux interfaces Ethernet

• Eth0 sur le réseau local (privé)


• Eth1 sur l'Internet

3
Firewall

Double interface
• Il faut bien comprendre qu'à priori, il peut entrer et sortir
des données de chaque interface.

• Il peut entrer et sortir des données par Eth0, parce qu'un


client du réseau local établit une connexion avec un service
installé sur la passerelle, Apache par exemple, pour le web.

• Il peut entrer et sortir des données par Eth1 parce qu'un


client situé sur le Net établit une connexion avec un service
installé sur la passerelle, une session ssh par exemple.

4
Firewall

Double interface
• Notre objectif c’est de contrôler le trafic qui passe
par la passerelle, solutions :
– IPTables (Netfilter)
– Firewalld

5
Netfilter : Xtables

6
Firewall

Netfilter dans la pile IPv4


• Netfilter se présente comme une série de 5 ‘points d'accrochage’, sur
lesquels des modules de traitement des paquets vont se greffer. Ces
points sont:

• NF_IP_PRE_ROUTING
• NF_IP_LOCAL_IN
• NF_IP_FORWARD
• NF_IP_POSTROUTING
• NF_IP_LOCAL_OUT

7
Firewall

Netfilter dans la pile IP


• La branche gauche représente le trajet des paquets qui entrent et qui
sortent vers et depuis un processus local (SMB, FTP, HTTP etc.)
• La branche de droite représente le trajet des paquets qui traversent
notre passerelle dans sa fonction de routeur.

8
Firewall

Ce qu’on peut faire avec Netfilter


• A travers ces cinq points d'insertion, Netfilter va être capable :
• D'effectuer des filtrages de paquets,
principalement pour assurer des fonctions de Firewall. On pourra par
exemple interdire à tous les paquets venant de l'Internet et s'adressant au
• D'effectuer desdeopérations
port 80 (HTTP) de NAT
passer. Notre serveur (Network
APACHE Address
est un serveur Intranet
et ne doit pas être accessible depuis l'extérieur.
Translation)
Ces fonctions sont particulièrement utiles lorsque l'on veut faire
communiquer tout ou partie d'un réseau privé, monté avec des adresses
IP privées (192.168.x.x par exemple) avec l'Internet.

• D'effectuer des opérations de marquage des paquets:


pour leur appliquer un traitement spécial (qos). Ces fonctionnalités sont
particulièrement intéressantes sur une passerelle de réseau d'entreprise.

9
Firewall

Comment Netfilter sait le faire ?


• Netfilter dispose d'une commande à tout faire : IPtables.
Cette commande va permettre, entre autres, d'écrire des
chaînes de règles dans des tables. Il y a dans Netfilter trois
tables qui correspondent aux trois principales fonctions déjà
vue

10
Firewall

La table "Filter"
• Cette table va contenir toutes les règles qui permettront de filtrer les
paquets. Cette table contient trois chaînes:

• 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.

11
Firewall

Les chaînes
• Les chaînes sont des ensembles de règles que nous allons écrire dans
chaque table. Ces chaînes vont permettre d'identifier des paquets qui
correspondent à certains critères.
• Les cibles Les cibles enfin sont des sortes d'aiguillage qui dirigeront les paquets
satisfaisant aux critères . Les cibles préconstruites sont :
• 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 . Un trou noir, quoi.
• LOG : C'est une cible particulière qui permet de tracer au moyen de syslog
les paquets qui satisfont aux critères.
• CLUSTERIP: créer des clusters de noeuds répondant à la même adresse IP.
VIP n'importe quelle adresse IP définie sur tous les hôtes du cluster. les
connexions depuis la même IP source iront vers le même serveur
• ,,,,,
12
Firewall

La table NAT
• Cette table permet d'effectuer toutes les translations d'adresses
nécessaires.
• 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).

13
Firewall

La table NAT
• NAT recalcule CRC: Le CRC TCP/UDP est le complément à 1 sur 16 bits de
la somme des octets d’un pseudo entête IP (IPsrc, TPdst, taille, type proto) , de l’entête
TCP et des données pris deux par deux (mots de 16 bits).
CRC
USHORT CheckSum(USHORT *buffer, int size)
{
unsigned long cksum=0;
while(size >1)
{
cksum+=*buffer++;
size -=sizeof(USHORT);
}
if(size)
cksum += *(UCHAR*)buffer;
cksum = (cksum >> 16) + (cksum & 0xffff);
cksum += (cksum >>16);

~
return (USHORT)( cksum);
}

15
NAT
• Il existe deux types de NAT :
Fast-NAT : implémenté dans le code du routage IP
du noyau, plus rapide car pas de traçage de
connexion qui prends puissance processeur.
Netfilter-NAT : implémenter dans le noyau linux à
l’intérieur du code netfilter, permis traçage de
connexion.
Les cibles :
-DNAT :
-SNAT :
-MASQUERADE :

16
Firewall

La table MANGLE
• Cette table permet le marquage des paquets. Le marquage de paquets
va permettre un traitement spécifique des paquets marqués dans les
tables de routage avec IPROUTE 2. Les cibles :
• TOS :
• TTL : Contourner rejet FAI même TTL
• MARK : marquage pour la gestion B.P.

• SECMARK : placer des marques traités par


SElinux ou tout autre système de sécurité
• CONNSECMARK : copier un contexte de
sécurité vers 1 conn compléte utilisé par SElinux pour
affiner cette sécurité.

17
Firewall

Traçage de connexion
Utilisation du module conntrack.

Le suivi des connexions requiert des ressources système


État des connexions :

• NEW établissement d’une nouvelle connexion


• ESTABLISHED la connexion est déjà établie
• RELATED la connexion est en relation avec une connexion
déjà établie
• INVALID le paquet incorrecte (voir diapo suivant)

18
fragmentation

19
Invalid = Tiny Fragments

Taille min paquet ip est 68 octets

L’attaque pour contourner netfiler consiste à fragmenter en deux paquets


IP une demande de connexion TCP. Le premier paquet IP de 68 octets ne
contient comme données que les 8 premiers octets de l’en-tête TCP (ports
source et destination ainsi que le numéro de séquence). Les données du
second paquet IP renferment alors la demande de connexion TCP (flag
SYN à 1 et flag ACK à 0).

Les filtres IP appliquent la même règle de filtrage à tous les fragments d’un
paquet. Le filtrage du premier fragment (Fragment Offset égal à 0)
déterminant cette règle elle s’applique donc aux autres (Fragment Offset
égal à 1) sans aucune autre forme de vérification.

20
21
Firewall

Traçage de connexion
La table de suivi de connexions est accessible dans la zone :/proc/net/ip_conntrack
Exemple :
Un client du LAN dispose de l'IP 192.168.0.10, la passerelle dispose de l'IP 192.168.0.253 sur le LAN, la passerelle dispose de l'IP
80.8.130.97 sur le Net et le client navigue sur le serveur HTTP d'IP 213.186.35.33

tcp 6 82 SYN_SENT
src=192.168.0.10 dst=213.186.35.33 sport=1105 dport=80 [UNREPLIED]
src=213.186.35.33 dst=80.8.130.97 sport=80 dport=1105

tcp 6 82 SYN_RECV src=213.186.35.33 dst=192.168.0.10 sport=1105 dport=80


src=80.8.130.97 dst=213.186. 35.33 sport=80 dport=1105

tcp 6 431 ESTABLISHED


src=192.168.0.10 dst=213.186.35.33 sport=1105 dport=80
src=213.186.35.33 dst=80.8.130.97 sport=80 dport=1103 [ASSURED]
……
……
tcp 6 73 TIME_WAIT
src=192.168.0.10 dst=213.186.35.33 sport=1105 dport=80
src=213.186.35.33 dst=80.8.130.97 sport=80 dport=1103 [ASSURED]
Firewall

Traçage de connexion

• Le nbre max de connextion gérées est dans :


/proc/sys/net/ipv4/ip_conntrack_max.
• Le traçage de connexion peut se faire pour
les protocoles UDP et les quelques types
d’ICMP.
• Des modules ou assistants sont
indispensables pour gérer certains protocole
tque ftp (passif/actif)
RW : PREROUTING et OUTPUT
Paquets qui ne doivent pas être tracés

Traçage de
connection

24
RAW : Nouvelle table

25
Commande iptables

Iptables [-t table] –L [chaine]


Iptables [-t table] –F [chaine]
iptables [-t table] –A chaine règle
iptables [-t table] –I chaine numéro règle
iptables [-t table] –R chaine numéro règle
iptables [-t table] –D chaine numéro

-L Affiche toutes les règles de la table indiquée


-F Supprime toutes les règles de la table sauf la politique par défaut
-A Ajoute une règle à la fin de la table spécifiée
-I Insère la règle avant celle indiquée
-R : Permet de remplacer la chaîne spécifiée.
-D Supprime une règle

26
Firewall

Traçage de connexion

iptables -A FORWARD -i eth0 -o eth1 -m state --state NEW, ESTABLISHED,


RELATED -j ACCEPT

iptables -A FORWARD -i eth1 -o eth0 -m state –state ESTABLISHED, RELATED


-j ACCEPT
Chaîne utilisateur

- On crée une chaine utilisateur avec l'option –N:


iptables -N ma_chaine

- On défini des règles spécifiques pour cette chaine comme d’habitude:


iptables -A ma_chaine...

- On envoi des paquets vers la chaine concernée avec le switch –j:


iptables -A INPUT ... -j ma_chaine

28
Firewall

Exemples

29
Firewall

La table de filtrage
• Initialisation de Netfilter
– Tapez successivement les commandes suivantes pour initialiser
votre système:
– iptables -F
– iptables -X
– iptables -t nat -F
– iptables -t nat -X
– De cette manière, vous avez toutes vos chaînes vides, avec par
défaut la règle "ACCEPT"

30
Firewall

La table de filtrage
– iptables -L
– L'affichage va vous assurer que les trois chaînes INPUT,
FORWARD et OUTPUT sont vides et ont bien la règle par défaut
ACCEPT

– iptables -t nat -L
– L'affichage va vous assurer que les trois chaînes PREROUTING,
POSTROUTING et OUTPUT sont vides.

31
Firewall

La table de filtrage
• Mise en place de Masquerade
– Tapez maintenant les commandes suivantes::
– iptables -t nat -A POSTROUTING –s 192.168.1.0/24 -o eth1 -j
MASQUERADE
– Tout ce qui sort du routage (-A POSTROUTING) et qui doit
passer vers l'Internet (-o eth1) doit subir un masquage d'adresse (-j
MASQUERADE)

– echo 1 > /proc/sys/net/ipv4/ip_forward


– Ceci pour être certain que votre noyau autorise le routage. Vous
n'en avez pas besoin, si votre machine est configurée par défaut
pour assurer le routage.

32
Firewall

La table de filtrage
• Voilà. La passerelle entre le réseau privé et l'Internet doit
être opérationnelle.
• Vérifiez que, depuis votre passerelle Linux, vous avez bien
accès au Net.
• Vérifiez que, depuis un poste de votre réseau privé, vous
avez bien accès au Net.

33
Firewall

test
• Pour bien montrer que les chaînes INPUT et OUTPUT
n'interviennent pas dans le routage, nous allons tout
simplement leur mettre DROP comme règle par défaut.
• Tapez les commandes suivantes:
– iptables -P INPUT DROP
– iptables -P OUTUT DROP
– iptables -L (pour vérifier que INPUT et OUTPUT "droppent" bien
tout ce qui passe).
• Vérifiez que, depuis votre passerelle Linux, vous n'avez plus accès au
Net (ni à votre réseau privé d'ailleurs). Vérifiez que, depuis un poste
de votre réseau privé, vous avez toujours l'accès au Net.

34
Firewall

DNAT
• La cible DNAT est utilisée pour la Traduction d'Adresse
Réseau de Destination, ce qui veut dire qu'elle sert à réécrire
l'adresse IP de Destination du paquet.
• Si un paquet est sélectionné, et qu'il est la cible de la règle,
ce paquet et tous les paquets suivants du même flux seront
traduits, et ensuite routés vers le matériel, l'hôte ou le réseau
appropriés.
• Cette cible peut être extrêmement utile, par exemple, quand
vous avez un hôte avec un serveur web dans un LAN, mais
pas d'IP réelle routable sur l'Internet.

35
Firewall

DNAT
• Vous pouvez alors indiquer au pare-feu de transférer tous
les paquets allant vers son propre port HTTP, vers le serveur
web réel dans le LAN. Vous pouvez aussi spécifier une
plage d'adresses IP de destination, et le mécanisme DNAT
choisira l'adresse IP de destination au hasard pour chaque
flux. Nous pourrons donc réaliser une sorte d'équilibrage de
charge.

• Notez que la cible DNAT est disponible uniquement dans


les chaînes PREROUTING et OUTPUT de la table nat.

36
Firewall

DNAT (Exemple)

iptables -t nat -A PREROUTING -p tcp -d 195.132.21.1 -


-dport 80 -j DNAT --to-destination 192.168.1-5

L'option --to-destination indique au mécanisme DNAT


quelle Destination IP placer dans l'en-tête IP, et où sont
envoyés les paquets qui sont sélectionnés. L'exemple ci-
dessus enverra tous les paquets destinés à l'adresse IP
195.132.21.1 dans une plage IP de réseau local comprise
entre 192.168.1.1 jusqu'à 192.168.1.5.
37
Firewall

DNAT (Exemple)
• Notez qu’un flux utilisera toujours le même hôte, et chaque
flux aura une adresse IP attribuée au hasard.

• Nous pouvons aussi avoir à spécifier une seule adresse IP,


dans ce cas nous serons toujours connectés au même hôte.

• Notez aussi que nous pouvons ajouter un port ou une plage


de ports vers lequel le trafic sera redirigé. Ceci se fait en
ajoutant, par exemple, un :80-100 à l'adresse IP pour
laquelle nous voulons traduire les paquets..

38
Firewall

DNAT (Exemple)
• Une règle peut alors ressembler à
--to-destination 192.168.1.1:88 ou
--to-destination 192.168.1.1:80-100

Les spécifications de port sont valides uniquement pour les


règles qui précisent les protocoles TCP ou UDP avec
l'option --protocol

39
Firewall

DNAT (Exemple 2)
• Nous voulons publier notre site web via notre connexion
Internet. Nous ne possédons qu'une seule adresse IP, et le
serveur HTTP est situé dans notre réseau interne. Notre
pare-feu possède l'adresse IP externe $INET_IP et l'adresse
IP interne $LAN_IP, et notre serveur HTTP a l'adresse IP
$HTTP_IP. La première chose à faire est d'ajouter la
simple règle suivante à la chaîne PREROUTING dans la
table nat :

iptables -t nat -A PREROUTING --dst $INET_IP -p tcp


--dport 80 -j DNAT --to-destination $HTTP_IP

40
Firewall

DNAT (Exemple 2)
• Maintenant, tous les paquets provenant de l'Internet et allant
vers le port 80 sur notre pare-feu, sont redirigés (ou
DNATés) vers notre serveur HTTP interne.

peut-on accéder à notre serveur web?


- depuis Internet
- depuis un hôte du réseau local?

Commençons par voir ce qui se passe pour une machine sur


le net qui possède une adresse IP $EXT_BOX

41
Firewall

DNAT (Exemple 2)
• Le paquet quitte un client du net $EXT_BOX vers $INET_IP
• Le paquet atteint le pare-feu.
• Le pare-feu DNAT le paquet et envoie celui-ci à travers les différentes
chaînes, etc.
• Le paquet quitte la pare-feu pour aller vers le $HTTP_IP.
• Le paquet atteint le serveur HTTP, et la machine HTTP répond en
retour à travers le pare-feu, si c'est cette machine que la base de
routage a entré comme passerelle pour $EXT_BOX. Normalement, ça
devrait être la passerelle par défaut du serveur HTTP.
• Le pare-feu Un-DNAT le paquet de nouveau, ainsi le paquet semble
provenir du pare-feu lui-même.
• Le paquet en réponse transite vers le client $EXT_BOX.

42
Firewall

DNAT (Exemple 2)
• Maintenant, voyons ce qui se passe si le paquet est généré
par un client sur le même réseau que le serveur HTTP lui-
même :
– Le paquet quitte la $LAN_BOX vers $INET_IP.
– Le paquet atteint le pare-feu.
– Le paquet est DNATé, et toutes les autres actions requises sont prises,
– Le paquet quitte le pare-feu et atteint le serveur HTTP.
– Le serveur HTTP essaie de répondre au paquet, et voit dans les tables de routage
que le paquet provient d'une machine locale sur le même réseau, et donc tente
d'envoyer le paquet directement à l'adresse source IP d'origine (qui devient alors
l'adresse IP de destination).
– Le paquet atteint le client, et le client est dans la confusion car le paquet en
retour ne provient pas de l'hôte qui a envoyé la requête d'origine. Donc, le client
supprime le paquet, et attend une réponse "réelle".

43
Firewall

DNAT (Exemple 2)
• La solution la plus simple à ce problème est de SNATer
tous les paquets provenant du réseau local sur lequel nous
faisons du DNAT. Exemple, regardons la règle ci-dessus.
• Nous SNATons les paquets entrants dans notre pare-feu qui
sont destinés à $HTTP_IP port 80 et ainsi il est vu que des
paquets proviennent de $LAN_IP. Ceci force le serveur
HTTP à envoyer ces paquets vers notre pare-feu, lequel Un-
DNAT ceux-ci et les envoie au client. La règle ressemble à
ceci :
iptables -t nat -A POSTROUTING –s 10.10.11.0/24 –p
tcp --dport 80 -j SNAT --to-source $LAN_IP

44
Iptables et limit DDOS
-m limit --limit 5/second --limit-burst 10/second.
- Burst : (seau contient 10 jetons au début) . Chaque paquet qui établit une correspondance avec la
règle consomme un jeton.
- On reçoit alors des paquets 1-2-3-4-5-6-7-8-9-10 qui correspondent à la règle, tous arrivent dans un
intervalle de 1/100ème de seconde.
- Le seau de jetons se retrouve complètement vide. Et puisque le seau est vide, les paquets qui
rencontrent la règle ne peuvent plus correspondre et poursuivent leur route vers la règle suivante, ou
subissent par défaut
- Pour chaque tranche de 1/5ème de seconde sans qu'un paquet ne corresponde, le compteur de jetons
augmente de 1, jusqu'à un maximum de 10. Et 1 seconde après avoir reçu 10 paquets, on aura de
nouveau 5 jetons de moins.

iptables -A INPUT -p tcp -m conntrack --state NEW -m limit --


limit 30/s --limit-burst 60/s -j ACCEPT

iptables -A INPUT -p tcp -m conntrack --state NEW -j DROP

45
Attaques TCP SYN Flooding

• L ’établissement d ’une connexion s ’effectue par


un poigné de main en trois temps

SYN x
LISTEN
SYNy, ACKx+1

SYN_RECVD
ACK y+1

CONNECTED
- Allocation des structures: ipcb, tcpcb
- Attente dans l ’état SYN_RECVD (75s)
- Nombre limité de connexions dans cet état 46
TCP SYN Flooding

47
SynProxy Anti-DDOS
SYNPROXY est un module : proxy de paquets TCP SYN. Il peut être utilisé pour protéger tout serveur TCP contre les
inondations SYN et les attaques DDos similaires.

48
En tête TCP (options)

49
TCP options (choisi par sunproxy)
(Maximum Segment Size (MSS), Window Scaling, Selective Acknowledgements (SACK), Timestamps)
--mss taille maximale de segment annoncée aux clients. Cela doit correspondre au backend.

--wscale: Échelle de fenêtre annoncée aux clients. Cela doit correspondre au backend.

50
TCP options (passé par sunproxy au backend)

--sack-perm Passer l'option d'acquittement sélectif du client au backend (sera


désactivée si elle n'est pas présente).

--timestamps Passez l'option d'horodatage client au backend se compose d'un


champ Timestamp Echo et Timestamp Reply, le champ de réponse est toujours mis
à zéro par l'expéditeur et complété par le récepteur, après quoi il est renvoyé à
l'expéditeur d'origine. Les deux champs d'horodatage ont une longueur de 4 octets!
La différence fixe le temps d’éxpiration des temporisateurs pour ré-envoyer la
copie #LAN/WAN

51
Options iptables avancés

Multiport match
-m multiport --source-port 22,53,80,110
-m multiport --destination-port 22,53,80,110
-m multiport --port 22,53,80,110

TCP Flags
--tcp-flags accepte deux paramètres: Le premier est le masque, qui définit l'indicateur à
examiner dans le paquet. Le second se rapporte à l'indicateur qui doit être défini pour la
concordance.
Les indicateurs sont : ACK, FIN, PSH, RST, SYN, URG, ALL, NONE
-p tcp --tcp-flags ACK,FIN,SYN SYN
SYN défini, Les indicateurs ACK et FIN non-définis.
(!) après --tcp-flags inverse l'effet de l'option de concordance.

52
SynProxy conf

iptables –t raw -A PREROUTING -i eth0 -p tcp -m multiport --dports


22,80,443 -p tcp --tcp-flags FIN,SYN,RST,ACK SYN -j CT --notrack

iptables –t filter -A INPUT -i eth0 -p tcp -m multiport --dports 22,80,443 -p


tcp -m state --state UNTRACKED -j SYNPROXY --sack-perm --
timestamp --wscale 7 --mss 1460

iptables -t filter -A INPUT -i eth0 -p tcp -m multiport --dports 22,80,443 -p


tcp -m state --state INVALID -j DROP

53
Firewall

Sauvegarde et restauration des tables de règles importantes

La commande iptables-save est utilisée pour sauvegarder la


table de règles dans un fichier texte au format spécial, et la
commande iptables-restore est utilisée pour charger ce
fichier à nouveau dans le noyau.
iptables-save > /etc/sysconfig/iptales ou

service iptables save

Le fichier iptables est lu par le script iptables

54
Cluster

web1$ ifconfig eth0:0 10.0.8.188

web1$ ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:50:56:a8:2f:95 inet
addr:10.0.88.181 Bcast:10.0.88.255 Mask:255.255.255.0
eth0:1 Link encap:Ethernet HWaddr 00:50:56:a8:2f:95 inet
addr:10.0.88.188 Bcast:10.0.88.255 Mask:255.255.255.0

de même avec web2


55
Cluster
modprobe ipt_CLUSRTERIP

web1
iptables -I INPUT 1 -d 10.0.88.188 -i eth0 -j CLUSTERIP --
new \ --hashmode sourceip --clustermac 01:23:45:67:89:AB
\ --total-nodes 2 --local-node 1
web2
iptables -I INPUT 1 -d 10.0.88.188 -i eth0 -j CLUSTERIP --
new \ --hashmode sourceip --clustermac 01:23:45:67:89:AB
\ --total-nodes 2 --local-node 2

56
Cluster

$ for (i=1;i<20;i++); do curl --head


http://10.0.88.188 2>/dev/null | grep
BACKEND; done
BACKEND: web1 BACKEND: web2 BACKEND: web2 BACKEND:
web1 BACKEND: web1 BACKEND: web1 BACKEND: web1
BACKEND: web2 BACKEND: web1 BACKEND: web1 BACKEND:
web2 BACKEND: web1 BACKEND: web2 BACKEND: web1
BACKEND: web2 BACKEND: web1 BACKEND: web1 BACKEND:
web2 BACKEND: web1 BACKEND: web1

57
Exemple

58
DMZ
La politique de sécurité mise en œuvre sur la DMZ est généralement
la suivante :
• Trafic du réseau externe vers la DMZ autorisé ;
• Trafic du réseau externe vers le réseau interne interdit ;
• Trafic du réseau interne vers la DMZ autorisé ;
• Trafic du réseau interne vers le réseau externe autorisé ;
• Trafic de la DMZ vers le réseau interne interdit ;
• Les machines du RL utilise squid transparent,

Ici le DNS est à usage privé (seules les machines de l'intranet y font
appel). Donc il ne doit PAS être placé en DMZ.

59
• 1 - Ecrivez les règles pour purger les tables et pour définir les
politiques par défaut.

• 2 - Certains processus locaux utilisent l'interface locale loopback


pour communiquer. Il est donc conseille de tout autoriser sur cette
interface.

• 3 - Ecrivez les règles de filtrage globales pour le trac interne !


externe. (masquage + trafic local-internet + trafic gw-internet +
trafic gw-local)

• 4 - Ecrivez les règles de filtrage specifiques par type de trac.


60
1
#Vider les chaînes de chaque table
– iptables -F
– iptables -t nat -F
– iptables -t mangle –F

# Vider les chaînes personnelles éventuellement présentes


– iptables -X
– iptables -t nat -X
– iptables -t mangle –X

# Politiques par defaut sur la table filter


– iptables -P INPUT DROP
– iptables -P OUTPUT DROP
– iptables -P FORWARD DROP
.

61
2

– iptables -A INPUT -i lo -j ACCEPT

– iptables -A OUTPUT -o lo -j ACCEPT

62
– iptables -t nat -A POSTROUTING -o $WAN -j MASQUERADE
#activer la translation d'adresse vers l'exterieur
– iptables -A FORWARD -i $LAN -o $WAN -m state –state
NEW,ESTABLISHED,RELATED -j ACCEPT
– iptables -A FORWARD -i $WAN -o $LAN -m state --state
ESTABLISHED,RELATED -j ACCEPT
# accepter tout trac sortant du reseau interne. Seules les demandes de connexions (etat NEW)
dans le sens interne - externe sont validees
– iptables -A OUTPUT -o $WAN -m state –state NEW, ESTABLISHED,
RELATED -j ACCEPT
– iptables -A INPUT -i $WAN -m state --state ESTABLISHED,RELATED -j
ACCEPT
# accepter tout trac sortant du pare-feu vers le reseau externe. Seules les demandes de connexions
(etat NEW) dans le sens pare-feu externe sont validees
– iptables -A OUTPUT -o $LAN -m state –state NEW, ESTABLISHED,
RELATED -j ACCEPT
– iptables -A INPUT -i $LAN -m state –state ESTABLISHED,RELATED -j
ACCEPT
#accepter tout trac sortant du pare-feu vers le reseau local. Seules les demandes de connexions63
(etat NEW) dans le sens pare-feu local sont validees
4
• Trac Web
– iptables -t nat -A PREROUTING -i $WAN -p tcp --dport 80 -j DNAT -- to-
destination $DMZServeurHTTP
# tout ce qui vient de l'exterieur a destination d'un port 80 est redirige vers le serveur HTTP de
la DMZ,.

– iptables -t nat -A PREROUTING -i $LAN -p tcp --dport 80 -j DNAT - -to-


destination $DMZServeurProxy :3128
# C'est une des techniques utilise pour faire un proxy transparent, les clients non pas a
configurer leur machine.

– iptables -A FORWARD -i $WAN -p tcp --dport 80 -j ACCEPT


# acceptation du trafic HTTP venant de l'exterieur vers le serveur Web interne

64
– iptables -A FORWARD -o $WAN -p tcp --sport 80 -j ACCEPT
#acceptation du trafic HTTP provenant du serveur Web interne

– iptables -A FORWARD -i $LAN -p tcp --dport 80 -j ACCEPT


# acceptation du trafic HTTP destine au serveur Web local

– iptables -A FORWARD -o $LAN -p tcp --sport 80 -j ACCEPT


# acceptation du trafic HTTP issu du reseau local

65
• Trafic DNS
– iptables -t nat -A PREROUTING -j DNAT -i $WAN -p tcp --dport 53 -- to-
destination $LANServeurDNS
#redirection du trafic DNS vers le serveur du réseau local en TCP

– iptables -t nat -A PREROUTING -j DNAT -i $WAN -p udp --dport 53 --


to-destination $LANServeurDNS
#redirection du trafic DNS vers le serveur du réseau local en UDP

– iptables -A FORWARD -o $LAN -p tcp --dport 53 -j ACCEPT


#acceptation du trafic DNS vers le serveur local en TCP

– iptables -A FORWARD -o $LAN -p udp --dport 53 -j ACCEPT


#acceptation du trafic DNS vers le serveur local en UDP

– iptables -A FORWARD -i $LAN -p tcp --sport 53 -j ACCEPT


#acceptation du trafic DNS depuis le serveur local en TCP

– iptables -A FORWARD -i $LAN -p udp --sport 53 -j ACCEPT


#acceptation du trafic DNS depuis le serveur local en UDP
66
• Trac SMTP
– iptables -t nat -A PREROUTING -j DNAT -i $WAN -p tcp --dport 25 --to-
destination $DMZServeurSMTP
#redirection des demandes du trac SMTP vers le bon serveur
– iptables -A FORWARD -i $LAN -p tcp --dport 25 -j ACCEPT
#acceptation du trac SMTP depuis le reseau local vers des serveurs quelconques

– iptables -A FORWARD -o $LAN -p tcp --sport 25 -j ACCEPT


#acceptation du trac SMTP depuis des serveurs quelconques vers le reseau local
– iptables -A FORWARD -i $DMZ -p tcp --dport 25 -j ACCEPT
#acceptation du trac SMTP depuis la DMZ vers des serveurs quelconques

– iptables -A FORWARD -o $DMZ -p tcp --sport 25 -j ACCEPT


#acceptation du trac SMTP depuis des serveurs quelconques vers la DMZ

67
• Trafic FTP

– iptables -t nat -A PREROUTING -j DNAT -i $WAN -p tcp --dport 21 -- to-


destination $DMZServeurFTP
#redirection des demandes du trafic FTP vers le bon serveur

– iptables -A FORWARD -i $WAN -p tcp --dport 21 -j ACCEPT


#acceptation du trafic FTP venant de l'extérieur vers le serveur FTP interne

– iptables -A FORWARD -o $WAN -p tcp --sport 21 -j ACCEPT


#acceptation du trafic FTP venant du réseau interne vers les serveurs FTP externes

68
Trafic ICMP
– iptables -A FORWARD -i $DMZ -p icmp -j ACCEPT
#acceptation du trafic ICMP provenant de la DMZ

– iptables -A FORWARD -o $DMZ -p icmp -j ACCEPT


#acceptation du trafic ICMP _a destination de la DMZ

– iptables -A FORWARD -i $LAN -p icmp -j ACCEPT


#acceptation du trafic ICMP provenant du LAN

– iptables -A FORWARD -o $LAN -p icmp -j ACCEPT


#acceptation du trafic ICMP _a destination du LAN

69
Fin

70

Vous aimerez peut-être aussi