25
Routage / Filtrage / Sécurité Présentation L’objectif est de configurer un Pentium sous Linux, muni de trois cartes réseau 10/100 Base T, afin d'étudier les fonctions de filtrage que fournit le noyau 2.4.x. Éléments de cours et graphiques (MG) Éléments d'application (AM) Plateforme utilisée (cf schéma donné pour le TP sur le routage) La plateforme matérielle utilisée par chaque groupe de TP sera issue de celle utilisée lors des TD/TP précédement réalisés sur le routage. Vous avez à la fin du document la maquette complète de la salle. Vous allez utiliser 3 réseaux de classes d'adresses différentes. Le routeur sera une machine GNU/Linux équipée de 3 interfaces réseaux. Pour visualiser les trames qui sont échangées sur le réseau, vous utiliserez un outil d’analyse de trames, iptraf Linux. Enfin pour filtrer le trafic et faire du masquage d’adresse et du filtrage, vous utiliserez la fonctionnalité netfilter du noyau linux et les commandes iptables associées. routage/filtrage/sécurité 1

routage filtrage securite

  • Upload
    niko

  • View
    1.361

  • Download
    1

Embed Size (px)

DESCRIPTION

un guide sur la securite des reseaux

Citation preview

Page 1: routage filtrage securite

Routage / Filtrage / Sécurité

Présentation

L’objectif est de configurer un Pentium sous Linux, muni de trois cartes réseau 10/100 Base T, afind'étudier les fonctions de filtrage que fournit le noyau 2.4.x.

Éléments de cours et graphiques (MG)Éléments d'application (AM)

Plateforme utilisée (cf schéma donné pour le TP sur le routage)

La plateforme matérielle utilisée par chaque groupe de TP sera issue de celle utilisée lors desTD/TP précédement réalisés sur le routage. Vous avez à la fin du document la maquette complètede la salle.

Vous allez utiliser 3 réseauxde classesd'adressesdifférentes.Le routeur sera une machineGNU/Linux équipée de 3 interfaces réseaux.

Pour visualiserles tramesqui sont échangéessur le réseau,vous utiliserezun outil d’analysedetrames, iptraf Linux.

Enfin pour filtrer le trafic et faire du masquaged’adresseet du filtrage, vous utiliserez lafonctionnalité netfilter du noyau linux et les commandes iptables associées.

routage/filtrage/sécurité 1

Page 2: routage filtrage securite

Fiche de cours - Routage/Sécurité

Rappels sur le routage en IPv4

Les paquets IP qui sont véhiculés sur le réseau contiennent dans l'en-tête, entre autres informations,les @IP-source et @IP-destinataire des stations émettrices et destinatrices.

Un routeur IP est un équipementqui permetd'interconnecterdeux (ou plus) réseaux(ou sous-réseaux)IP. Il possèdeau moins deux interfacesréseauxraccordéeschacuneaux réseauxIP àinterconnecter. Le principal rôle du routeurest de rediriger les paquetsIP qu'il reçoit sur l'une de sesinterfaces,vers l'interface de sortie, en fonction de l'adresse du destinataire (@IP-destinataire). Pourcelail disposed'unetablederoutageinterne(tout commeles stationsdesutilisateursqui ontdans leur table de routage la "passerelle par défaut").

Au dessusde la coucheIP plusieursprotocolessont utilisés ( TCP, UDP, ... ) pour véhiculerlesdonnées entre les applications (http, telnet, ftp, ...). ICMP est un sous-protocolede IP (niveau3)utilisé notammentpour tester l'accessibilitéd'unemachine (ping) ou la route utilisée pour atteindre une machine (traceroute). Un champde l'entêteIP permetde déterminerle type de protocoleutilisé au niveau Transport(niveau 4).

Rappels sur les connexions (session) TCP et UDP :

Enfin au niveau supérieur les applicatifs utilisent des ports (TCP et/ou UDP). Coté serveur les applicatifs serveurs utilisent des ports prédéfinis. Côté client, le logiciel clientutilise un port utilisateur disponible.

routage/filtrage/sécurité 2

Page 3: routage filtrage securite

Une connexion (session) entre un processus client et un processus serveur est matérialisée par lecouple de triplets : [ (@IP-source, TCP/UDP, port source) , (@IP-dest., TCP/UDP, port dest.) ]

Établissement et Fermeture d'une session TCPCette partie résume ce qui a été fait dans les TPs sur la métrologie.

Établissement d'une session TCP

Fermeture d'une session TCP

routage/filtrage/sécurité 3

Page 4: routage filtrage securite

Introduction à l'analyse de traffic

Rappelons qu’un datagramme IP (contenu dans des trames Ethernet sur le réseau local) contient lesdeux triplets suivants :

( @IP source, TCP ou UDP, port source ) et (@IP destinataire, TCP ou UDP, portdestinataire)

L’analyse de trafic consiste à étudier les trames qui sont reçues par la (les) cartes réseau du poste enfonction d’un certain nombre de critères :

� Adresses Ethernet émetteur/destinataire� Type de protocole ( IP, ARP, ICMP, TCP, UDP, ….)� En fonction du port source/destinataire

Certainsoutils d’analysepermettentd’étudier toutes les tramesqui transitentsur le réseauenpassant la carte réseau en mode promiscious.Nousutiliseronsiptraf pourvisualiserles tramesqui circulentsur les interfaceseth0,eth1et eth2des routeurs sous Linux :

Utilisation de iptraf ( extrait du help)

Command syntax: iptraf [ { -i | -g | -d iface | -s iface | -e | -f } ]

Issuing the iptraf command without command-line options brings the programup in interactive mode, with the various facilities accessed through a menu.

These options can also be supplied to the command:

-i - immediately start the IP traffic monitor-g - immediately start the general interface statistics-d iface - allows you to immediately start the detailed

on the indicated interface (iface)-s iface - allows you to immediately monitor TCP and UDP

traffic on the specified interface (iface)-e - start the Ethernet station monitor-f - IPTraf normally will not allow multiple copies of

itself running simultaneously. -f overrides. Use with great caution. May be used after an abnormal termination.

IPTraf 1.2.0 Copyright (c) Gerard Paul Java 1997, 1998This software may be distributed and/or modified under the terms of theGNU General Public License, Version 2 or later as published by the FreeSoftware Foundation.

routage/filtrage/sécurité 4

10.0.0.x(A)

Eth2

Routeur linux :Routeur.couleur.org

172.16.y.z (B) Eth1 Eth01Réseau externe

Anayse du trafic

Page 5: routage filtrage securite

Exemple de visualisation ()

Iptraf permet, entre autres, de visualiser les connexions TCP établies. Dans l'exemple ci-dessousnous voyons qu'il y a une connexion "telnet" (port TCP/23) entre (164.81.20.137,TCP,23) et(164.81.1.212,TCP,1046) via l'interface Ethernet 0.

Iptraf permettra, en TP, de vérifier les paquets qui transitent sur les différentes interfaces du routeurà installer.

Les fonctions de routage

Le rôle d’un routeur (ou passerelle/gateway en terminologie IP) est de "router" les paquets entrantssur une des interfaces, vers une interface de sortie, en fonction de l'adresse IP du destinataire (en faitdu réseau auquel il appartient) .

Pour cela le routeur dispose d'une table de routage interne (cf les commandes route ou netstat –rsous Linux ou W9x) .

Votre routeur, dispose d’une interface vers un réseau de classe A, un réseau de classe B et un réseaude classe C.

Un serveur GNU/Linux sait, de base, router les paquets IP entre plusieurs interfaces. Il fautcependant que l'option IP_FORWARD soit validée soit:

� de manière dynamique : echo 0/1 > /proc/sys/net/ipv4/ip_forward� dans le fichier de configuration utilisé au démarrage du réseau.

Le serveur GNU/Linux par défaut sait router vers les réseaux auxquels appartiennent ses interfacesphysiques. Le routage par defaut vers les autres réseaux doit être explicitement configuré (fichier/etc/sysconfig/network).

routage/filtrage/sécurité 5

Page 6: routage filtrage securite

Exemple de table de routage:

$ /sbin/routeTable de routage IP du noyau (extrait)Destination Passerelle Genmask Indic Metric Ref Use Iface127.0.0.0 * 255.0.0.0 U 0 0 0 lo164.81.20.0 * 255.255.255.0 U 0 0 0 eth0192.168.100.0 * 255.255.255.0 U 0 0 0 eth1192.168.110.0 * 255.255.255.0 U 0 0 0 eth2192.168.120.0 * 255.255.255.0 U 0 0 0 eth3default 164.81.20.254 0.0.0.0 UG 0 0 0 eth0

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

La translation d'adresses ( NAT : Network Address Translation )

Le routeur, depuis le réseau externe, répond à plusieurs adresses IP qui sont traduites vers desadresses du réseau interne (en général des adresses privées). Cette translation peut être statique(serveurs) ou dynamique (postes de travail).

Exemple : translation d'adresses entre un réseau de classe A privé 10.0.0.0/8 ( 224 adressespotentielles ) sur un réseau de classe C officiel 195.195.195/24

routage/filtrage/sécurité 6

Page 7: routage filtrage securite

Le routeur modifie chaque paquet IP pour remplacer l'adresse interne par l'adresse externe ensortie, et inversement en entrée.

La masquage d'adresses IP ( IP masquerade ) :

L’IP masquerade,consisteà masquerles @IP du réseauinterne et à n'utiliser que l'adressedurouteur sur le réseau d'interconnexion.

Cettetechniqueest intéressantepour connectertout un réseaulocal sur l'accèsd'un prestatairequine fournit qu'une seule adresse IP (souvent dynamique).

Le routeur tient, pour chaque connexion TCP/UDP initiée depuis le réseau interne, lacorrespondanceentre 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 d'un réseau de classe C privé 192.168.100/24 ( 28 adresses potentielles ) enutilisant 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 pourpartager un accès unique vers un prestataire Internet.

routage/filtrage/sécurité 7

Page 8: routage filtrage securite

Les fonctions de filtrage :

Pour des raisons de sécurité il est souvent utile, voire indispensable d'effectuer un filtrage au niveaudes paquets IP qui transitent à travers un routeur:

Exemple : effectuer les filtrages pour� interdire en sortie tout le trafic Web et ftp � autoriser 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, …

En général les règles de filtrage sont analysées de manière séquentielle, dès qu'une règle correspondau paquet analysé, elle est appliquée.

Filtrage et masquage avec netfilter sous Linux

routage/filtrage/sécurité 8

Filtrage au niveauapplicatif

Filtrage au niveauadresse ip

Filtrage au niveauprotocole

Page 9: routage filtrage securite

Linux peut intègrer de base (selon les options d'installation), les fonctions de routage, de filtrage etde masquage. Il s'agit de :

� ipfwadm dans les noyaux 2.0.x (obsolète)� ipchains dans les noyaux 2.2.x (actuel/obsolète) Mandrake 6.1 à 7.2 � netfilter/iptables dans les noyaux 2.4.x (actuel) Mandrake >8.0

Ce dernier fait du NAT et PAT en plus du masquage. Des outils graphiques ont été développés poursimplifier la conception des listes d'accès utilisées.

Netfilter est un sous-système du noyau Linux qui permet d'inspecter les paquets IP et de les filtrerselon 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 deLinux est analysé et traité (accepté, rejeté, refusé, modifié, redirigé) en fonction des règles qui luisont applicables. Netfilter permet de faire de la translation d'adresses et du masquage (translation deports). iptables est l'outil qui permet la manipulation des chaînes et des tables de netfilter. 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 ( utilisée par exemple,

pour modifier le champ TOS des paquets IP)

Dans la table filter , trois chaînes sont prédéfinies : FORWARD qui contient les règles à appliquer aux paquets qui traversent INPUT qui contient les règles à appliquer aux paquets destinés aux processus locaux OUTPUT qui contient les règles à appliquer aux paquets émis par les processus locaux

Le routeur est une « boîte noire ». Chaque paquet entrant est « pris en charge », routé par lenoyau.

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îneINPUT , ceux émis par les processus internes, c'est à dire qui sortent, par la chaîne OUTPUT.

routage/filtrage/sécurité 9

routage

Processus localINPUT OUTPUT

FORWARDIN OUT

Page 10: routage filtrage securite

Schéma de traitement des paquets

routage/filtrage/sécurité 10

Page 11: routage filtrage securite

ANNEXE : Langage de définition des règles de Netfilter

Les principales commandes d'iptables ( voir man iptables en annexe) :

Syntaxe : Fonction : iptables -h aide en ligne iptables -L lister les chaînes et règles actives iptables -N chain créer une nouvelle chaîne utilisateur iptables -X chain supprimer chaîne utilisateur iptables -F [chain] vider une chaîne (ou toutes) iptables -P chain cible traitement par défaut pour une règle iptables -A chain règle ajouter une règle à la chaîne iptables -I chain [numéro] règle insérer une chaîne en position numéro iptables -D chain [numéro] [règle]effacer une règle iptables -R chain [numéro] [règle] remplacer une règle iptables -C chain tester un paquet dans une règle iptables -Z [chain] remettre à zéro les compteurs

On peut spécifier les commandes et paramètres sous forme courte ou longue: Exemple : -L est équivalent à --list, -A à --append Les principaux paramètres qui peuvent apparaître dans la partie règle sont :

Paramètre Fonction

-i interface appliquer la règle sur cette interface d'entrée -o interface appliquer la règle sur cette interface de sortie -t table table concernée ( filter par défaut) -s [!] X.X.X.X/lg adresse source, longueur du masque

le ! signifie la négation (cf. exemple) -d [!] X.X.X.X/lg adresse dest (et longueur du masque) -p protocole tcp / udp / icmp / all --source-port [!] [port[:port]] port source (ou intervalle de ports) --destination-port [!] [port[:port]] port destination (ou intervalle de ports) --tcp-flags [!] masq comp flags de paquets tcp ( ex. SYN) -j cible ACCEPT/DROP/QUEUE/RETURN/REDIRECT/

MASQUERADE / DNAT/ SNAT/ LOG

Utilisation des règles

Exemple de règle : linux> /sbin/iptables -F INPUT [-t filter] linux> /sbin/iptables -P INPUT ACCEPT linux> /sbin/iptables -A INPUT -i eth1 -s ! 195.220.162.0/24 -j DROP linux> /sbin/iptables -A FORWARD -i eth1 -s ! 195.220.162.0/24 -j DROP Dans cet exemple on interdit sur l'interface eth1 tout ce qui ne vient pas du réseau195.220.162.0/24

routage/filtrage/sécurité 11

Page 12: routage filtrage securite

Les tables de netfilter sont stockées en mémoire et sont effacées lors des rechargements.

Il faut donc au reboot exécuter un script shell qui : � soit repasse l'ensemble des commandes iptables nécessaires (par ex dans rc.local)� soit restaure les tables préalablement sauvegardées

Deux commandes permettent de sauvegarder/restaurer les tables : iptables-save et iptables-restore (cf man )

Exemple: linux> /sbin/iptables-save > /etc/regles-iptables

linux> /sbin/iptables-restore < /etc/regles-iptables

Configurer le filtrage avec iptables

Exemple de configuration ou on interdit aux requêtes vers les ports 21 et 80 de sortir.Seule la chaîne FORWARD est concernée par le trafic traversant le routeur, puisque les machinesdu réseau interne peuvent faire du web/ftp sur le routeur lui-même (INPUT).

Créer un script qui contiendra par exemple # Input and Output Rules /sbin/iptables -F INPUT /sbin/iptables -P INPUT ACCEPT /sbin/iptables -F OUTPUT /sbin/iptables -P OUTPUT ACCEPT # # Forwarding Rules /sbin/iptables -F FORWARD /sbin/iptables -P FORWARD ACCEPT /sbin/iptables -A FORWARD -s 195.220.162.0/24 -p tcp --dport 21-j DROP /sbin/iptables -A FORWARD -s 195.220.162.0/24 -p tcp --dport 80 -j REJECT

Si on visualise le contenu de la table filter

LINUX# iptables -L Chain INPUT (policy ACCEPT) ... Chain FORWARD (policy ACCEPT) target prot opt source destination DROP tcp -- 195.220.162.0/24 anywhere tcp dpt:ftp REJECT tcp -- 195.220.162.0/24 anywhere

tcp dpt:http reject-with icmp-port-unreachable Chain OUTPUT (policy ACCEPT)

Routage et filtrage sous Linux2.4 ( netfilter/iptables)

Visualisation des compteurs associés aux règles : Avec l'option verbose (-v) l'affichage indique le nombre de fois où la règle à été appliquée ( nombrede paquets et nombre d'octets)

LINUX# iptables -L -v

Chain FORWARD (policy ACCEPT 14 packets, 826 bytes) pkts bytes target prot opt in out source

routage/filtrage/sécurité 12

Page 13: routage filtrage securite

0 0 DROP tcp -- any .220.162.0/24 anywhere tcp dpt:ftp 6 288 REJECT tcp -- any 195.220.162.0/24anywhere tcp dpt:http reject-

with icmp-port-unreachable

LINUX# iptables Z FORWARD # remet à zéro les compteurs de la chaine FORWARD

LOG des accès : Iptables permet de tracer (logger) les paquets qui satisfont à une règle .

iptables -A OUTPUT -s 212.47.248.239/32 -p tcp --dport 22 -j LOG --log-prefix "Sessions SSH sortantes:"iptables -A FORWARD -s 195.220.162.0/24 -p tcp --dport 23 -j LOG --log-prefix "TELNET SORTANT : "

Extrait de iptables -n -L

Chain OUTPUT (policy ACCEPT)target prot opt source destinationLOG tcp -- 212.47.248.239 0.0.0.0/0 tcp dpt:22 LOG flags 0 level 4

prefix `Sessions SSH sortantes:'

LINUX# tail /var/log/messages Permet d'avoir accès aux logs et une lisibilité plus claire. Exemple de suivi des transactions sshsortantes.Oct 30 21:05:56 neptune kernel: Sessions SSH sortantes:IN= OUT=ppp0 SRC=212.47.248.239 DST=80.247.225.35LEN=100 TOS=0x10 PREC=0x00 TTL=64 ID=30211 DF PROTO=TCP SPT=1251 DPT=22 WINDOW=7840 RES=0x00 ACK PSH URGP=0

Oct 30 21:06:58 neptune kernel: Sessions SSH sortantes:IN= OUT=ppp0 SRC=212.47.248.239 DST=195.115.88.38LEN=52 TOS=0x00 PREC=0x00 TTL=64 ID=0DF PROTO=TCP SPT=1253 DPT=22 WINDOW=9568 RES=0x00 ACK URGP=0

La translation d'adresse (NAT) avec netfilter

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 dupaquet (cible DNAT).

routage/filtrage/sécurité 13

Page 14: routage filtrage securite

Dans la chaîne POSTROUTING on ne peut que modifier l'adresse source du paquet (cible SNAT). Modules du noyau nécessaires au NAT : Lorsqu'on fait du NAT il faut, en plus de netfilter, charger certains modules du noyau, qui sontindispensables pour le traitement des flux IP qui n'utilisent pas toujours le même port. Par exemple ftp utilise le port TCP/21 pour les commandes, mais aussi TCP/20 pour les transfertsde données, De même l'IRC, Realaudio,... utilisent des ports variables. Dans la distribution courante de netfilter il y a des modules, dynamiques ou compilés avec le noyauqui, pour un protocole donné, sont chargés de suivre les connexions et traiter le NAT. Ex: ip_conntrack_ftp.o et ip_nat_ftp.o sont utilisés pour ftp En cas de problème avec ftp charger les modules avec la commande insmod module.

Configuration de base pour faire du NAT-source :

Les postes sont dans un réseau de classe A privée 10.0.0.0/8 ( plusieurs milliers de machinespossibles) dans lequel on n'utilise que la tranche 10.10.10.0. On dispose d'une adresse IP officielle 195.220.162.0/24 Le NAT (translation) de l'adresse source consiste à attribuer aux appels sortants une adresse sourcedans le réseau IP officiel.

On peut même n'affecter au réseau 10.0.0.0/8 que 50 adresses du réseau 195.220.162.0/24 etréserver les suivantes à d'autres usages. Créer un script qui contiendra par exemple

# Input and Output Rules /sbin/iptables -F INPUT ; /sbin/iptables -P INPUT ACCEPT /sbin/iptables -F OUTPUT ; /sbin/iptables -P OUTPUT ACCEPT

# Forwarding Rules /sbin/iptables -F FORWARD ; /sbin/iptables -P FORWARD ACCEPT

routage/filtrage/sécurité 14

Page 15: routage filtrage securite

# Source NAT Rules /sbin/iptables -t nat -F POSTROUTING /sbin/iptables -t nat -A POSTROUTING -s 10.10.10.0/8 -j SNAT --to-source 195.220.162.1-195.220.162.50

Extrait du contenu de la table nat

LINUX# iptables -t nat -L

Chain POSTROUTING (policy ACCEPT) target prot opt source destination SNAT all -- 10.0.0.0/8 anywhere to:195.220.162.1-195.220.162.50

Nota : A priori les connexions ne sont possible que depuis le réseau interne. Même lorsque uneconnexion externe est établie depuis une machine 10.10.10.x (vue de l'extérieur comme195.220.162.y ) il ne semble pas possible de se connecter depuis l'extérieur vers cette machine195.220.162.y .

Configuration pour faire du NAT-destination :

La translation de l'adresse destination consiste à attribuer aux connexions entrantes provenant duréseau IP "officiel" une adresse IP "privée" et à rediriger l'appel sur le réseau interne. Exemple : on veut rediriger tous les appels entrants, quelque soit le port, vers une machine uniquedu réseau interne (10.10.10.1)

Créer un script qui contiendra par exemple

# Input and Output Rules /sbin/iptables -F INPUT ; /sbin/iptables -P INPUT ACCEPT /sbin/iptables -F OUTPUT ; /sbin/iptables -P OUTPUT ACCEPT # # Forwarding Rules /sbin/iptables -F FORWARD ; /sbin/iptables -P FORWARD ACCEPT

routage/filtrage/sécurité 15

Page 16: routage filtrage securite

# # Destination NAT Rules /sbin/iptables -t nat -F PREROUTING /sbin/iptables -t nat -A PREROUTING -d 195.220.162.0/24 -j DNAT --to-destination 10.10.10.1

Si on visualise le contenu de la table nat LINUX# iptables -t nat L Chain PREROUTING (policy ACCEPT) target prot opt source destination DNAT all -- anywhere 195.220.162.0/24 to:10.10.10.1 Chain POSTROUTING (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination

Notes :Il est possible de faire du NAT-destination et du filtrage simultanément.Il est possible d'utiliser le DNAT pour faire du pseudo-équilibrage de charge vers plusieurs serveursiptables -t nat -A PREROUTING -d 195.220.162.15 -j DNAT --to-destination 10.10.10.1-10.10.10.4

Les appels entrants vers la machine de 195. 220.162.15 seront dispatchés entre les machines 1 à 4du réseau 10.10.10.0/4, et ceci pour tous les ports. Il est possible d'utiliser le DNAT pour rediriger sur un autre port iptables -t nat -A PREROUTING -d 195.220.162.15 -p tcp --dport 80 -j DNAT --to-destination 10.10.10.1:8080

Les appels entrants vers la machine de 195. 220.162.15 port TCP/80 (web) seront redirigés vers lamachine 10.10.10.1 et le port TCP/8080.

Configuration de base pour faire du masquage:

Lorsqu'on fait du masquage, tous les postes sortent avec l'adresse de sortie du routeur (ici164.81.3.63) . En terminologie "Linux" cela s'appelle de l'IP masquerade.

routage/filtrage/sécurité 16

Page 17: routage filtrage securite

Sous Linux 2.0 et 2.2 (ipchains), seul le masquage était supporté, pas le NAT. La terminologie a été conservée, mais en fait il ne s'agit que de SNAT (translation d'adresse source)où l'adresse de la machine interne qui initie la connexion, est remplacée par l'adresse externe durouteur.Créer un script qui contiendra par exemple # Input and Output Rules /sbin/iptables -F INPUT ; /sbin/iptables -P INPUT ACCEPT /sbin/iptables -F OUTPUT ; /sbin/iptables -P OUTPUT ACCEPT # # Forwarding Rules /sbin/iptables -F FORWARD ; /sbin/iptables -P FORWARD ACCEPT # # Destination NAT Rules /sbin/iptables -t nat -F POSTROUTING /sbin/iptables -t nat -A POSTROUTING -s 10.10.10.0/8 -j SNAT --to-source 164.81.3.63 Si on visualise le contenu de la table nat Linux># iptables -L -t nat Chain PREROUTING (policy ACCEPT) target prot opt source destination Chain POSTROUTING (policy ACCEPT) target prot opt source destination SNAT all -- 10.0.0.0/8 anywhere to:164.81.3.63 Chain OUTPUT (policy ACCEPT) target prot opt source destination

Il est également possible d'utiliser la cible MASQUERADE. D'après les HOWTO elle est mêmepréférable lorsque le routeur Linux a une adresse coté Externe obtenue dynamiquement (adresseobtenue par DHCP, ou connexion PPP) .

La commande équivalente au SNAT ci-dessus est :

# Destination MASQUERADE Rules /sbin/iptables -t nat -F POSTROUTING /sbin/iptables -t nat -A POSTROUTING -s 10.10.10.0/8 -j MASQUERADE

routage/filtrage/sécurité 17

Page 18: routage filtrage securite

Petite étude de cas :

Vous voulez partager un accès dial sur votre réseau.#ifconfigeth0 Lien encap:Ethernet HWaddr 00:80:C8:7A:0A:D8 inet adr:192.168.90.1 Bcast:192.168.90.255 Masque:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:19950 errors:0 dropped:0 overruns:0 frame:0 TX packets:24988 errors:0 dropped:0 overruns:0 carrier:0 collisions:2 lg file transmission:100 RX bytes:2830076 (2.6 Mb) TX bytes:12625623 (12.0 Mb) Interruption:5 Adresse de base:0x240

ppp0 Lien encap:Protocole Point-à-Point inet adr:212.47.248.114 P-t-P:212.47.251.49 Masque:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1524 Metric:1 RX packets:27 errors:0 dropped:0 overruns:0 frame:0 TX packets:29 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:3 RX bytes:4924 (4.8 Kb) TX bytes:1365 (1.3 Kb)

#echo 1 > /proc/sys/net/ipv4/ip_forward#iptables -t nat -A POSTROUTING -s 192.168.90.0/24 -j MASQUERADE

iptables -t nat -LChain PREROUTING (policy ACCEPT)target prot opt source destination

Chain POSTROUTING (policy ACCEPT)target prot opt source destinationMASQUERADE all -- 192.168.90.0/24 anywhere

Chain OUTPUT (policy ACCEPT)target prot opt source destination

Le tour est joué, vous n'avez plus qu'à configurer les autres clients avec un DNS et une passerellepar défaut. Votre accès wan est partagé.

routage/filtrage/sécurité 18

Page 19: routage filtrage securite

Iptables : tutoriel

Créer une nouvelle chaîne?

iptables -N votre_nom_de_chaîne

Vous remarquerez que votre_nom_de_chaîne figure ici en minuscule. Par convention, les chaînesdéfinies par l'utilisateur sont écrites en minuscule pour les distinguer des autres. Votre chaînemaintenant créée, vous pouvez la remplir de règles.

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_votre_chaîneAttention! Si vous ne spécifiez aucune chaîne, toutes les chaînes seront vidées.

Effacer une chaîne

$>iptables -X ma_chaîne

Éditer les chaînes et leur contenu

$>iptables -L INPUT$>iptables -L$>iptables -L -v$>iptables -L -v -nL'argument -L sans aucun autre paramètre permet d'afficher toutes les chaînes présentent, même sielles ne contiennent aucune règle.La sous-option -v, mode verboseLa sous-option -n, mode numérique (sans résolution de nom)

Remettre les compteurs à zéro Comme nous avons pu le voir dans les exemples précédents, vous avez la possibilité de relever lenombre de paquets et d'octets (bytes) que cela représente. Ceci peut par exemple être utile dans lecadre de la métrologie.

$>iptables -L -v -n -Z

Les polices de sécurité de chaînes

Refuser tout ce qui provient de l'hôte local en entrée.$>iptables -A INPUT -s 127.0.0.1 -j DROP

Utiliser le complément avec !$>iptables -A INPUT -s ! 127.0.0.1 -j DROP

routage/filtrage/sécurité 19

Page 20: routage filtrage securite

Mentionner un protocole avec -p$>iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP

Mentionner les flags --tcp_flags$>iptables -A INPUT -p tcp --tcp-flags ALL -j DROP

Ici, on veut tous les drapeaux, à savoir : SYN, ACK, FIN, RST, URG, PSHIl existe encore deux autres drapeaux présents pour vous faciliter la tâche comme ALL et NONE.ALL regroupe l'ensemble des drapeaux et NONE bien évidement aucun.--syn , est un raccourci pour –tcp-flags (SYN,RST,ACK SYN)

Mentionner les ports avec --sport, --source-port, --dport, --destination-port $>iptables -A INPUT -j ACCEPT -s 127.0.0.1 -p tcp --sport 20:2000

Si vous désirez insérer la notion de "tous les ports supérieurs ou égaux à" ou bien "tous les portsinférieurs ou égaux à", laissez le champ vide après ou avant les deux points, selon ce que vousdésirez faire.$>iptables -A INPUT -j ACCEPT -s 127.0.0.1 -p tcp --sport 20:

Traiter le paquet avec –jump, ou -jSpécifie ce que vous désirez faire du paquet. La cible peut être une sous-chaîne que vous aurezvous-même créé ou alors une valeur spéciale. Celle-ci peut prendre la forme de ACCEPT, DROP,QUEUE ou RETURN.

ACCEPT autorise le paquet à continuer son chemin.DROP n'autorise pas le paquet à continuer son chemin. QUEUE permet de passer le paquet à une application, si jamais aucune application n'attend après lepaquet, il est rejeté.RETURN se comporte différement selon son emplacement. S'il est dans une chaîne que vous avezconstruite, le paquet est renvoyé à la chaîne forgée d'où il vient. S'il se trouve déjà dans une chaîneforgée, c'est la police de cette même chaîne qui décide du sort du paquet.

Spécifier une interface avec -i, --in-interface ou -o, --out-interfaceSpécification des interfaces sur lesquelles les paquets arrivent ou partent.

$>iptables -A INPUT -i eth0$>iptables -A INPUT -i lo

Pour spécifier plusieurs interfaces du même type (eth0, eth1, eth2, etc... par exemple) vous pouvezutiliser le caractère +. par exemple eth+ ou ppp+

Netfilter : Références :

Linux 2.4 Packet Filtering HOWTO Linux 2.4 NAT HOWTO Linux IP Masquerade HOWTO Linux Netfilter Hacking HOWTO Linux Advanced Routing & Traffic Control HOWTO ( anciennement Linux 2.4 Advanced RoutingHOWTO) Iptables Tutorial 1.1.6 ( de Oskar Andreasson)

routage/filtrage/sécurité 20

Page 21: routage filtrage securite

Netfilter : Sites web : http://www.linuxdoc.org est le site officiel des Howto. Nombreux sites miroirs dont en Francehttp://linux.cict.fr/LDP

Certains sont traduits en français : on en trouvera la liste sur http://www.freenix.org/unix/linux/HOWTO/Liste-des-HOWTO.html http://www.boingworld.com/workshops/linux/iptables-tutorial/iptables-tutorial/ ( site du tutoriel) http://www.freshmeat.net/ : pour rechercher les projets lies à iptables/netfilter et firewalls http://www.linuxguruz.org/iptables/ plein d'infos sur iptables ( et linux en général) http://www.netfilter.org/ ( site officiel netfilter) http://www.fwbuilder.org/ ( site officiel fwbuilder)

routage/filtrage/sécurité 21

Page 22: routage filtrage securite

TD- Routage/Sécurité

Schéma à utiliser :

Écrire les règles de filtrage iptables qui répondent aux différents problèmes exprimés ci-dessous. Notation : A = 195.0.0, B = 172.16, A.0 = toutes les machines du réseau 1, B.0.0 = toutes les machines du réseau B

� Interdire tous les paquets de A.0 vers B.0.0

� Interdire tous les paquets de A.0 vers B.0.1

� Interdire tous les paquets NetBIOS entrant sur A.254

� Masquer toutes les adresses de A.0 pour tous les protocoles

� Masquer toutes les adresses de A.0 uniquement tous les services pop3 et smtp

� N’autoriser que les paquets de A.1 vers B.0.1, interdire tout le reste

� Interdire que les paquets de A.1 vers B.0.1 autoriser tout le reste

� N’autoriser que le service telnet de A.1 vers B..01, interdire tout le reste

� N’autoriser que les paquets TCP de A.0 vers B.0.0 et interdire tout le reste.

routage/filtrage/sécurité 22

Page 23: routage filtrage securite

TP- Routage/Sécurité

Routage et filtrage à l’aide de netfilter

Vous allez réaliser ce TP sur la maquette que vous avez monté pour le routage.Vous utiliserez trois machines C, R et S. R fait référence à votre routeur. C fait référence au clientinstallé sur le réseau de classe B, S fait référence au serveur installé sur le réseau de classe A.C est sur un réseau « privé » (C sera client pour les tests)S est sur un réseau « public » R servira de routeur et pare feu (firewall) entre votre réseau privé et le réseau public.

Vous allez réaliser ce TP en trois parties :Première partie : vérification du routage sur le routeur logiciel R,Deuxième partie : mise en oeuvre de règles de filtrage simple et de la translation d’adresse sur RTroisième partie : mise en place de règle de filtrages par adresse, par port et par protocole.

Vous utiliserez la documentation de netfilter et les exemples commentés qui vous sont fournis.

Première partie : installation du routage :

Installation et configuration:1 - Installez les interfaces réseau sur le routeur et démarrez la machine.2 - Créezles fichiers de configurationdesinterfaceseth0,eth1et eth2en vousaidantdesfichierssuivants :Les descripteurs des interfaces sont dans le répertoire /etc/sysconfig/network-scripts.

/etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0IPADDR=192.168.x.zNETMASK=255.255.255.0NETWORK=192.168.x.0BROADCOAST=192.168.x.255ONBOOT=yes ; initialisation au chargement du réseauBOOTPROTO=none; pas d’utilisation de bootpUSERCTL=no ; permettre à un utilisateur de désactiver les cartes

/etc/sysconfig/network-scripts/ifcfg-eth1DEVICE=eth1IPADDR=192.168.y.zNETMASK=255.255.255.0NETWORK=192.168.y.0BROADCOAST=192.168.y.255ONBOOT=yesBOOTPROTO=noneUSERCTL=no

Aidez vous de ces deux fichiers de configuration pour la troisième interface.

3 - Installez le module de la carte dans le fichier « /etc/module.conf » si nécessaire

routage/filtrage/sécurité 23

Page 24: routage filtrage securite

4 - Lancez le service réseau sur R « /etc/rc.d/init.d/network restart », relevez les routes. 5 - Vérifiez à l’aide de la commande « ifconfig » que les interfaces sont bien actives. Corrigez tantque ce n’est pas le cas.6 - Configurez et installez C sur votre réseau privé,7 - Testez l’accès de C vers les deux interfaces de R. 8 - Si l’accès vers le réseau public ne fonctionne pas, activez le routage (ip forward) entre lesinterfaces de réseau. Vous pouvez modifier le fichier « network » .Ce fichier est situé dans /etc/sysconfig/.

/etc/sysconfig/networkNETWORKING=yesFORWARD_IPV4=yes ; sans cette option la passerelle ne fonctionnera pasHOSTNAME=d2r2.toubet.eduDOMAINNAME=toubet.eduGATEWAY=GATEWAYDEV=

Vous pouvez également utiliser la commande « echo 1 > /proc/sys/net/ipv4/ip_forward » pour lefaire passer à VRAI ».Relancez le service réseau, relever les routes de R à l’aide de la commande « route »

9 - Vérifiez avec une commande « ping » que les interfaces de R sont bien visibles à partir de C. 10 - Vérifiez l’installation du programme iptraf sur R

Deuxième partie : mise en oeuvre de règle de filtrages simples et du masquage d’adresse sur lerouteur1 - Interdisez toutes les requêtes de C vers S (extérieur) (tester)2 - Autorisez toutes les requêtes du client C vers S (tester)3 - Interdisez tout passage sur la chaîne FORWARD en laissant l’option « ACCEPT » sur leschaînes INPUT et OUTPUT (tester) 4 - Activez le masquage d’adresse pour toutes les machines du réseau auquel appartient C vers tousles autres réseaux (tester)5 - Activez le masquage d’adresse pour toutes les machines du réseau auquel appartient C vers unseul des autres réseaux. Exemple si vous êtes sur le réseau vert.org, activer le masquage versbleu.org. Les paquets ne devront pas passer vers rouge.org, ni noir.org. (tester)6 - Restaurez l’état réalisé au point 4 (après masquage). Activez « iptraf » sur l’interface publique.Vérifiez que seule, l’adresse ip de l’interface du réseau privé apparaît et que toutes les autres sont« masquées ». Notez la translation de port.

Troisième partie : mise en place de règles de filtrage par adresse, par port et par protocole.1 - Relevez dans le fichier « /etc/protocol » et « /etc/services » les ports et les noms des protocolesutilisés par les services ftp et http.Refusez tout trafic de C vers l’extérieur à destination de ces ports. Vérifiez que telnet est accepté.(tester puis restaurer)2 - N’autorisez à C l’accès qu’à une seule machine (par exemple le client C de rouge si vous êtessur vert), refusez tout le reste. (tester puis restaurer)3 - Refusez tout accès à la machine (172.x.0.1) de votre réseau (172.x.0.0) vers le réseau(192.168.90.0). (tester.)4 - Relevez les ports et protocoles utilisés par les services de résolution de nomsConstruisez les règles afin qu’elles répondent au problème suivant. On désire que :

� toutes les machines du réseau privé puissent avoir accès à tous les autres services de n’importe

routage/filtrage/sécurité 24

Page 25: routage filtrage securite

quel réseau� la machine C de votre réseau privé ne peut pas envoyer de requête UDP/DOMAIN vers la

machine S.

(testez pour les requêtes sur le serveur de noms puis pour des requêtes sur le serveur ftp en utilisantl’adresse IP)

Pour les deux traitements qui suivent, vous utiliserez deux écritures, dont l’opérateur « ! » (not) quipermet d’obtenir des compléments.

5 - Autorisez toutes les requêtes qui sortent vers l'extérieur, sauf celles qui vont sur un port ftp6 - N’autorisez aucune requête hormis celles qui sont à destination de port 80

Annexe : Schéma complet de la maquette

Chaque groupe de TP dispose de 3 machines, dont un routeur et travaille sur 3 segments réseau(Classe A, Classe B et Classe C)

routage/filtrage/sécurité 25