TP Linux : Firewall. Conditions de réalisation : travail en binôme. Fonctionnement du parefeu Netfilter. I Qu est ce qu'un firewall?



Documents pareils
Sécurité GNU/Linux. Iptables : passerelle

Université Pierre Mendès France U.F.R. Sciences de l Homme et de la Société Master IC²A. TP réseau firewall

FILTRAGE de PAQUETS NetFilter

Sécurité des réseaux Firewalls

Formation Iptables : Correction TP

pare - feu généralités et iptables

Licence 3 Systèmes et Réseaux II. Chapitre V : Filtrage

Netfilter & Iptables. Théorie Firewall. Autoriser le trafic entrant d'une connexion déjà établie. Permettre le trafic entrant sur un port spécifique

TP4 : Firewall IPTABLES

Alexis Lechervy Université de Caen. M1 Informatique. Réseaux. Filtrage. Bureau S3-203

Administration Réseaux

Administration réseau Firewall

Exemples de commandes avec iptables.

Linux Firewalling - IPTABLES

Réseaux. Moyens de sécurisation. Plan. Evolutions topologiques des réseaux locaux

EPREUVE PRATIQUE DES TECHNIQUES INFORMATIQUES ACTIVITE N 1. Thème de l activité : Configuration d un firewall

TP 3 Réseaux : Subnetting IP et Firewall

MISE EN PLACE DU FIREWALL SHOREWALL

Sécurité et Firewall

Iptables. Table of Contents

2. MAQUETTAGE DES SOLUTIONS CONSTRUCTIVES. 2.2 Architecture fonctionnelle d un système communicant.

Le filtrage de niveau IP

avec Netfilter et GNU/Linux

TP SECU NAT ARS IRT ( CORRECTION )

Fonctionnement de Iptables. Exercices sécurité. Exercice 1

Proxy et reverse proxy. Serveurs mandataires et relais inverses

ATELIER NETFILTER : LE FIREWALL LINUX EN ACTION

Ingénieurs 2000 Informatique et Réseaux 3ème année. Les Firewalls. Masquelier Mottier Pronzato 1/23 Nouvelles Technologies Réseaux

acpro SEN TR firewall IPTABLES

Figure 1a. Réseau intranet avec pare feu et NAT.

SQUID Configuration et administration d un proxy

TAGREROUT Seyf Allah TMRIM

Firewall IDS Architecture. Assurer le contrôle des connexions au. Sécurité 1

Conférence Starinux Introduction à IPTABLES

Introduction. Conclusion. Sommaire. 1. Installation de votre routeur Coyote Linux Configuration requise et installation du matériel.

Firewall. Souvent les routeurs incluent une fonction firewall qui permet une première sécurité pour le réseau.

Sécuriser son réseau. Sécuriser son réseau Philippe Weill (IPSL/LATMOS) Frédéric Bongat (SSI/GOUV/FR)

Procédure d utilisation et de paramétrage (filtrage) avec IPFIRE

FACILITER LES COMMUNICATIONS. Le gestionnaire de réseau VPN global de Saima Sistemas

laposte.net) Ministère de l'éducation nationale Atelier sécurité Rabat RALL 2007

Devoir Surveillé de Sécurité des Réseaux

II/ Le modèle OSI II.1/ Présentation du modèle OSI(Open Systems Interconnection)

Filtrage IP MacOS X, Windows NT/2000/XP et Unix

Présentation du modèle OSI(Open Systems Interconnection)

TER Réseau : Routeur Linux 2 Responsable : Anthony Busson

LAB : Schéma. Compagnie C / /24 NETASQ

TCP/IP, NAT/PAT et Firewall

But de cette présentation. Proxy filtrant avec Squid et SquidGuard. Serveur proxy. Serveur proxy. Hainaut P

Master 1 ère année. UE Réseaux Avancés I. Corrections décembre Durée : 2h Documents autorisés

Serveur FTP. 20 décembre. Windows Server 2008R2

Les firewalls libres : netfilter, IP Filter et Packet Filter

VoIP et "NAT" VoIP et "NAT" 1/ La Traduction d'adresse réseau. 1/ La traduction d'adresse réseau. 1/ La traduction d'adresse réseau

Cours de sécurité. Pare-feux ( Firewalls ) Gérard Florin -CNAM - - Laboratoire CEDRIC -

TR2 : Technologies de l'internet. Chapitre VI. NAT statique et dynamique Overloading (PAT) Overlapping, port Forwarding Serveur Proxy, DMZ

Date : NOM Prénom : TP n /5 ET ADMINISTRATION D'UN

LINUX - Sécurité. Déroulé de l'action. - 3 jours - Contenu de formation

Réseau : Interconnexion de réseaux, routage et application de règles de filtrage.

Architectures sécurisées

Rappels réseaux TCP/IP

LINUX REDHAT, SERVICES RÉSEAUX/INTERNET

CONFIGURATION FIREWALL

Les systèmes pare-feu (firewall)

THEGREENBOW FIREWALL DISTRIBUE TGB::BOB! Pro. Spécifications techniques

Les possibilités de paramétrage réseau des logiciels de virtualisation sont les suivantes quant à la connexion réseau :

TP c Fonctions des listes de contrôle d'accès multiples (TP avancé)

Live box et Nas Synology

Intérêt du NAT (Network Address Translation) Administration Réseau Niveau routage. Exemple d Intranet. Principe NAT

IP & Co. 1. Service DHCP. L'objectif de ce TP est de voir l'ensemble des services élémentaires mis en oeuvre dans les réseaux IP.

GUIDE D INSTALLATION DE FIREWALL OPEN SOURCE

TP 1 : LES COMMANDES RESEAUX Matière: RESEAUX LOCAUX

Linux sécurité des réseaux

MAUREY SIMON PICARD FABIEN LP SARI

Packet Tracer : configuration des listes de contrôle d'accès étendues, scénario 1

Travaux pratiques : dépannage de la configuration et du placement des listes de contrôle d'accès Topologie

DHCP et NAT. Cyril Rabat Master 2 ASR - Info Architecture des réseaux d entreprise

TP2 - Conguration réseau et commandes utiles. 1 Généralités. 2 Conguration de la machine. 2.1 Commande hostname

FreeNAS Shere. Par THOREZ Nicolas

Live box et Nas Synology

GENERALITES. COURS TCP/IP Niveau 1

ACTION PROFESSIONNELLE N 4. Fabien SALAMONE BTS INFORMATIQUE DE GESTION. Option Administrateur de Réseaux. Session Sécurité du réseau

Configuration Routeur DSL pour Xbox LIVE ou PlayStation-Network

Nmap (Network Mapper) Outil d exploration réseau et scanneur de ports/sécurité

Parallels Plesk Panel. Module Pare-feu de Parallels Plesk Panel 10 pour Linux/Unix. Guide de l'administrateur

1/ Introduction. 2/ Schéma du réseau

Master d'informatique 1ère année. Réseaux et protocoles. Architecture : les bases

Installer une caméra de surveillance

Sécurité GNU/Linux. FTP sécurisé

Environnements informatiques

NAS 224 Accès distant - Configuration manuelle

Installation d'un serveur DHCP sous Windows 2000 Serveur

ETI/Domo. Français. ETI-Domo Config FR

Oléane VPN : Les nouvelles fonctions de gestion de réseaux. Orange Business Services

Ubuntu Linux Création, configuration et gestion d'un réseau local d'entreprise (3ième édition)

NetCrunch 6. Superviser

Assistance à distance sous Windows

Mise en place d'un Réseau Privé Virtuel

CONFIGURATION DE BASE. 6, Rue de l'industrie BP130 SOULTZ GUEBWILLER Cedex. Fax.: Tel.:

Transcription:

TP Linux : Firewall Objectif : Réaliser un firewall simple par filtrage de paquet avec iptables sous Linux Matériel : 1 serveur Linux S configuré en routeur entre le réseau du lycée qui représentera le réseau public et un réseau de classe C qui représentera le réseau privé, un client C1 sur le réseau de classe C relié par un cable croisé au routeur linux. Un client C2 connecté sur le réseau du lycée, qui représentera un accès extérieur Conditions de réalisation : travail en binôme. Avant de commencer le TP, voici quelques éléments pour comprendre le fonctionnement du parefeu Netfilter, suivi d'un tutoriel (page 5) sur la commande Iptables qui permet de configurer le parefeu, illustré d'un exemple de configuration (page Fonctionnement du parefeu Netfilter I Qu est ce qu'un firewall? Un firewall ou pare feu est un dispositif permettant de filtrer et masquer le trafic TCP/IP entre un réseau public (internet par exemple) et un réseau privé (le réseau local). Il protège le réseau contre les attaques et infiltrations venant d éventuels pirates. 1. Fonctions de masquage et de translation d'adresses Ces techniques sont utilisées principalement dans deux cas : connecter plus de stations qu'il n'y a d'adresses IP disponibles masquer les adresses réelles des stations derrière le routeur a) La translation d'adresses ( NAT : Network Address Translation) Le routeur, depuis le réseau externe, répond à plusieurs adresses IP publiques qui sont traduites vers des adresses du réseau interne (en général des adresses privées). Cette translation peut être statique (serveurs) ou dynamique (postes de travail). Le routeur modifie chaque paquet IP pour remplacer l'adresse interne par l'adresse externe en sortie, et inversement en entrée. Exemple: translation d'adresses entre un réseau de classe A privé 10.0.0.0/8 ( 2 24 adresses potentielles ) sur un réseau de classe C officiel 195.195.195/24 b) Le masquage d'adresses IP ( IP masquerade ) ou translation de port (PAT): L IP masquerade, consiste à masquer les @IP du réseau interne et à n'utiliser que l'adresse du routeur sur le réseau d'interconnexion. Cette technique est intéressante pour connecter tout un réseau local sur l'accès d'un prestataire qui ne fournit qu'une seule adresse IP (souvent dynamique). Le routeur tient, pour chaque connexion TCP/UDP initiée depuis le réseau interne, la correspondance entre les triplets (@IP interne, TCP/UDP, port utilisateur) et (@IP de sortie, TCP/UDP, port translaté). Dans chaque paquet sont modifiés par le routeur, l'adresse IP et le port utilisateur de l'émetteur. Exemple: connexion à internet d'un réseau de classe C privé 192.168.100/24 en utilisant l'adresse d'interconnexion vers le réseau externe. Dans ce type de configuration, seul le routeur est visible de l'extérieur. C'est la solution pour partager un accès unique vers un prestataire Internet. 2. Les fonctions de filtrage : Pour des raisons de sécurité il est souvent utile, voire indispensable d'effectuer un filtrage au niveau des paquets IP qui transitent à travers un routeur. Exemple: effectuer les filtrages pour autoriser en sortie tout le trafic Web et ftp et interdire tout le reste Le filtrage s'effectue en analysant les champs (source/destinataire) des paquets qui transitent à travers le routeur. On peut ainsi filtrer sur les @IP, le protocole, les ports, etc. En général les règles de filtrage sont analysées de manière séquentielle, dès qu'une règle correspond au paquet analysé, elle est appliquée. II Filtrage et masquage avec netfilter sous Linux Linux peut intègrer de base (selon les options d'installation), les fonctions de routage, de filtrage et de masquage. Il s'agit du duo netfilter/iptables dans les noyaux supérieurs ou égaux à 2.4.x TP : filtrage de paquets avec iptables Page 1 /10

Netfilter est un sous système du noyau Linux qui permet d'inspecter les paquets IP et de les filtrer selon certaines règles. Il utilise le mécanisme de listes d'accès qui sont regroupées dans des "chaînes", elles mêmes contenues dans des tables. Chaque paquet IP qui arrive, traverse, sort de Linux est analysé et traité (accepté, rejeté, refusé, modifié, redirigé) en fonction des règles qui lui sont applicables. Les règles sont évaluées dans l'ordre ou elle ont été écrites. Dès qu'un règle est applicable elle est appliquée et le paquet sort de la chaîne. Netfilter permet de faire de la translation d'adresses et du masquage (translation de ports). iptables est l'outil (la commande du sytème) qui permet d'écrire les règles. Trois tables sont utilisées : filter, table par défaut, qui contient les chaînes de règles de filtrage nat, qui contient les chaînes de règles de translation d'adresse/port mangle, qui contient les chaînes de règles de modification de paquets (que nous n'étudierons pas ici) 1. Le filtrage : table filter Dans la table filter, trois chaînes sont prédéfinies : FORWARD qui contient les règles à appliquer aux paquets qui traversent le parefeu (paquets routés) INPUT qui contient les règles à appliquer aux paquets entrant sur le parefeu destinés aux processus locaux OUTPUT qui contient les règles à appliquer aux paquets émis par les processus locaux, sortant du routeur. IN routage FORWARD OUT INPUT Processus local OUTPUT Le routeur est une «boîte noire». Chaque paquet entrant est «pris en charge», routé par le noyau. Les paquets qui ne font que traverser le routeur Linux, sont concernés par la chaîne FORWARD. Ceux qui sont destinés aux processus internes, c'est à dire qui entrent, sont concernés pas la chaîne INPUT, ceux émis par les processus internes, c'est à dire qui sortent, par la chaîne OUTPUT. L outil iptables sous Linux permet de contrôler le trafic TCP/IP qui traverse le routeur. Il assure le filtrage des paquets TCP/IP en fonction des adresses IP sources et destination, du protocole de transport (TCP/UDP/ICMP) et du protocole applicatif (ports sources et destination). C'est un firewall «stateful» c'est à dire qu'il permet de filtrer les paquets en fonction de l'état de la connexion TCP associée. Par exemple, on peut décider d'autoriser l'entrée des paquets correspondant à une connexion déjà établie en refusant tous les paquets correspondant à l'établissement d'un nouvelle connexion. Pour cela, le firewall garde en mémoire l'état de chaque connexion TCP qui le traverse. 2. La translation d'adresse : table NAT La translation d'adresse a été entièrement revue dans les noyaux 2.4. Les paquets IP sont examinés, dans la table NAT, dans les chaînes PREROUTING, POSTROUTING et OUTPUT. Dans les chaînes PREROUTING et OUTPUT on ne peut que modifier l'adresse de destination du paquet (cible DNAT). TP : filtrage de paquets avec iptables Page 2 /10

Dans la chaîne POSTROUTING on ne peut que modifier l'adresse source du paquet (cible SNAT). C'est cette chaîne qui servira à faire le masquage IP (translation de port) Liens page officielle : http://www.netfilter.org/ Léa linux :http://lea linux.org/reseau/iptables.php3 http://www.hsc.fr/ressources/presentations/netfilter/netfilter.htm TP : filtrage de paquets avec iptables Page 3 /10

Iptables : tutoriel (extrait simplifié) Ajouter une nouvelle règle à une chaîne : iptables -A Pour l'exemple, nous "droperons" tous les paquets icmp en provenance de 127.0.0.1: iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP Supprimer les règles d'une chaîne iptables -F [nom_de_la_chaine] [-t nom_de_la table] Attention! Si vous ne spécifiez aucun nom de table, seule la table filter sera vidée suppression de toutes les règles de la table nat: iptables -F -t nat Traiter le paquet avec -jump, ou -j Spécifie ce que vous désirez faire du paquet. La cible peut être une sous chaîne que vous aurez vous même créé ou alors une valeur spéciale. Celle ci peut prendre la forme de ACCEPT, DROP,. ACCEPT autorise le paquet à continuer son chemin, DROP supprime la paquet. REJECT refuse le paquet mais en avertissant le demandeur que sa demande de connexion lui a été refusée en lui envoyant un message ICMP port unreachable. On laisse passer tous les paquets sortants: iptables -A OUTPUT -j ACCEPT Spécifier une politique par défaut pour les chaines de la table filter C'est l'action qui sera appliquée si aucune règle ne s'applique au paquet. Par défaut un paquet entrant est refusé: iptables -P INPUT DROP Spécifier une adresse source ou destination Refuser tout ce qui provient de l'hôte 195.52.4.1: iptables -A INPUT -s 195.52.4.1 -j DROP Laisser passer tout ce qui est destiné au réseau 192.168.0.0: iptables -A OUTPUT -d 192.168.0.0/16 -j ACCEPT Mentionner un protocole avec -p Refuser les entrées des paquets du protocole ICMP (ping entre autres): iptables -A INPUT -p icmp -j DROP Mentionner les ports avec --sport, --source-port, --dport, --destination-port Laisser sortir les requêtes Web : iptables -A OUTPUT -j ACCEPT -p tcp --dport 80 Accepter les réponses web: iptables -A INPUT -j ACCEPT -p tcp --sport 80 Spécifier une interface avec -i, --in-interface ou -o, --out-interface iptables -A INPUT -i eth0 -o ppp0 iptables -A INPUT -i lo Spécifiez l'état de la connexion à laquelle appartient le paquet. Netfilter est un firewall «stateful» ce qui veut dire qu'il peut accepter ou refuser les paquet en fonction de 'état en cours des connexions. Netfilter garde en dans une table d'états, les connexions en cours. Cela permet d'associer que tel client (adresse IP cliente) vers tel serveur (adresse IP serveur) est en train de faire telle chose (connexion du port source x vers le port destination y). On pourra donc décider de spécifier les paquets correspondant à un connexion établie (ESTABLISHED), un nouvelle connexion (NEW) ou une nouvelle connexion associée à un connexion déjà établie (RELATED). C'est le cas par exemple des connexion de données FTP qui sont associée à une connexion de type commande pré établie, ou des messages d'erreur icmp correspondant à un requête émise par le routeur. Accepter les paquets correspondant à des connexion établies ou associées: TP : filtrage de paquets avec iptables Page 4 /10

iptables A INPUT m state state RELATED,ESTABLISHED j ACCEPT TP : filtrage de paquets avec iptables Page 5 /10

Exemple d'un script de configuration de Netfilter : Cas d'une connexion adsl ou cable partagée par un réseau local. Le routeur filtrant possède une interface externe (ppp0) et une interface interne (eth0) : #activation du routage echo 1 > /proc/sys/net/ipv4/ip_forward #chargement des modules nécessaires /sbin/modprobe iptable_nat /sbin/modprobe ip_tables /sbin/modprobe ip_conntrack /sbin/modprobe iptable_filter /sbin/modprobe iptable_nat /sbin/modprobe ipt_state /sbin/modprobe ipt_masquerade PATH=$PATH:/usr/local/sbin #effacement des règles des tables iptables -t nat -F iptables -F #potitiques par défaut iptables -P FORWARD DROP iptables -P INPUT DROP iptables -P OUTPUT ACCEPT #on accepte l'entrée de paquets sur l'interface localhost (indispensable sinon ca bloque) iptables -A INPUT -i lo -j ACCEPT #on accepte toute entrée sur eth0 iptables -A INPUT -i eth0 -j ACCEPT #on n'accepte que l'entrée de paquet correspondant à des connexions établies ou des #connexions relatives à des connexions établies (connexion de données ftp par exemple ou messages d'erreur icmp) iptables -A INPUT -i ppp0 -m state --state RELATED,ESTABLISHED -j ACCEPT #on route tous les paquets venant de eth0 (interface interne) iptables -A FORWARD -i eth0 -j ACCEPT #pour l' autre interface (externe) on ne route que les paquets correspondant à des #connexions établies ou des #connexions relatives à des connexions établies iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT #on active l'ip masquerade pour les adresses du réseau 10.0.0.0 sortant sur l'interface #externe iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o ppp0 -j MASQUERADE TP : filtrage de paquets avec iptables Page 6 /10

Travail à faire : Avant de commencer : Remarque sur l'accès internet du lycée. L'accès se fait par un firewall sous linux. Les adresses de la classe 172.20.200.0/21 sont masquées et peuvent sortir sur internet par translation de port. Par conséquent les adresses de la forme 192.168.N.X (réseau privé du TP) ne sortiront pas sur internet à moins d'être elles même masquée par votre routeur filtrant. Configurer le routeur filtrant (interface 1 sur le réseau du lycée (172.20.207.0/25), interface 2 connectée directement vers le client C1 (192.168.N.0/24), passerelle par défaut vers 172.20.207.126 Configurer le client C1 (adresse IP sur le réseau 192.168.N.0, passerelle par défaut vers le routeur filtrant) Configurer le client C2 (adresse IP sur le réseau du lycée 172.20.205.0/21, passerelle par défaut vers le routeur filtrant) Configurer la résolution de nom DNS vers 172.20.200.2 (pour le routeur et les clients) Vérifiez le fonctionnement du réseau : 1. ping entre les différentes machines. 2. effectuez un telnet puis ssh vers le serveur depuis le client C2. 3. effectuez un accès ftp puis Web depuis C1 vers lcs.lyc curie.ac aix marseille.fr/ 4. effectuez un accès ftp puis web vers internet depuis S puis C2. 5. Vérifiez que C1 ne peut sortir sur internet (pas de routage retour). Installez iptraf (moniteur réseau sous linux) sur le routeur filtrant. Lancez le moniteur en tapant «iptraf» dans une console et choisissez «traffic monitor» puis «all interfaces» (analyse du trafic réseau sur toutes les interfaces réseau). 1. Création d'un fichier de script. Ce fichier sera créé par vi et appelé /etc/firewall.sh. Il contiendra l'ensemble des règles de notre firewall. Pour l'exécuter il faudra d'abord le rendre exécutable par la commande «chmod 700 /etc/firewall.sh» puis de taper /etc/firewall.sh, ce qui lancera l'interprétation des commandes du script. Pour visualiser les règles créées par l'exécution du script: iptables L (affiche les règles de la table filter) iptables F t nat (affiche les règles de la table nat) Commencer par spécifier le chargement des modules nécessaires (voir l'exemple page précédente) en ajoutant les lignes nécessaires dans /etc/firewall.sh 2. Initialisation des chaines Il faut d'abord effacer toutes les règles des tables nat et filter. iptables -F -t filter iptables -F -t nat #on accepte l'entrée de paquets sur l'interface localhost (indispensable sinon ca bloque) iptables A INPUT i lo j ACCEPT 3. Le «camouflage IP» (IP masquerade) Ceci va permettre au client C1 de sortir sur le réseau public 172.20.200.0/21 en étant masqué iptables t nat A POSTROUTING s <adrip ou réseau à masquer> o <interface ext.> j MASQUERADE Lancer une requête Web sur internet à partir de C1 et vérifier les connexion établie avec iptraf sur le serveur. Combien de connexions sont établies? Sur quelles interfaces? 4. Filtrage de paquet TP : filtrage de paquets avec iptables Page 7 /10

Pour qu'un firewall soit efficace, il faut le protéger contre certains problèmes de sécurité. C'est ce que nous allons faire maintenant. Pour cela, nous allons : n'autoriser que les messages ICMP réponses sur l'interface externe, correspondant à une erreur sur une requête sortante. On ne répondra pas aux ping externe par exemple. Pour l'interface interne ou accepte tous les paquets ICMP. n'autoriser que l'utilisation d'un DNS sûr (en l'occurrence 17.20.200.2). n autoriser que les connexions entrantes tcp au service ssh venant de l'extérieur, interdire toute autre connexion tcp entrante autoriser le routage des seules connexions HTTP, FTP, POP, SMTP vers l extérieur. Chaque partie devra être testée avant et après filtrage en passant par le client C2 pour effectuer une connexion venant de l extérieur et le client C1 pour une connexion venant du réseau local. politiques par défaut : Les 3 chaînes intégrées de la table filter sont initialisée par défaut avec la politique ACCEPT. Ce qui veut dire qu'en l'absence de règles qui s'appliquent, un paquet est accepté. Nous allons modifier ceci pour que par défaut un paquet soit refusé en entrée (INPUT), et en routage (FORWARD) et en sortie. Insérez les lignes suivantes en début de fichier après les chargement de modules (lignes modprobe). iptables -P FORWARD DROP iptables -P INPUT DROP iptables P OUTPUT DROP Trafic ICMP En sortie sur on utilise tout le trafic ICMP iptables -A OUPUT -p ICMP j ACCEPT En entrée sur l'interface interne (réseau local) on autorise tout le trafic ICMP. iptables -A INPUT -i <interface interne> -p ICMP j ACCEPT Pour l'entrée sur l'interface externe, on utilise la propriété «stateful» de netfilter, c'est à dire un module chargé au démarrage (ipt_state) qui permet de spécifier le caractère du paquet par rapport aux connexions en cours. Dans le cas d'icmp, on n'acceptera en entrée sur l'interface externe que les messages réponses aux pings émis (echo reply) et les messages d'erreur correspondant à un paquet envoyé. Ceci ce caractérise par l'état RELATED ou ESTABLISHED. iptables A INPUT p icmp i <interface externe> mstate state RELATED,ESTABLISHED j ACCEPT tester grâce à la commande ping vers les serveur S à partir du client C2 (qui représente le réseau public). Cette commande ne doit pas obtenir de réponse. Par contre une commande ping émise depuis le réseau local (C1) vers le serveur doit obtenir une réponse. Nous allons maintenant autoriser le routage des commandes ICMP pour que le réseau local puisse envoyer des requêtes ICMP vers le réseau public externe et recevoir des réponses : Pour le routage intérieur vers extérieur, on autorise tout le trafic ICMP : iptables A FORWARD p icmp i <interface interne> o <interface externe> j ACCEPT Pour le routage extérieur vers intérieur on n'autorise que les réponses: iptables A FORWARD p icmp i <interface externe> o <interface interne> mstate state RELATED,ESTABLISHED j ACCEPT Tester en envoyant une commande ping du réseau local (C1) vers l'extérieur (C2). Vérifier que C2 ne peut pas «pinger» C1. trafic DNS on laisse passer le trafic DNS du serveur S vers 172.20.200.2 en UDP : iptables A OUTPUT p udp d 172.20.200.2 i <interface externe> dport 53 j ACCEPT iptables A INPUT p udp s 172.20.200.2 i <interface externe> sport 53 j ACCEPT On autorise le routage du trafic DNS du réseau local vers 172.20.200.2: iptables A FORWARD p udp d 172.20.200.2 i <interface interne> o <interface externe> dport 53 j ACCEPT iptables A FORWARD p udp s 172.20.200.2 i <interface externe> o <interface interne> sport 53 j ACCEPT Faire la même chose pour tcp (pour le cas des messages dépassant les 512 octets) TP : filtrage de paquets avec iptables Page 8 /10

Tester grâce à la commande nslookup que le trafic DNS est autorisé vers 172.20.200.2 et interdit vers un autre serveur DNS nslookup 172.20.200.2 www.google.com interroge le serveur dns 172.20.200.2 pour rechercher l'ip du nom www.google.com Autoriser ssh en provenance du réseau public vers la machine locale pour permettre l'administration distante Autoriser les connexions ssh venant de toutes les interfaces : iptables A INPUT p tcp dport 22 j ACCEPT Autoriser le trafic ssh sortant correspondant à des connexions établies : iptables A OUTPUT p tcp sport 22 mstate state ESTABLISHED j ACCEPT Tester le ssh vers le routeur à partir du client C2 (réseau public) (utiliser le client «putty» à télécharger sur le net, après s'être assuré que la service sshd est lancé sur le serveur S. Autoriser le routage des connexions smtp, http et pop vers l'extérieur. Exemple pour http : iptables A FORWARD i <interface interne> o <interface externe> p tcp dport 80 j ACCEPT iptables A FORWARD i <interface externe> o <interface interne> p tcp sport 80 mstate state ESTABLISHED j ACCEPT Tester avec le navigateur, puis faire la même chose pour smtp et pop (ports tcp 25 et 110), et tester avec un client de messagerie comme outlook express. Autoriser le trafic ftp. Pour les tests installez un client ftp sous windows comme wsftp lite, bulletproof ftp,... Le protocole ftp fonctionne de deux manières différentes (port et passive). Dans les deux cas le client fait une première connexion vers le serveur sur le port 21, puis : En méthode port, le client envoi au serveur une commande PORT contenant un numéro de port sur lequel le serveur va ouvrir une connexion tcp à partir du port source 20. Cette connexion est «RELATED» puisque qu'elle corespond à une connexion établie sur le port 21. En méthode passive, le client envoie une commande PASV dans laquelle il sollicite un numéro de port sur lequel il pourra ouvrir une connexion. Après la réponse du serveur c est donc dans ce cas le client qui initie la connexion tcp. Cette connexion est «RELATED» puisqu'elle correspond à une connexion ftp déjà établie sur le port 21. La plupart des navigateurs travaillent en mode passif. La connexion en mode passif se fera sur un port non réservé (1024 à 65535). Le ftp sous dos travaille en mode PORT (actif). Pour la connexion de contrôle sur le port 21 : iptables A FORWARD i <interface interne> o <interface externe> p tcp dport 21 j ACCEPT iptables A FORWARD i <interface externe> o <interface interne> p tcp sport 21 mstate state ESTABLISHED j ACCEPT pour le mode passif : iptables A FORWARD i <interface interne> o <interface externe> p tcp sport 1024:65535 dport 1024:65535 mstate state RELATED,ESTABLISHED j ACCEPT iptables A FORWARD i <interface externe> o <interface interne> p tcp sport 1024:65535 dport 1024:65535 mstate state RELATED,ESTABLISHED j ACCEPT Pour le mode actif : iptables -A FORWARD -i <interface externe> -o <interface interne> -p tcp --sport 20 --dport 1024:65535 -mstate -state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -i <interface interne> -o <interface externe> -p tcp --dport 20 --sport 1024:65535 -mstate -state RELATED,ESTABLISHED-j ACCEPT Ecrire les commandes et tester avec une navigateur puis avec un client ftp (bulletproof à installer à partir du serveur curie2) Sauvegarde et restauration des règles : Pour sauvegarder vos règles une fois que la configuration est établie et testée (vous pouvez choisir un autre nom de fichier pour sauvegarder plusieurs configurations différentes): iptables save > /etc/ipchains.rules Pour restaurer les règles sauvegardées : iptables restore < /etc/ipchains.rules TP : filtrage de paquets avec iptables Page 9 /10

Pour automatiser le filtrage lors du démarrage du routeur, il faut lancer le script de création des règles /etc/firewall.sh au démarrage du système. Pour cela, éditez le fichier /etc/rc.local et ajouter la ligne suivante à la fin : /etc/firewall.sh TP : filtrage de paquets avec iptables Page 10 /10