49
Introduction Étude des protocoles et périphériques Fonctionnalités additionnelles Linux en Réseau Introduction à Linux E. Leblond 1 1 EdenWall Technologies SA Licence CC-by-nc Leblond Linux en Réseau Introduction Étude des protocoles et périphériques Fonctionnalités additionnelles Outline 1 Introduction 2 Étude des protocoles et périphériques Protocole de niveau 1 et 2 Protocole TCP/IP 3 Fonctionnalités additionnelles Routage avancé et qualité de service Sécurité 2 cas pratiques Leblond Linux en Réseau

Linux en Réseau Outline - download.tuxfamily.org · Résumé Encapsulation Imagination Leblond Linux en Réseau. Introduction Étude des protocoles et périphériques Fonctionnalités

  • Upload
    dangnga

  • View
    229

  • Download
    0

Embed Size (px)

Citation preview

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Linux en RéseauIntroduction à Linux

E. Leblond1

1EdenWall Technologies SA

Licence CC-by-nc

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Outline

1 Introduction

2 Étude des protocoles et périphériquesProtocole de niveau 1 et 2Protocole TCP/IP

3 Fonctionnalités additionnellesRoutage avancé et qualité de serviceSécurité2 cas pratiques

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnellesPlan du cours

E. LeblondAutobiographie

Concepteur et développeur principal de NuFWContributeur NetfilterFondateur et directeur technique de EdenWallTechnologiesNé à Calais

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnellesPlan du cours

EdenWall Technologies

Éditeur de solutions de sécuritésPare-feu EdenWallPrelude

Pare-feu EdenWallBasé sur NetfilterIdentificatin des flux par NuFWSolution clé en main

Membre de l’APRIL

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnellesPlan du cours

Un monde de réseaux.Trivialités en tout genre.

Les réseaux sont omni-présentsà des échelles diverses

Téléphones portablesCPE (modem ADSL, freebox, pare-feu)PE (routeur backbone)

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnellesPlan du cours

Linux, une réponse globaleDe l’opérateur au particulier.

Avantage économique directOffre logicielle étendueMaitrise et indépendanceCompétences disponibles sur le marché

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnellesPlan du cours

Esprit du coursHeureux qui comme Ulysse . . .

Découvrir Linux dans le cadre des réseauxComprendre les possibilités de manipulations offertesApprocher les contraintes de réalisations

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnellesPlan du cours

Plan

Protocoles de niveau 1 et 2.TCP/IP et les protocoles courantsRoutage avancéSécurité

RésuméEncapsulationImagination

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

Modèle OSIL’effet oignon

C’est le schéma classique de décomposition du réseau :Une décomposition en coucheDu physique à l’applicationBasée sur l’encapsulation et fragmentation

Intérêt pratique notamment au niveau du développement.

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

Décomposition du modèle OSI

1 Couche physique : 100base-TX, Wireless2 Couche de liaison : Ethernet, ATM, TokenRing, Wi-Fi3 Couche de réseau : ARP, IPv4, IPv64 Couche de transport : TCP, UDP, ICMP, SCTP5 Couche de session : L2TP, PPTP, RPC6 Couche de présentation : Unicode, MIME, HTML, XML7 Couche application : SSH, NNTP, DNS, HTTP

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

EthernetLe protocole de tous les jours

Solution à bas coût et haute performanceConnecteur et concentrateur bon marchéGamme très variée

Atteint des bandes passantes élevées (de 10M à 10G)Filaire ou WiFiSwitch de paquets

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

EthernetDécomposition d’un datagramme ethernet

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

Ethernet

La destination d’abord pour l’optimisationLe datagramme contient toutes les informationsnécessaires au routageLa taille du datagramme est variable et est limitée par lemédium physique:

1500 bytes : la norme et le chiffre à retenir9000 bytes : jumbo frame

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

EthernetPrincipe

Adresse MAC des cartes, identifiant uniqueCommunication par adresse MACMécanisme d’annonce

Recherche correspondance IP<->Adresse Mac :

arp who-has 192.168.1.128 tell 192.168.1.2arp reply 192.168.1.128 is-at 00:0c:f1:5c:47:91

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

EthernetARP

Basé sur la confiance et donc soumis à de nombreusesattaques. Cette couche n’offre aucune sécurité.

arp-spoofingRien n’empêche d’annoncer une adresse illégaleRien n’empèche de changer d’adresse MAC

arp-poisonningRien n’empêche d’annoncer n’importe quoi

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

ATMUn protocole créé pour les opérateurs (téléphoniques)

Équipement de réseau à grance échelle (taille et distance).Relais de cellules (de taille fixe)Point à pointQualité de service intégrée

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

ATMDécomposition d’un datagramme ATM

L’étiquette contient VP,VC, le mode de communication(AAL5, AAL3) et d’autres informationsLe routage s’effectue grâce à l’étiquette.

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

ATMQualité de service

CBR - Constant bit rateVBR - Variable bit rate: bande passante moyenne avecburstABR - Available bit rate: minimum garantiUBR - Unspecified bit rate: meilleur effort

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

ATMCourt c’est court

Taille de cellule fixe: 53 octetsDécoupage massif des paquets IP classiquesProblème de qualité de service avec TCP

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

Le cas de l’ADSL en Francel’ADSL non dégroupé France Telecom

Ethernet (ou WiFi) : chez le particulierPPPOE : entre ordi et modem, l’ordi est le début du tunnelPPPATM : modem vers concentrateurL2TP : concentrateur vers backboneATM : backbone FT vers terminaisonEthernet : Terminaison ATM vers terminateur PPP, fin dutunnel PPP

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

Les réseaux vus du noyauImplémentation des réseaux dans linux

Un support étenduUne architecture respectant le découpage OSIFournir des couches d’intéractions avec l’espace utilisateur

ioctl : configurationsocket : communication

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

Les réseaux vus du noyauSchéma fonctionnel

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

ProblématiquesSupport du matériel

Accès aux spécificités :Collaboration avec les fabricantsProblème des ports depuis Windows

Factorisation : Avoir une implémentation de chaqueprotocole

Limiter les effortsCentraliser le code pour les audits

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

ProblématiquesDifficultés globales

SegmentationMigration entre les différentes couchesRéassemblage

ComplexitéComplexité élevé (liée au protocole)Mécanisme annexe de contrôle

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

Positionnement dans le noyau

Niveau 1 : géré par le "matériel"Interface physiqueInterface virtuelle

Niveau 2 : géré par le noyauMise en forme des skbUtilisation de l’API de la carte pour communiquer

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

Interface virtuellePrésentation

ButOffrir une présentation abstraite du matériel, en se limitantà la couche OSI concernéeRéutilisation des outils développés pour les versionsmatérielles

MéthodeNe pas sortir de la couche OSIPrésenter les fonctions disponibles et génériques du noyau

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

EthernetManipulations basiques

ifconfig : manipulation de la plupart des paramètres deconfiguration d’un réseau ethernet

mtumodepromiscuous

Manipulation bas niveau :mii-tooleth-tool

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

EthernetARP

La configuration est automatiqueUtilisation de l’utilitaire arp

liste des adressesenregistrement en dur de certaines adresses

arpwatch : Outil de diagnostic et de surveillanceMail d’annonce des machines du réseauDétection des conflitsAlerte sur les flip-flop

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

EthernetVirtualisation sur ethernet

Tuntap : Communication avec des entités virtuellesVirtualBoxKVMOpenVPN

Bonding : accroissement des performancesBande passanteSécurité

Bridge : ajoût des fonctionnalités de switch à Linux

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

EthernetTuntap : plus d’interfaces pour le même prix

Le périphérique est remplacé par un programme utilisateurDéclaration par accès à /dev/net/tun

Utilisation d’uml_switch pour communiquer à plusieursprogrammes utilisateurs sur une interface

tunctl -u someuserifconfig tap0 192.168.0.254 up

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

EthernetBonding : N fois plus pour prix de N

Aggrégations d’interface avec encapsulation EthernetLe noyau répartit l’entrée de l’interface virtuelle présentéeentre les interfaces physiquesAugmentation de la bande passanteCollaboration de l’équipement réseau nécessaire

Détection des interfaces défaillantesDétection bas-niveau (miimon)Envoi de requêtes arp ciblées

On host A : On the switch :# modprobe bonding miimon=100 # set up a trunk on port1# ifconfig bond0 addr and port2# ifenslave bond0 eth0 eth1

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

EthernetBridge : quand linux se prend pour un switch

Réunir des interfaces ethernet pour former une entitélogique plus importantesRelayage des requêtes arp entre les interfaces physiquesdu bridgeSwitch logiciel, pare-feu transparent

brctl addbr br0brctl addif br0 eth0brctl addif br0 eth1

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

ATMPrincipes

Principes :Accès au couple VP,VC par une socketMaintien de la connexion par un programme en espaceutilisateur

Deux modes :Démon de signallingUtilisation par un binaire lié à un protocole spécifique

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

ATMTCPL’ATM du pauvre

Interface virtuelle :Fait le lien entre une socket TCP et une interface ATMvirtuelleMode client serveur (ils doivent fonctionnerperpetuellement)

Une mise en oeuvre limitée :Pas de qualité de serviceLe mélange des AALs n’est pas possible

# session Aatmtcp virtual listen# session Batmtcp virtual connect Host_B

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

Protocole RFC2684Pour l’amour de l’encapsulation

Principes et apportsAvoir une interface de type ethernet transportée sur ATMQualité de service d’ATM sur ethernetEthernet longue distance

MéthodeAvoir une interface virtuelleLa lier à une socket ATMRediriger de l’un vers l’autre

br2684ctl -b -e 0 -c 0 -a 0.35ifconfig nas0 192.168.0.1 netmask 255.255.255.0 up

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

tcpdumpLe meilleur ami de l’Homme

PrincipeCopie du flux juste avant la sortie du driverUn système de filtre puissant

tcpdump -i eth1 -X -nv host mail.inl.fr and not port 22tcpdump ’icmp[icmptype] != icmp-echo and \icmp[icmptype] != icmp-echoreply’

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

tcpdumpLe meilleur ami de l’Homme

00:28:37.218739 IP 192.168.1.128.1154 > 195.101.59.116.80: . 1:1449(1448) ack 1 win 7300x0000: 4500 05dc 0682 4000 4006 6d98 c0a8 0180 E.....@[email protected]: c365 3b74 0482 0050 1880 5cf1 f4fb 186b .e;t...P..\....k0x0020: 8010 02da 105d 0000 0101 080a 0030 5a92 .....].......0Z.0x0030: 6de4 15a5 4745 5420 2f20 4854 5450 2f31 m...GET./.HTTP/10x0040: 2e30 0d0a 486f 7374 3a20 6d61 696c 2e69 .0..Host:.mail.i0x0050: 6e6c nl

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

Introduction

Famille de protocoles incontournablesBeaucoup plus complexe qu’il n’y paraitCoexistence avec les autres piles et les RFCs

Contournement des bugsViolation des RFC

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

Principe

Architecture du datagramme semblable à EthernetEspace d’adresses de 32bitConstruit pour l’encapsulation

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

Le paquet IPv4Propriétés notables

Taille variableMécanisme de fragmentationProtocole de contrôle icmp

Vérification de connectivité : pingMécanisme d’information : rejectIndication de routage : redirect

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

IPDécomposition du datagramme

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

IP / Exemple de fragmentationPing de 1500 sur un lien à MTU 400

IP (tos 0x0, ttl 64, id 5503, offset 0, flags [+], proto: ICMP (1), length: 396) 127.0.0.1> 127.0.0.1: ICMP echo request, id 49167, seq 1, length 376IP (tos 0x0, ttl 64, id 5503, offset 376, flags [+], proto: ICMP (1), length: 396) 127.0.0.1> 127.0.0.1: icmpIP (tos 0x0, ttl 64, id 5503, offset 752, flags [+], proto: ICMP (1), length: 396) 127.0.0.1> 127.0.0.1: icmpIP (tos 0x0, ttl 64, id 5503, offset 1128, flags [none], proto: ICMP (1), length: 400) 127.0.0.1> 127.0.0.1: icmpIP (tos 0x0, ttl 64, id 5504, offset 0, flags [+], proto: ICMP (1), length: 396) 127.0.0.1> 127.0.0.1: ICMP echo reply, id 49167, seq 1, length 376IP (tos 0x0, ttl 64, id 5504, offset 376, flags [+], proto: ICMP (1), length: 396) 127.0.0.1> 127.0.0.1: icmpIP (tos 0x0, ttl 64, id 5504, offset 752, flags [+], proto: ICMP (1), length: 396) 127.0.0.1> 127.0.0.1: icmpIP (tos 0x0, ttl 64, id 5504, offset 1128, flags [none], proto: ICMP (1), length: 400) 127.0.0.1> 127.0.0.1: icmp

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

Configuration d’IP/proc est ton ami

Regarder /proc/sys/net/ipv4/Lire filesystems/proc.txt

Lire networking/ip-sysctl.txt

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

IP/proc

ip_forward : Activation du routageip_local_port_range : Defaut à 1024-4999. À étendreà 32768-61000 sur les machines stressées.ipfrag_high_tresh et ipfrag_low_tresh : Seuilsde l’utilisation mémoire réservée à la défragmentation despaquets.ipfrag_time : Durée de conservation d’un fragment IPen mémoire

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

IP

ipv4/conf/all/accept_redirect : Accepte lesindications de routage venant d’ICMPipv4/conf/all/secure_redirects : Limitel’acceptation à la passerelle par défautipv4/conf/all/rp_filter : Filtrage des routes enentrées, le paquet est refusé si le noyau n’a pas une routevers ce réseau sur cette interface.ipv4/conf/IF/proxy_arp : On répond sur uneinterface pour les machines se trouvant derrière une autreinterface

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

UDP

Multiplexage des connexions entre deux IPsPort sourcePort destinationEspace des ports de 16bit

Notion "propre" de socket au niveau du développement

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

TCP

Surcouche de UDPOrienté connexion

TCP HandshakeSYN, SYN ACK, ACK

Transport fiableContrôle et réémission en cas de pertes de paquetsNégotiation du HandShakeMécanisme avancé permettant d’accélerer les transfertsmalgré le contrôle

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

TCPDécomposition du datagramme

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

TCPPetite liste de fonctions et options

Réémission :À l’initialisationDurant l’existence d’une connexion

TCP window :Permet d’accéler le trafic en limitant les ACKFacteur de sécurité dans les réseaux

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

TCP/proc (1/2)

Mécanismes de protection :tcp_syncookies : protection contre les attaques SYNtcp_window_scaling : vérification des fenêtrestcp_fin_timeout : Délai pendant lequel on attend FIN

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

TCP/proc (2/2)

Gestion de la performance :tcp_max_syn_backlog : longueur de la file d’attentepour une socket serveurtcp_mem : seuils globaux d’utilisation de la mémoire parTCPtcp_rmem : paramétrage de l’utilisation mémoire enréception des socketstcp_wmem : paramétrage de l’utilisation mémoire enémission des sockets

Gestion des problèmes de congestiontcp_congestion_control : choix de l’algorithme decontrôle de congestiontcp_ecn : Explicit congestion notification mal implémentépar certains concurrents

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Protocole de niveau 1 et 2Protocole TCP/IP

TCPConclusion

Le support des protocoles TCP/IP est complet.Les options de configurations sont nombreuses et trèsfines.Heureusement, le défaut est souvent suffisant.Par delà, cette implémentation des RFCs et des standards,une surcouche avancée existe . . .

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

RoutagePrincipe générique

Directives de directionRéseau segmentéComment atteindre une destination ?Passerelle pour le réseau

Routage : du plus spécifique au plus général

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

RoutageExemple de table de routage

Table de routage IP du noyauDestination Passerelle Genmask Indic Metric Ref Use Iface192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1192.168.0.0 192.168.1.2 255.255.255.0 UG 0 0 0 eth10.0.0.0 192.168.1.254 0.0.0.0 UG 0 0 0 eth1

/sbin/route del -net 192.168.0.0/24 gw 192.168.1.2

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

RoutageProblèmes de performance

Algorithme de routage :Recherche de la destination dans la liste des réseauxroutésDéterminer les inclusions de réseauxTenir le Giga ou plusAvec 15000 routes (routeur backbone BGP)

Système de cache :Point de départ : Si on a routé un paquet vers une machineon risque d’en envoyer d’autresStockage des décisions unitairesRecherche dans une table de Hash (algo en O(1))

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

RoutageExemple de cache

Extrait du cache après une simple requête web vers google :route -Ccache de routage IP du noyauSource Destination Passerelle Indic Metric Ref Use Iface192.168.1.128 66.102.9.104 192.168.1.254 0 0 1 eth172.14.221.104 192.168.1.128 192.168.1.128 l 0 0 9 lo192.168.1.128 72.14.221.104 192.168.1.254 0 0 3 eth1192.168.1.128 66.249.93.104 192.168.1.254 0 0 1 eth1

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

Routage IPCommunication et paramétrage

RTnetlinkCommunication avec noyau<->utilisateur au moyen d’unesocket de type netlinkTransport des messages de routagesConfigurationmontée d’informationMécanisme utilisé par les démons de routage (Quagga,bird)

Contrôle avancés des décisions de routageRoutage par la sourceInterdiction de routagePar interface réseau

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

Paramétrage avancéiproute

Configurationip route add 192.168.2.0/24 via 192.168.1.42 dev eth1

Interrogationip route list

Vidage du cacheip route flush cache

Attention au mot clé cache

Spécification des règles de routage

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

Routage : Un cas réelL’amour du vice

Solution ? Gestion de plusieurs tables de routage

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

Routage IP multitables

Gestion des réseaux en doublonsDifférencier les systèmes de routage suivant des critèresarbitraires :

Filtrage par interfaceUtilisation de la marque

attention à rp_filter

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

Routage IP multitablesMise en oeuvre

Mise en place des tables dans/etc/iproutre2/rt_tables255 local254 main

Spécification des routesip route add 192.168.3.0/24 via 192.168.1.1 dev eth0 table ADSL

Listing des routesip route list table allip route list table ADSL

Création des règles d’aiguillageip rules add dev ppp0 lookup table ADSLip rule list

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

Routage IP multitablesMise en oeuvre

Déclaration des tables2 LAN13 LAN2

Remplissage des tablesip route add 192.168.1.0/24 dev eth3 table LAN1ip route add 10.0.0.0/8 dev eth0 table LAN1

ip route add 192.168.1.0/24 dev eth2 table LAN2ip route add 10.0.0.0/8 dev eth1 table LAN2

Mise en place des règles de routageip rule add dev eth0 lookup LAN1ip rule add dev eth3 lookup LAN1

ip rule add dev eth1 lookup LAN2ip rule add dev eth2 lookup LAN2

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

Qualité de serviceImplémentation sur IP

ATMMPLS

ThéorieSemblable à ATMRoutage par étiquetteRéseau Privé Virtuel par routage

Pratique (opérateur)Marketing : résolution de vos problèmesRéalité : MPLS au niveau du backboneFlexibilité faible pour le client

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

Qualité de serviceDiffServ

Politique d’ordonnancement des paquets en un point duréseau en utilisant comme critère les paramètres propresau paquet.Ne nécessite pas de modification du traficPlacement aux points de congestion pour être efficaceCas du RPV : Mise en place sur tous les sites (devant lesliens internet)

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

Qualité de serviceDiffServ

Egress : Emission GressCouche glissée juste en amont du driverContrôle de la file d’émission du driverStockage dans un buffer interne au noyau

Ingress : Input GressOrdonancement des paquets impossiblesVitesse et ordre de réception sont liés au medium physiqueSeule intéraction est le DROP de paquetIMQ : solution alternative

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

Qualité de serviceDiscipline et class

QueueTampon entre le noyau et le périphériqueContrôle les flux en appliquant une heuristiqueGère les paquets en attente en fonction de cette heuristiquepfifo_fast : queue par défauttc qdisc ls

ClassesSous éléments de certaines disciplinesPermettent de scinder les flux dans des canaux dont lescaractéristiques sont paramétrablesDes disciplines sont applicables aux feuilles des classesConstruction d’une arborescence

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

Qualité de servicePolitique basique sans classe : prio

Classement par rapport au bit TOSPossibilité de forcer l’entrée de certains flux dans certainesclassestc qdisc add dev eth0 prio

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

Qualité de serviceDiscipline htb

Principe :Découpage de la bande passante disponible en canauxParamétrage des canaux en terme de bande passanteNotion de priorité des canauxLes canaux sont chainables

Attribution de la classe au périphériquetc qdisc add dev eth0 root handle 1: htb default 12

Déclaration de la classe racine :tc class add dev eth0 parent 1: classid 1:1 htb \rate 10mbit ceil 10mbit burst 20k

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

Qualité de serviceClasses htb

Déclaration des classes :1:6 : Classe pour TCP, limité à 2mbit/s1:17 : Classe pour UDP, limité à 6mbit/s.1:12 : Classe pour les autres, limité à 1mbit/s

tc class add dev eth0 parent 1:1 classid 1:6 htb \rate 2mbit ceil 10mbit burst 20ktc class add dev eth0 parent 1:1 classid 1:17 htb \rate 6mbit ceil 10mbit burst 20ktc class add dev eth0 parent 1:1 classid 1:12 htb \rate 1mbit ceil 1mbit burst 20k

Paramètres :rate : Débit à l’équilibreceil : Débit maximal autorisé pour la classeburst : Taille du seau, elle est égale à la quantité maximalede données pouvant être envoyée d’une classe avant deservir une autre classe.

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

Qualité de serviceAiguillage

Classifieurs : aiguilleur de paquetsClassifieur fw : par marquetcfilter add dev eth0 protocol ip handle 1 fw flowid 1:6tc filter add dev eth0 protocol ip handle 2 fw flowid 1:17

Classifieur u32 : par décomposition du paquet iptc filter add dev eth0 parent 1:0 \protocol ip prio 1 u32 match ip src 192.168.1.0/24 flowid 1:1

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

Qualité de serviceBut recherché et principes

But :Garantir le service rendu aux utilisateursLes applications métiers doivent être stables au niveau duréseauLes performances doivent être optimales pour l’ensembledes flux

Principes :Ne pas perdre de vue le but poursuiviSimple is beautiful

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

Bibliographie

http://lartc.org/http://www.regit.org/article.php3?id_article=13http://www-rp.lip6.fr/̃lochin/qos/qoshtml/qos.htmlman page de ip

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

Problématique

ConfidentialitéConservation de l’informationDissimulation des échanges

Protection des ressourcesLimitation des accèsFiltre IPAuthentification

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

VPN et ipsecConfidentialité en milieu hostile

ObjectifsConnecter différentes entités entre ellesPermettre au réseau privé de passer à travers internetAssurer la confidentialité des échanges

ContraintesL’ensemble des échanges est publicLe réseau n’est pas fiable

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

VPN et ipsecPrincipes

Négotiation d’une clé de chiffrement :En espace utilisateurNégotiation sur UDP port 500

Établissement d’un canal chiffréESP : Encapsulating Security Payloadprotocole IP : 50

DialogueLes flux réseau à réseau sont routés par ce canalAttention aux communications pare-feu à pare-feu

Rafraichissement périodique des élémentscryptographiques

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

VPN et ipsecIPsec

racoonInfrastructure des *BSDDirective de configuration de type routage#!/sbin/setkey -fadd 10.0.0.216 10.0.0.11 ah 24500 -A hmac-md5 "1234567890123456";add 10.0.0.216 10.0.0.11 esp 24501 -E 3des-cbc "123456789012123456789012";

spdadd 10.0.0.216 10.0.0.11 any -P out ipsecesp/transport//requireah/transport//require;

openswanSuccesseur de freewanFonctionnement par fichier de configurationconn host-to-host

left=192.0.2.2 # Local [email protected] #leftrsasigkey=0s1LgR7/oUM... #leftnexthop=%defaultroute # correct in many situationsright=192.0.2.9 # Remote [email protected] #rightrsasigkey=0sAQOqH55O... #rightnexthop=%defaultroute # correct in many situationsauto=add # authorizes but doesn’t start this

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

VPN et ipsecOpenVPN

Caractéristiques :VPN basé sur une encapsulation SSLBasé sur TunTAPMulti plateformeAuthentification par clés

Avantages :Configuration simplePassage sur TCP donc plus facilement accessible depuisun réseau ouvertPasse le NATSupport des proxys

Désavantages :Moins standard que Ipsec

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

NetfilterUne infrastructure de filtrage complète

Couche pare-feu de Linux 2.4 et 2.6Successeur de ipchainsPare-feu avec inspection d’état

Avantages :Des fonctionnalités avancéesDes extensions multiples

Désavantages :Des extensions multiples

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

Filtrage

Filtres disponibles :Champs des protocolesÉtat des paquetsIPSEC : vérifications avancées

Décisions :DROP : Bloquage et oubli du paquetiptables -A OUTPUT -p tcp --dport 25 -j DROP

REJECT : Envoi d’un message de contrôleLOG : Envoi des détails du paquet dans syslogULOG, NFLOG : Envoi des détails du paquet sur unesocket netlink

ulogdspecterulogd2

TARPIT

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

Suivi de connexions

Prendre en compte la notion de connexionRemonter une couche du modèle OSIPrendre en compte la notion de fluxUn paquet réponse doit "forcément" passer

Mise en place d’un suivi de connexionsTable de hash contenant les connexions, accès à uneentrée en O(1)Prise en compte des protocoles non linéairesUtilisable pour le NAT

Des filtres adaptés :NEW : le paquet ne fait pas partie d’un flux connu desservices de policeiptables -A OUTPUT -p tcp --dport 25 -m state --state NEW -j ACCEPT

ESTABLISHED : le paquet fait partie d’un flux connuRELATED : le paquet est relatif à un flux connu (ftp etftp-data par ex)

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

Translation d’adresses

Des plages d’adresses non routables sont allouéesIl faut donc les dissimuler en sortie de réseau d’entreprise

SNATProblème des adresses non fixes : MASQUERADEIl peut être pratique de rediriger un flux vers une adressepublique sur une adresse privée : DNAT

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

Packet mangling

Le contenu des paquets peut être modifié pour ajuster certainsparamètres ou permettre des traitements.

MARK : marque La marque n’est pas visible sur le réseauCONNMARK : marque sur la connexion est pas sur lepaquetSECMARK : marque de sécuritéTCPMSS : spécification du Maximum Segment SizeIPMARKTOSTTL...

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

Base de travail

L’architecture de Netfilter sera décrite avec pour exemple leschéma suivant :

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

Aiguillage des flux

Paquet pour le pare-feu INPUTPaquet sortant du pare-feu OUTPUTPaquet traversant le pare-feu FORWARD

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

Traduction d’adresse de destination

On veut rediriger les paquets à destination du port 80 dupare-feu vers le serveur en DMZ.

Le résultat final est celui qui compte au niveau du filtrageLe plus tôt est donc le mieux pour traverserLa modification est faite en entrée.

iptables -A PREROUTING -t nat -p tcp --dport 80 -d IPFW -j DNAT --to IPDMZ

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

Traduction d’adresse de destination

Les utilisateurs doivent pouvoir aller sur internet. La réécrituredes adresses sources est nécessaire.

Le monde extérieur doit voir une autre adresse sourcePas de raison de se mentirLa modification est faite en sortie.

iptables -A POSTROUTING -t nat -o eth0 -j SNAT --to IPFW

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

NfNetlink

La révolution 2.6.14Une nouvelle infrastructure :

Nouveau système de passage de messages entre le noyauet l’espace utilisateurNouvelles bibliothèques et nouveaux outils

De nouvelles possiblités :Manipulation du suivi de connexionsDécision en espace utilisateur (améliorations de l’existant)Système d’accounting et de remonté de logs évolué

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

Modification et interrogation du suivi de connexions

L’utilitaire conntrack et libnetfilter_conntrack:Interrogation de la tableModification et suppression d’entréesÉcoute des événements

ConntrackdRéplication des connexions entre deux pare-feu en tempsréélDémons en espace utilisateurs qui échangent les données

pynetfilter_conntrack :Bibliothèque de gestion en pythonFramework de développement (fait par INL)

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

Décision en espace utilisateur

Problème des traitements en mode noyauDifficulté de gestion de la mémoireDanger d’instabilitéModification d’un traitement entraîne redémarrage de lamachine

Prendre la décision en espace utilisateur :libnetfilter_queue

Traitement complexe synchrone : snort-inlineTraitement complexe asynchrone : NuFW

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

Load balancing de liensPrincipes

Aggréger les bandes passantesRépartir les flux entre plusieurs liensDifférents modes de découpage

Par protocolesPar connexions

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

Load balancingPar protocole

PrincipeOn marque certains fluxOn change leurs routages suivant la marque

Mise en oeuvreCréation de X tables de routages (une par lien)La route par défaut est le lien sur la table du lienUtilisation de mangle pour marquer les paquetsUtilisation de tc pour spécifier la bonne table de routage

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

Load balancingPar connexion

PrincipeOn marque les paquets d’initialisation de manière ensuivant la proportion des liensOn applique la marque à tous les paquets de la connexionOn change leurs routages suivant la marque

Mise en oeuvreCréation de X tables de routages (une par lien)La route par défaut est le lien sur la table du lienUtilisation de mangle pour marquer les paquetsUtilisation de tc pour spécifier la bonne table de routage

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

Load balancingMise en oeuvre par protocole

Utilisation de CONNMARKPropagation de la marque sur l’ensemble des paquetsd’une connexionLe suivi de connexion stocke la marqueLa target CONNMARK permet de restaurer ou de sauver lamarque depuis ou dans le suivi de connexion

Utilisation de nthCréation de compteursMatch par rapport au numéro dans le compteurExemple de syntaxe :iptables -A PREROUTING -t mangle -m nth --counter 1 --every 4 --packet 1 -j MARK --set-mark 1

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

Load balancingMise en oeuvre par protocole

2 liensle premier est trois fois plus gros que le deuxièmeon attribue la marque 1 au lien 1on attribue la marque 2 au lien 2on crée un compteur de taille 4 :

1 : mark 12 : mark 23 : mark 14 : mark 1

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

Load balancingMise en oeuvre par protocole

dada

iptables -A PREROUTING -t mangle -j CONNMARK --restore-markiptables -A PREROUTING -t mangle -m mark --mark 0 -m nth --counter 1 \\--every 4 --packet 1 -j MARK --set-mark 1iptables -A PREROUTING -t mangle -m mark --mark 0 -m nth --counter 1 \\--every 4 --packet 2 -j MARK --set-mark 2iptables -A PREROUTING -t mangle -m mark --mark 0 -m nth --counter 1 \\--every 4 --packet 3 -j MARK --set-mark 1iptables -A PREROUTING -t mangle -m mark --mark 0 -m nth --counter 1 \\--every 4 --packet 4 -j MARK --set-mark 1iptables -A POSTROUTING -j CONNMARK --save-mark

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

Load balancingRoutage

ip route add default gw GW_LINK1 table LINK1ip route add default gw GW_LINK2 table LINK2ip rule add fwmark 1 lookup table LINK1ip rule add fwmark 2 lookup table LINK2

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

NuFWPare-feu authentifiant

L’utilisateur au coeur de l’entrepriseMajorité des attaques vient de l’intérieurBesoin de traçabilitéFacilité d’administration :

Association statique IP==UtilisateurDHCPMachines multi-utilisateurs

Leblond Linux en Réseau

IntroductionÉtude des protocoles et périphériques

Fonctionnalités additionnelles

Routage avancé et qualité de serviceSécurité2 cas pratiques

NuFWPare-feu authentifiant

Briser l’association IP==UtilisateurAuthentification a posterioriTCP/IP n’est pas suffisantNécessité de collaborer avec l’OS du poste client

Leblond Linux en Réseau