Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

538d7762e97c2

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

Université Cheick Anta Diop de Dakar

Faculté des Sciences et Techniques


Departement Maths-Informatique

Iptables sous linux

Présentateur : Professeur :
Seyni Seydou Abdoul Kader Dr M OULD DEYE

Elhadj Mohamed Diakhité

Ousmane Diop

Alphouseyni Mané

2010-2011
IPTABLES SOUS LINUX

PLAN

I. Introduction

II. Principes et Fonctionnements d’iptables

1. Utilisation d'iptables
2. Politiques élémentaires de pare-feu

3. Sauvegarde et restauration de règles iptables


4. Filtrage iptables commun
5. Règles FORWARD et NAT
6. DMZ et iptables
7. Virus et adresses IP usurpées
8. Iptables et suivi de connexions
9. Quelques commandes de base

III. Conclusion

MASTER 1 CLASSIQUE 2010-2011 Page 1


IPTABLES SOUS LINUX

I. Introduction

Dans un réseau informatique, le plus important est la gestion du trafic ou des


trafics entrants et sortants. Ce qui oblige une grande surveillance et une sécurité
fiable afin de rendre le réseau le plus performant possible et une grande
utilisation pour les usagers.
C’est dans cette logique que s’inscrit iptables sous linux afin de contrôler le
mieux un réseau informatique. C’est un élément permettant de trier parmi les
flux réseaux en bloquant certains et autorisant d'autres. Iptables est un serveur
pare-feu qui utilise directement le noyau linux.
Le code pare-feu des routeurs filtrants sont implémenté au niveau du pilote IP.
La puissance et la flexibilité de Netfilter sont implémentées grâce à l'interface
iptables. Cet outil de ligne de commande est similaire en syntaxe à son
prédécesseur, ipchains ; toutefois, iptables utilise le sous-système Netfilter afin
d'améliorer la connexion réseau, l'inspection et le traitement ; alors que ipchains
utilisait des ensembles de règles compliquées pour filtrer les chemins de source
et destination, ainsi que des ports de connexion pour les deux. Iptables offre une
journalisation avancée ainsi que des actions avant et après le routage, la
traduction d'adresses réseau et la redirection de ports avancées dans une seule
interface de ligne de commande.

II. Principes et Fonctionnements d’iptables


1. Utilisation d'iptables
La première étape lors de l'utilisation d’iptables est de démarrer le service
iptables. Pour ce faire, utilisez la commande suivante :
service iptables start

Avertissement
Les services ip6tables devraient être désactivés afin d'utiliser le service
iptables à l'aide des commandes suivantes :

service ip6tables stop


chkconfig ip6tables off

Pour qu’iptables soit lancé par défaut dès que le système est démarré, vous
devez changer le statut du niveau d'exécution sur le service à l'aide de
chkconfig.

MASTER 1 CLASSIQUE 2010-2011 Page 2


IPTABLES SOUS LINUX

chkconfig --level 345 iptables on

La syntaxe d’iptables est séparée en tiers. Le tiers principal est la chaîne. Une
chaîne spécifie l'état auquel un paquet sera manipulé. Son utilisation est la
suivante :
iptables -A chain -j target

L'option -A ajoute une règle à la fin d'un ensemble de règles existant. chain
représente le nom de la chaîne pour une règle. Les trois chaînes intégrées
d’iptables (c'est-à-dire, les chaînes qui affectent tous les paquets qui traversent
un réseau) sont INPUT, OUTPUT et FORWARD. Elles sont permanentes et ne
peuvent pas être supprimées. L'option -j target spécifie l'emplacement dans
l'ensemble de règles iptables où cette règle particulière devrait directement
passer (jump). Certaines cibles intégrées sont ACCEPT, DROP et REJECT.
De nouvelles chaînes (également appelées chaînes définies par l'utilisateur)
peuvent être créées à l'aide de l'option -N. Il est utile de créer une nouvelle
chaîne pour personnaliser des règles granulaires ou élaborées.

2. Politiques élémentaires de pare-feu


Certaines politiques élémentaires de pare-feu établies depuis le début peuvent
servir de base pour construire des règles définies par l'utilisateur plus détaillées.
Iptables utilise des politiques (-P) afin de créer des règles par défaut. Les
administrateurs qui font toujours attention à la sécurité, choisissent normalement
la politique de ne prendre en compte aucun paquet et de n'autoriser que des
paquets spécifiques selon leur cas. Les règles suivantes bloquent tous les paquets
entrants et sortants sur une passerelle réseau :
iptables -P INPUT DROP
iptables -P OUTPUT DROP

En outre, il est recommandé que tout paquet retransmis — le trafic réseau qui
doit être routé à partir du pare-feu jusqu'à son nœud de destination — soit
également refusé, afin de restreindre les clients internes à toute exposition
involontaire à l'internet. Pour ce faire, utilisez la règle suivante :
iptables -P FORWARD DROP

Après avoir configuré les chaînes de politique, vous pouvez créer de nouvelles
règles pour votre réseau et vos besoins de sécurité particuliers. Les sections
suivantes examinent certaines règles que vous pouvez implémenter lors de la
construction de votre pare-feu iptables.

MASTER 1 CLASSIQUE 2010-2011 Page 3


IPTABLES SOUS LINUX

3. Sauvegarde et restauration de règles iptables

Les règles de pare-feu sont uniquement valides lorsque l'ordinateur est


allumé. Si le système est redémarré, les règles sont automatiquement supprimées
et réinitialisées. Pour sauvegarder les règles afin qu'elles soient chargées à une
date ultérieure, utilisez la commande suivante :
/sbin/service iptables save

Les règles sont stockées dans le fichier /etc/sysconfig/iptables et sont appliquées


dès que le service est lancé ou redémarré, y compris lorsque l'ordinateur est
redémarré.

4. Filtrage iptables commun

Le fait de garder des agresseurs distants à l'extérieur d'un LAN représente un


aspect important de la sécurité réseau, voire le plus important. L'intégrité d'un
LAN devrait être protégée contre les utilisateurs distants malveillants grâce à
l'utilisation de règles rigoureuses de pare-feu. Cependant, avec une politique par
défaut définie de façon à bloquer tous les paquets entrants, sortants et
retransmis, il est impossible que les utilisateurs internes du LAN, de la
passerelle et du pare-feu puissent communiquer entre eux ou de manière externe.
Pour autoriser les utilisateurs à effectuer des fonctions relatives au réseau et
utiliser des applications réseau, les administrateurs doivent ouvrir certains ports
à la communication.
Par exemple, pour autoriser l'accès au port 80 sur le pare-feu, ajoutez la règle
suivante :
iptables -A INPUT -p tcp -m tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT

Cela autorise la navigation régulière du Web depuis les sites Web qui
communiquent via le port 80. Pour autoriser l'accès aux sites Web sécurisés (tels
que https://www.example.com/), vous devez également ouvrir le port 443.
iptables -A INPUT -p tcp -m tcp --sport 443 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT

Important
Lors de la création d'un ensemble de règles iptables, il est critique de se
souvenir que l'ordre est important. Par exemple, si une chaîne spécifie
que tout paquet provenant du sous-réseau local 192.168.100.0/24 n'est

MASTER 1 CLASSIQUE 2010-2011 Page 4


IPTABLES SOUS LINUX

pas pris en compte et qu'une autre chaîne est ajoutée (-A) qui autorise les
paquets provenant de 192.168.100.13 (qui est à l'intérieur du sous-réseau
restreint), cette dernière règle sera alors ignorée. Vous devez tout d'abord
définir une règle autorisant 192.168.100.13, puis définir l'autre règle sur
le sous-réseau.

Pour insérer une règle de manière arbitraire dans une chaîne existante de
règles, utilisez -I, suivi de la chaîne dans laquelle vous souhaitez insérer
la règle et un numéro de règle (1, 2,3,..., n) où vous souhaitez la mettre.
Par exemple :

iptables -I INPUT 1 -i lo -p all -j ACCEPT

La règle est insérée comme première règle dans la chaîne INPUT pour
autoriser le trafic de périphérique de loopback local.

Il se peut parfois que vous ayez besoin d'un accès distant au LAN de l'extérieur
du LAN. Des services sécurisés, comme SSH, peuvent être utilisés pour des
connexions cryptées à distance aux services du LAN. Pour les administrateurs
avec des ressources basées sur PPP (comme les banques de modem ou les
comptes ISP), l'accès commuté peut être utilisé pour éviter les barrières de pare-
feu de manière sécurisée, vu que les connexions par modem se trouvent
normalement derrière un pare-feu / une passerelle, étant des connexions directes.
Toutefois, pour des utilisateurs distants utilisant des connexions à large bande,
des exemptions peuvent être accordées. Vous pouvez configurer iptables de
façon à accepter les connexions provenant de clients SSH distants. Par exemple,
pour autoriser l'accès SSH à distance, les règles suivantes peuvent être utilisées :
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p udp --sport 22 -j ACCEPT

Il existe d'autres services pour lesquels vous pouvez avoir à définir des règles.
Reportez-vous au Guide de référence de Red Hat Enterprise Linux pour obtenir
des informations complètes sur iptables et ses diverses options.
Ces règles autorisent l'accès entrant et sortant à un système individuel, comme
un seul PC connecté directement à Internet ou à un pare-feu ou une passerelle.
Toutefois, elles ne permettent pas aux nœuds situés derrière le pare-feu ou la
passerelle d'accéder à ces services. Pour autoriser l'accès LAN à ces services,
vous pouvez utiliser NAT avec les règles de filtrage iptables.

5. Règles FORWARD et NAT

MASTER 1 CLASSIQUE 2010-2011 Page 5


IPTABLES SOUS LINUX

La plupart des organisations possèdent un nombre limité d'adresses IP routables


de l'extérieur provenant de leur ISP. De ce fait, les administrateurs doivent
trouver d'autres moyens créatifs pour partager l'accès aux services Internet sans
donner d'adresses IP publiques limitées à chaque nœud sur le LAN. L'utilisation
d'adresses IP privées est la manière courante de permettre à tous les nœuds sur
un LAN d'accéder correctement aux services du réseau de façon interne et
externe. Les routeurs de bord (comme les pare-feu) peuvent recevoir des
transmissions entrantes provenant de l'internet et router des paquets vers le nœud
du LAN souhaité. En même temps, les pare-feu / passerelles peuvent également
router les requêtes sortantes provenant d'un nœud du LAN vers le service
Internet à distance. Cette retransmission de trafic réseau peut parfois devenir
dangereuse, surtout avec la disponibilité d'outils de piratage modernes qui
peuvent usurper les adresses IP internes et ainsi, faire en sorte que la machine de
l'agresseur distant agisse en tant que nœud sur votre LAN. Afin d'éviter cette
situation, iptables fournit des politiques de routage et de retransmission qui
peuvent être implémentées pour empêcher l'utilisation aberrante de ressources
réseau.
La politique FORWARD permet à un administrateur de contrôler où les paquets
peuvent être routés au sein d'un LAN. Par exemple, pour autoriser la
retransmission du LAN entier (en supposant que le pare-feu / la passerelle a une
adresse IP interne sur eth1), les règles suivantes peuvent être définies :
iptables -A FORWARD -i eth1 -j ACCEPT
iptables -A FORWARD -o eth1 -j ACCEPT

Cette règle permet aux systèmes situés derrière le pare-feu / la passerelle


d'accéder au réseau interne. La passerelle route des paquets depuis un nœud du
LAN jusqu'au nœud de destination, tous les paquets traversant son périphérique
eth1.
Remarque
Par défaut, la politique IPv4 des noyaux Red Hat Enterprise Linux
désactive la prise en charge de la redirection d'IP qui empêche les
ordinateurs exécutant Red Hat Enterprise Linux de fonctionner comme
des routeurs de bord dédiés. Pour activer la redirection d'IP, exécutez la
commande suivante :

sysctl -w net.ipv4.ip_forward=1

Si cette commande est exécutée via une invite du Shell, le paramètre est
alors oublié après un redémarrage. Vous pouvez définir la retransmission
de façon permanente en éditant le fichier /etc/sysctl.conf. Trouvez et
modifiez la ligne suivante, en remplaçant 0 par 1 :

MASTER 1 CLASSIQUE 2010-2011 Page 6


IPTABLES SOUS LINUX

net.ipv4.ip_forward = 0

Exécutez la commande suivante pour activer les changements dans le


fichier sysctl.conf :

sysctl -p /etc/sysctl.conf

Accepter les paquets retransmis via le périphérique d'IP interne du pare-feu


permet aux nœuds du LAN de communiquer entre eux. Cependant, ils ne
peuvent toujours pas communiquer vers l'extérieur (par exemple, vers l'internet).
Pour permettre aux nœuds du LAN avec des adresses IP privées de
communiquer avec les réseaux publics externes, configurez le pare-feu pour le
masquage d'IP, qui masque les requêtes provenant des nœuds du LAN avec
l'adresse IP du périphérique externe du pare-feu (dans ce cas, eth0) :
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

La règle utilise la table de correspondance de paquets de NAT (-t nat) et spécifie


la chaîne intégrée POSTROUTING pour NAT (-A POSTROUTING) sur le
périphérique réseau externe du pare-feu (-o eth0). POSTROUTING permet aux
paquets d'être modifiés lorsqu'ils quittent le périphérique externe du pare-feu. La
cible -j MASQUERADE est spécifiée pour masquer l'adresse IP privée d'un
nœud avec l'adresse IP externe du pare-feu / de la passerelle.
Si vous possédez un serveur sur votre réseau interne que vous souhaitez rendre
disponible de manière externe, vous pouvez utiliser la cible -j DNAT de la
chaîne PREROUTING dans NAT pour spécifier une adresse IP et un port de
destination où les paquets entrants demandant une connexion à votre service
interne peuvent être retransmis. Par exemple, si vous souhaitez retransmettre des
requêtes HTTP à votre système de Serveur HTTP Apache dédié sur 172.31.0.23,
exécutez la commande suivante :
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT \
--to 172.31.0.23:80

Cette règle spécifie que la table NAT utilise la chaîne intégrée PREROUTING
pour retransmettre les requêtes HTTP entrantes exclusivement à l'adresse IP de
destination listée de 172.31.0.23.
Remarque
Si vous avez une politique par défaut DROP dans votre chaîne FORWARD,
vous devez ajouter une règle autorisant la retransmission de requêtes HTTP
entrantes afin que le routage NAT de destination soit possible. Pour ce faire,
exécutez la commande suivante :

MASTER 1 CLASSIQUE 2010-2011 Page 7


IPTABLES SOUS LINUX

iptables -A FORWARD -i eth0 -p tcp --dport 80 -d 172.31.0.23 -j ACCEPT

Cette règle autorise la retransmission de requêtes HTTP entrantes depuis le


pare-feu vers la destination souhaitée sur le Serveur HTTP Apache derrière le
pare-feu.

6. DMZ et iptables

Des règles iptables peuvent être définies de façon à router le trafic vers
certains ordinateurs, comme un serveur HTTP ou FTP dédié, dans une zone
démilitarisée (DMZ) — un sous-réseau local spécial dédié à fournir des
services sur un porteur public comme l'internet. Par exemple, pour définir une
règle de façon à router toutes les requêtes HTTP entrantes vers un serveur
HTTP dédié à l'adresse IP 10.0.4.2 (en dehors de la plage 192.168.1.0/24 du
LAN), la traduction d'adresses réseau (NAT) fait appel à une table
PREROUTING afin de rediriger les paquets vers leur correcte destination :
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT \
--to-destination 10.0.4.2:80

À l'aide de cette commande, toutes les connexions HTTP vers le port 80


provenant de l'extérieur du LAN sont routées vers le serveur HTTP sur un
réseau séparé du reste du réseau interne. Cette forme de segmentation de
réseau peut s'avérer plus sécurisée que le fait d'autoriser des connexions HTTP
vers une machine sur le réseau. Si le serveur HTTP est configuré de façon à
accepter des connexions sécurisées, le port 443 doit alors être également
redirigé.

7. Virus et adresses IP usurpées


Des règles plus élaborées peuvent être créées qui contrôlent l'accès à des sous-
réseaux spécifiques ou même des nœuds spécifiques, au sein d'un LAN. Vous
pouvez également restreindre certains services douteux tels que les chevaux
de Troie, les vers et d'autres virus client / serveur, à contacter leur serveur. Par
exemple, il existe certains chevaux de Troie qui analysent les réseaux et
recherchent des services sur les ports 31337 à 31340 (appelés les ports élite en
argot de piratage). Vu qu'il n'existe pas de services légitimes qui
communiquent via ces ports non standards, le fait de les bloquer réduit les
chances qu'ont les nœuds infectés de votre réseau de communiquer
indépendamment avec leurs serveurs maîtres à distance.
iptables -A OUTPUT -o eth0 -p tcp --dport 31337 --sport 31337 -j DROP
iptables -A FORWARD -o eth0 -p tcp --dport 31337 --sport 31337 -j DROP

MASTER 1 CLASSIQUE 2010-2011 Page 8


IPTABLES SOUS LINUX

Vous pouvez également bloquer des connexions externes qui essaient


d'usurper des gammes d'adresses IP privées afin d'infiltrer votre LAN. Par
exemple, si votre LAN utilise la gamme 192.168.1.0/24, une règle peut définir
le périphérique réseau faisant face à l'internet (par exemple, eth0) de façon à
ne pas prendre en compte tout paquet destiné à ce périphérique ayant une
adresse dans votre gamme d'IP du LAN. Vu qu'il est recommandé de rejeter
les paquets retransmis en tant que politique par défaut, toute autre adresse IP
usurpée vers le périphérique vers l'extérieur (eth0) sera automatiquement
rejetée.
iptables -A FORWARD -s 192.168.1.0/24 -i eth0 -j DROP

Remarque
Il existe une différence entre les actions de cible REJECT et DROP.

8. Iptables et suivi de connexions

iptables inclut un module qui permet aux administrateurs d'inspecter et de


restreindre les connexions aux services disponibles sur un réseau interne à
l'aide d'une méthode appelée suivi de connexions. Cette dernière enregistre les
connexions dans une table, permettant aux administrateurs d'autoriser ou de
refuser l'accès selon les états de connexion suivants :
 NEW — Un paquet demandant une nouvelle connexion, comme
une requête HTTP.
 ESTABLISHED — Un paquet qui fait parti d'une connexion
existante.
 RELATED — Un paquet qui demande une nouvelle connexion
mais qui fait parti d'une connexion existante, comme des
connexions FTP passives où le port de connexion est 20, mais le
port de transfert peut être tout port inutilisé 1024 ou supérieur.
 INVALID — Un paquet qui ne fait parti d'aucune connexion dans
la table de suivi de connexions.
Vous pouvez utiliser la fonctionnalité à états du suivi de connexions d’iptables
avec tout protocole réseau, même si le protocole lui-même est sans état
(comme UDP). L'exemple suivant illustre une règle qui utilise le suivi de
connexions pour retransmettre uniquement les paquets qui sont associés à une
connexion établie :
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ALLOW

MASTER 1 CLASSIQUE 2010-2011 Page 9


IPTABLES SOUS LINUX

9. Quelques commandes de base


Rejeter tout les paquets entrants sur l’hôte :
# iptables –P INPUT DROP

Lister les règles de la chaîne CHAIN


# iptables –L CHAIN

Supprimer la chaîne utilisateur CHAIN


# iptables –X CHAIN

Refuser tout trafic TCP sauf ce qui provient de l'adresse IP 10.42.42.42 :


# iptables -A INPUT -p tcp --source ! 10.42.42.42 -j DENY

-p --protocol : Spécifier un protocole : tcp, udp, icmp, all (tous)


# iptables -A INPUT -p icmp -j DENY

-s --source : Spécifier une adresse source à matcher


# iptables -A INPUT -p tcp -s 192.168.42.42 -j ACCEPT
-d --destination : Spécifier une adresse destination
# iptables -A FORWARD -p tcp -d 10.1.0.1 -j ACCEPT

-i --in-interface : Spécifier une interface d'entrée


# iptables -A INPUT -p icmp -i eth0 -j DENY

-o --out-interface : Spécifier une interface de sortie


# iptables -A OUTPUT -p icmp -o eth0 -j DENY

-f --fragment : Paquet fragmenté


# iptables -A INPUT -p icmp -f -j DENY

--sport --source-port : Spécifier le port source ou une plage de ports, fonctionne


aussi
en udp, -m multiport permet de spécifier plusieurs ports à matcher.
# iptables -A INPUT -p tcp --sport 80 -j ACCEPT
# iptables -A INPUT -p udp --sport 80 -j DROP
# iptables -A OUTPUT -p tcp -m multiport --sport 3128, 21,1000 -j DROP
# iptables -A OUTPUT -p tcp --sport 1024:2042 -j ACCEPT

MASTER 1 CLASSIQUE 2010-2011 Page 10


IPTABLES SOUS LINUX

III. Conclusion
La mise en place d’un firewall (géré par Linux) sur la machine routeur nous a
donné l’occasion d’appréhender les notions de règles de filtrage et de
translations d’adresses (NAT). Ces dernières permettent d’autoriser (ou au
contraire de restreindre) la communication entre deux zones du réseau. De cette
manière, nous avons pu isoler le réseau interne du monde extérieur (Internet) et
arbitrer les accès et les échanges de données entre ces deux réseaux grâce à la
DMZ (zone démilitarisée). Cette configuration sécurise le réseau d’entreprise,
car en cas d’attaque provenant d’Internet, seule la DMZ peut être endommagée
et le réseau local reste, quant à lui, sain et sauf.
En un mot, iptables est un outil très puissant de firewall (pare-feu) permettant
d’assurer la sécurité au maximum en acceptant ou rejetant ou même supprimant
des paquets des provenances divers et variées selon la politique de sécurité mise
en place pour le contrôle du trafic du réseau.

MASTER 1 CLASSIQUE 2010-2011 Page 11

Vous aimerez peut-être aussi