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