From 0091d980b3d4e8aa91049d704d582e19fbb88661 Mon Sep 17 00:00:00 2001 From: Sylvain Eliade Date: Wed, 15 May 2019 12:23:31 +0200 Subject: [PATCH] =?UTF-8?q?Cours=20h=C3=A9bergement=20web?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cesi/hebergement_web/.gitignore | 1 + cesi/hebergement_web/00-intro.md | 37 ++ cesi/hebergement_web/01-dns.md | 402 +++++++++++++ cesi/hebergement_web/02-http.md | 440 ++++++++++++++ cesi/hebergement_web/03-https.md | 174 ++++++ cesi/hebergement_web/04-dynamique.md | 271 +++++++++ cesi/hebergement_web/05-security.md | 306 ++++++++++ cesi/hebergement_web/Makefile | 11 + cesi/hebergement_web/README.md | 37 ++ cesi/hebergement_web/img/hierarchie_dns.svg | 142 +++++ cesi/hebergement_web/img/tls_handshake.gif | Bin 0 -> 19388 bytes ...RISR B4 - Hébergement Web -- remplie.docx | Bin 0 -> 220902 bytes cesi/hebergement_web/s5/default/bg-shade.png | Bin 0 -> 594 bytes cesi/hebergement_web/s5/default/bg-slide.jpg | Bin 0 -> 31239 bytes cesi/hebergement_web/s5/default/blank.gif | Bin 0 -> 49 bytes cesi/hebergement_web/s5/default/bodybg.gif | Bin 0 -> 10119 bytes cesi/hebergement_web/s5/default/framing.css | 23 + cesi/hebergement_web/s5/default/opera.css | 7 + cesi/hebergement_web/s5/default/outline.css | 15 + cesi/hebergement_web/s5/default/pretty.css | 38 ++ cesi/hebergement_web/s5/default/print.css | 1 + cesi/hebergement_web/s5/default/s5-core.css | 9 + cesi/hebergement_web/s5/default/slides.css | 5 + cesi/hebergement_web/s5/default/slides.js | 553 ++++++++++++++++++ 24 files changed, 2472 insertions(+) create mode 100644 cesi/hebergement_web/.gitignore create mode 100644 cesi/hebergement_web/00-intro.md create mode 100644 cesi/hebergement_web/01-dns.md create mode 100644 cesi/hebergement_web/02-http.md create mode 100644 cesi/hebergement_web/03-https.md create mode 100644 cesi/hebergement_web/04-dynamique.md create mode 100644 cesi/hebergement_web/05-security.md create mode 100644 cesi/hebergement_web/Makefile create mode 100644 cesi/hebergement_web/README.md create mode 100644 cesi/hebergement_web/img/hierarchie_dns.svg create mode 100644 cesi/hebergement_web/img/tls_handshake.gif create mode 100644 cesi/hebergement_web/ressources/Fiche de preparation RISR B4 - Hébergement Web -- remplie.docx create mode 100755 cesi/hebergement_web/s5/default/bg-shade.png create mode 100755 cesi/hebergement_web/s5/default/bg-slide.jpg create mode 100644 cesi/hebergement_web/s5/default/blank.gif create mode 100755 cesi/hebergement_web/s5/default/bodybg.gif create mode 100644 cesi/hebergement_web/s5/default/framing.css create mode 100644 cesi/hebergement_web/s5/default/opera.css create mode 100644 cesi/hebergement_web/s5/default/outline.css create mode 100644 cesi/hebergement_web/s5/default/pretty.css create mode 100644 cesi/hebergement_web/s5/default/print.css create mode 100644 cesi/hebergement_web/s5/default/s5-core.css create mode 100644 cesi/hebergement_web/s5/default/slides.css create mode 100644 cesi/hebergement_web/s5/default/slides.js diff --git a/cesi/hebergement_web/.gitignore b/cesi/hebergement_web/.gitignore new file mode 100644 index 0000000..0b84df0 --- /dev/null +++ b/cesi/hebergement_web/.gitignore @@ -0,0 +1 @@ +*.html \ No newline at end of file diff --git a/cesi/hebergement_web/00-intro.md b/cesi/hebergement_web/00-intro.md new file mode 100644 index 0000000..daa0684 --- /dev/null +++ b/cesi/hebergement_web/00-intro.md @@ -0,0 +1,37 @@ +% Introduction à l'hébergement Web +% Sylvain Eliade — S.C.O.P. Cadoles +% Mai 2019 + +## Introduction + +* Qui suis-je ? Développeur web depuis 2003 : agences web, Skyrock, Aéroport d'Auckland, Cadoles… / Administrateur de plusieurs serveurs web depuis 2002. +* Comment fonctionne ce cours ? Présentation d'un sujet, exercice en TP, exercices facultatifs +* Evaluation : bonne réalisation des TP. + +--- + +## Le plan c'est… + +1. DNS +2. HTTP et serveur web +3. HTTPS +4. Web dynamique et PHP +5. Sécurité du serveur web + +--- + +## Prérequis + +* VirtualBox avec une distribution Linux (Debian ou Ubuntu de préférence) +* Machine virtuelle dispo sur `https://sylvain.eliade.net/cesi/debian.ova` +* Si pas de réseau privé hôte existant, en créer un dans **Fichier > Gestionnaire de réseau hôte** +* Sélectionner le réseau privé hôte dans la config de la VM : **Mode d'accès réseau = réseau privé hôte** + +--- + +## VM Debian + +* Login : user / Mot de passe : abcd +* Pour devenir root : `sudo -i` +* Changer de répertoire : `cd /repertoire` +* Éditer un fichier `nano fichier.txt` (puis Ctrl+X pour quitter) \ No newline at end of file diff --git a/cesi/hebergement_web/01-dns.md b/cesi/hebergement_web/01-dns.md new file mode 100644 index 0000000..095f340 --- /dev/null +++ b/cesi/hebergement_web/01-dns.md @@ -0,0 +1,402 @@ +% Introduction au DNS +% Sylvain Eliade — S.C.O.P. Cadoles +% Mai 2019 + +## Introduction au DNS + +* Domain Name System +* Service de base sur Internet +* Permet d'obtenir l'adresse IP d'une machine à partir d'un nom intelligible (résolution de nom) +* Exemple : `www.cesi.fr -> 178.170.102.194` +* Sur le port 53, en UDP (+ TCP pour les réponses de plus de 512 octets) : plus rapide ! + +--- + +## Un nom DNS + +`www.cesi.fr` comporte trois parties : + +* `fr` est le TLD (Top Level Domain) +* `cesi` est le nom de domaine +* `www` est un sous-domaine + +Le FQDN (*Fully Qualified Domain Name*) est le nom intégral, suivi d'un point final (= la racine), indiquant que le nom est complet : `www.cesi.fr.` + +L'ensemble des enregistrements d'un nom de domaine s'appelle une *zone*. + +--- + +## Les TLD + +Plusieurs types : + +* pour les pays (`.fr`, `.be`, `.nz`, etc.) = ccTLD (Country-Code) +* génériques (gTLD) : `.com`, `.info`, et les nouveaux : `.paris`, `.ovh` et des centaines d'autres +* infrastructure `.arpa` : ne sert que pour les reverse DNS (trouver un nom à partir d'une IP) + +--- + +### État des TLDs + +Plus de 1500 TLD à ce jours. Expansion depuis l'ouverture à la vente des gTLD en 2012 (100.000$ pour déposer un dossier). + +TLD réservés : `.example`, `.invalid`, `.localhost`, `.test`, `.local` (multicast), `.onion` (Tor). + +Attention à ne pas utiliser des TLD perso en interne : exemple du `.dev` acheté par Google. + +--- + +## Résolution DNS + +Le DNS est un système hiérarchique. On commence par la racine (root) et on descend les niveaux. + +![](./img/hierarchie_dns.svg) + +--- + +Ainsi pour résoudre le nom `fr.wikipedia.org` on va demander : + +* aux serveur racine : quel serveur est responsable du TLD `org` ? +* au serveur responsable de `org` : qui est responsable du domaine `wikipedia.org` ? +* au serveur responsable du domaine `wikipedia.org` : quelle est l'adresse IP de `fr.wikipedia.org` ? + +On obtient enfin l'adresse IP du serveur associé à `fr.wikipedia.org`, ou si celui-ci n'existe pas, le serveur DNS renvoie `NXDOMAIN` (Non-eXistent domain). + +--- + +## Les outils d'inspection DNS + +* `host` renvoie des réponses courtes et simples. Pratique pour scripter. +* `dig` est plus complet. Mieux pour diagnostiquer des problèmes DNS. +* `nslookup` : simpliste, mais dispo sous Windows et Linux, déconseillé. + +Pour leur utilisation : `man dig` et `man host` + +``` +% host eliade.net +eliade.net has address 91.121.181.110 +eliade.net has IPv6 address 2001:41d0:1:f66e::1 +eliade.net mail is handled by 10 mail.kd2.org. +``` + +--- + +``` +% dig eliade.net +… +;; ANSWER SECTION: +eliade.net. 201 IN A 91.121.181.110 + +;; Query time: 1 msec +;; SERVER: 192.168.5.253#53(192.168.5.253) +;; WHEN: Mon May 13 10:45:34 CEST 2019 +;; MSG SIZE rcvd: 55 +``` + +Attention, par défaut les deux outils utilisent le résolveur configuré dans `/etc/resolv.conf` (ici `192.168.5.253`). Bien utiliser leurs options si on veut faire des requêtes directement sur les serveurs racine, de TLD, ou autoritaires. + +--- + +## Exemple de résolution de domaine : fr.wikipedia.org + +On peut reproduire le travail d'un résolveur avec l'outil `dig`. + +On demande au serveur racine qui est responsable pour le TLD `org` : + +```bash +% dig NS org +short +a0.org.afilias-nst.info. +c0.org.afilias-nst.info. +b0.org.afilias-nst.org. +b2.org.afilias-nst.org. +d0.org.afilias-nst.org. +a2.org.afilias-nst.info. +``` + +--- + +On sait que `a0.org.afilias-nst.info` est responsable de la zone `.org`, on va lui demander qui est responsable de la zone `wikipedia.org` + +``` +% dig wikipedia.org @a0.org.afilias-nst.info +… +wikipedia.org. 86400 IN NS ns0.wikimedia.org. +wikipedia.org. 86400 IN NS ns2.wikimedia.org. +wikipedia.org. 86400 IN NS ns1.wikimedia.org. +… +``` + +--- + +Reste plus qu'à demander au serveur responsable de `wikipedia.org` quelle est l'adresse de `fr.wikipedia.org` : + +``` +% dig fr.wikipedia.org @ns0.wikimedia.org +… +fr.wikipedia.org. 3600 IN CNAME dyna.wikimedia.org. +… +``` + +Ah c'est un `CNAME` donc un alias, vers `dyna.wikimedia.org` ! + +--- + +Donc il nous faut aller voir à quoi correspond `dyna.wikimedia.org` : + +``` +% dig dyna.wikimedia.org @ns0.wikimedia.org +… +dyna.wikimedia.org. 600 IN A 91.198.174.192 +… +``` + +Et voilà on a notre adresse IP ! + +(Ici on a pris un raccourci, normalement on aurait dû aller demander quel était le serveur responsable de `wikimedia.org` mais c'est le même que `wikipedia.org`). + +--- + +## Attention au cache ! + +Évidemment on ne va pas re-demander au serveur racine à chaque fois quels sont les serveurs responsables de chaque TLD, si on a déjà l'information, elle est mise en cache pour un certain temps, à plusieurs niveaux (application, OS, serveur DNS local, etc.). + +--- + +## Syntaxe d'enregistrement + +``` +dyna.wikimedia.org. 600 IN A 91.198.174.192 +``` + +Chaque enregistrement indique : + +* son nom (`dynam.wikimedia.org`) +* son **TTL** (Time-To-Live) : limite de temps avant qu'un résolveur ne doive aller re-demander l'enregistrement au serveur autoritaire (`600` secondes = 10 minutes) +* `IN` pour *INternet* +* le type de l'enregistrement (`A`) +* la valeur (`91.198.174.192`) + +--- + +## Types d'enregistrements + +* SOA = Infos sur le domaine (Start of Authority) +* A = Adresse IPv4 +* AAAA = Adresse IPv6 +* CNAME = Alias vers un autre nom +* MX = Serveur de mail responsable de la zone +* NS = Serveur DNS responsable de la zone +* TXT = Commentaire + +Attention : le CNAME ne peut pas être utilisé pour un nom de domaine, seulement pour un sous-domaine ! (car il doit être le seul enregistrement !) + +--- + +## Priorité d'enregistrements + +Les enregistrements de type `MX` permettent de spécifier la priorité de chaque enregistrement : + +``` +% dig MX fastmail.fm +short +20 in2-smtp.messagingengine.com. +10 in1-smtp.messagingengine.com. +``` + +Ainsi ici les serveurs de mail vont essayer `in1-smtp.messagingengine.com` en premier, et s'il ne répond pas, ils essaieront `in2-smtp.messagingengine.com`. + +--- + +## La syntaxe du SOA + +Le SOA est l'enregistrement le plus important avec NS. Il a une syntaxe spécifique : `MNAME RNAME SERIAL REFRESH RETRY EXPIRE TTL` + +* MNAME = adresse du serveur DNS primaire (Master) +* RNAME = adresse email du Responsable (en remplaçant le `@` par un point `.`) +* SERIAL = numéro de dernière modification de la zone, doit être incrémenté à chaque modification de la zone (en général on utilise la date du jour + un nombre qui s'incrémente). C'est ce qui indique aux serveurs secondaires qu'ils doivent + +--- + +* REFRESH = nombre de secondes avant que les serveurs secondaires ne doivent aller re-vérifier si le serial a changé. En général c'est 86400 (24 heures). +* RETRY = nombre de secondes avant que les secondaires ne relancent une requête si le primaire ne répond pas (générallement 7200 = 2 heures) +* EXPIRE = nombre de secondes avant que les secondaires doivent arrêter de relayer la zone si le primaire ne répond pas (en général 1000 heures = 41,6 jours) +* TTL = Time To Live = nombre de secondes avant qu'un résolveur doive ré-essayer si le serveur a répondu `NXDOMAIN` + +Exemple pour `octopuce.fr` : + +``` +ubal.octopuce.fr. support.octopuce.fr. + 2019051305 21600 3600 604800 3600 +``` + +--- + +## Les différents types de serveurs DNS + +* Serveur racine : 13 serveurs (13 lettres) en Anycast (= 13 adresses IP, mais 600+ serveurs physiques répartis dans le monde), indique le serveur autoritaire d'un TLD +* Serveur responsable de TLD : serveur qui indique le serveur autoritaire d'un nom de domaine +* Serveur autoritaire de nom de domaine +* Serveur récursif : en général celui de votre FAI, ou de votre réseau local, c'est lui qui va faire les requêtes vers les serveurs racine, de TLD et autoritaire et renvoyer directement la réponse finale au client + +--- + +## Le serveur autoritaire + +C'est celui qu'on est susceptible de mettre en place en tant que sysadmin, il répond aux requêtes pour un ou plusieurs domaines particuliers. + +* C'est lui qui fait autorité sur un/des domaines (`AUTHORITY`) +* Son autorité ne vaut rien si le serveur du TLD n'indique pas ce serveur comme étant responsable du domaine + +Donc bien vérifier auprès du registrar (auquel vous avez payé le nom de domaine), que le domaine est bien configuré. + +--- + +## Serveur autoritaire primaire et secondaire + +Il est possible de n'avoir qu'un seul serveur autoritaire pour un domaine, mais si celui-ci devient injoignable, tous vos noms de domaines sont aussi injoignables. En général on a donc un serveur primaire et un ou plusieurs serveurs secondaires. + +Les serveurs secondaires enregistrent une copie de la zone depuis le serveur primaire. Pour faire cette copie ils envoient une requête `AXFR` au serveur primaire qui leur renvoie tous les enregistrements de la zone. + +Les clients eux iront demander à n'importe quel serveur listé comme `NS` pour la zone, au hasard, qu'il soit primaire ou secondaire. + +--- + +## Notification des serveurs secondaires + +Il existe deux manières pour un serveur secondaire de savoir s'il a besoin de mettre à jour une zone : + +* le serveur primaire notifie les serveurs secondaires (message `NOTIFY`) +* les secondaires vont demander le `SOA` toutes les *x* secondes (spécifié dans le paramètre `REFRESH` du `SOA`), et regarder si le `SERIAL` du `SOA` a changé depuis la dernière fois + +De nos jours on utilise plutôt le `NOTIFY` car ça permet d'avoir une répercussion immédiate des changements. + +--- + +## Le serveur récursif (résolveur) + +C'est celui à qui on parle en général ! (enfin à qui son OS et ses applications parlent) + +Il enregistre dans son cache les réponses qu'il a faites (en fonction ) + + + +--- + +## Exemple pratique : mise en place d'un nom de domaine + +* Achat du domaine `miammiammiam.com` auprès d'un registrar (par exemple OVH) +* Configuration du domaine chez le registrar pour pointer sur nos serveurs DNS : `ns1.superboite.fr` et `ns2.superboite.fr` +* Installation d'un serveur DNS sur nos deux serveurs NS1 et NS2 +* Configuration de notre zone `miammiammiam.com` sur NS1 en *master*, et configuration de NS2 en *secondaire* +* Vérification du fonctionnement : le SOA renvoyé par NS1 doit être le même que celui envoyé par NS2, et le serveur DNS de `.fr` doit bien indiquer nos deux serveurs DNS + +--- + +## Problèmes courants + +* Mauvais serveur DNS indiqué auprès du registrar +* Problème de synchronisation entre le DNS primaire et un ou plusieurs DNS secondaires (le serial du SOA est-il identique ?) +* Problème de cache dans le résolveur de l'entreprise + +Le résolveur envoie ses requêtes au hasard sur le DNS primaire ou l'un des DNS secondaires ! Il n'envoie pas déjà sur le primaire et ensuite sur les secondaires, c'est pas comme ça que ça marche ! + +--- + +## Serveurs DNS + +* Bind (le plus répandu) +* PowerDNS (très puissant et versatile) + +Les deux permettent de faire résolveur et/ou serveur autoritaire. Pour 90% des cas, Bind suffit amplement. + +Il est conseillé de séparer les deux fonctions toutefois. Je conseille de mettre un serveur résolveur qui n'écoute qu'en local sur `127.0.0.1` (ou sur une IP du réseau interne), et le serveur autoritaire sur l'IP publique (accessible depuis Internet). Perso je met un bind en local, et un PowerDNS (avec MySQL) en public. + +--- + +## Le futur + +DNS n'est pas très sécurisé… Plusieurs solutions sont disponibles : + +* DNSSEC : signature des zones, permet de valider que la réponse DNS n'a pas été modifiée par le résolveur en cours de route. N'empêche pas d'espionner les requêtes et réponses DNS. +* DNS over TLS, DNS over HTTPS : chiffrement de la connexion entre le client et le résolveur +* DNSCrypt : chiffrement et signature entre résolveur et client + +DNSSEC peut être combiné avec DoT, DoH et DNSCrypt. + +Comparaison DoH, DoT et DNSCrypt : [https://dnscrypt.info/faq/](https://dnscrypt.info/faq/) + +--- + +## Aller plus loin + +* [Problèmes courants de mauvaise configuration DNS](https://www.howtoforge.com/troubleshooting-common-dns-misconfiguration-errors) + +--- + +## Exercice 1 + +Identifier le parcours DNS d'un résolveur récursif pour `www.cesi.fr` avec `dig`. (Copier/coller chaque étape) + +--- + +## Exercice 2 + +Identifier les adresses IP du serveur de mail le plus prioritaire pour `gmail.com`. + +--- + +## Exercice 3 + +J'ai créé un nouveau site web sur `dns1.sylvain.eliade.net` mais il ne marche pas. + +Identifier la ou les erreurs commises et indiquer une solution. + +--- + +## Exercice 4 + +Identifier le reverse DNS de l'adresse IP correspondant au serveur de `www.cesi.fr` + +--- + +## Exercice 5 (facultatif) + +Créer une zone Bind pour un domaine fictif avec un A et un AAAA sur le domaine lui-même, deux serveurs DNS, un SOA valide, deux serveurs de mail, et un CNAME de www qui redirige sur le domaine lui-même. Exemple : + +``` +$TTL 3600 +@ IN SOA ns1.domain.tld. hostmaster.domain.tld. ( + 2017090401 ; SERIAL (DATE+NUMBER) + 86400 ; REFRESH (SEC) + 3600 ; RETRY (SEC) + 3600000 ; EXPIRE (SEC) + 300 ) ; MINIMUM (SEC) + +@ IN NS ns1.domain.tld. +@ IN NS ns2.domain.tld. + +ns1 IN A 10.1.2.2 +ns2 IN A 10.1.2.3 + +@ IN A 127.0.0.1 +@ IN AAAA ::1 + +@ IN MX 10 mx1.domain.tld. +@ IN MX 20 mx2.domain.tld. + +mx1 IN A 10.1.1.1 +mx2 IN A 10.1.1.2 + +www IN CNAME domain.tld. +``` + +Les point-virgules indiquent les commentaires + +## Exercice 6 (facultatif) + +Installer bind (`apt install bind9`). Par défaut il est configuré comme résolveur récursif local. L'utiliser pour faire des requêtes locales, par exemple : `dig www.cesi.fr @localhost` + +## Exercice 7 (facultatif) + +Mettre en place la zone bind créée à l'exercice 6 dans l'installation du Bind local. Un tuto utile : [https://www.adrienfuret.fr/2017/09/04/debian-dns-bind/](https://www.adrienfuret.fr/2017/09/04/debian-dns-bind/) + +Tester le fonctionnement avec dig : `dig domain.tld @localhost` \ No newline at end of file diff --git a/cesi/hebergement_web/02-http.md b/cesi/hebergement_web/02-http.md new file mode 100644 index 0000000..5387985 --- /dev/null +++ b/cesi/hebergement_web/02-http.md @@ -0,0 +1,440 @@ +% Introduction au HTTP +% Sylvain Eliade — S.C.O.P. Cadoles +% Mai 2019 + +## Introduction au HTTP + +* HyperText Transport Protocol +* Protocole texte +* Client-serveur +* En général sur TCP, port 80 +* Stateless, aucun état n'est conservé entre les requêtes +* Très simple +* Requêtes **toujours** initiées par le client + +--- + +## À quoi ça ressemble ? + +Un simple `telnet` permet de faire des requêtes HTTP ! + +``` +% telnet sylvain.eliade.net 80 +Trying 91.121.181.110... +Connected to eliade.net. +Escape character is '^]'. +GET /resume/ HTTP/1.1 +Host: sylvain.eliade.net + +``` + +--- + +Le serveur nous répond : + +``` +HTTP/1.1 200 OK +Date: Mon, 13 May 2019 10:02:02 GMT +Server: Apache +Last-Modified: Fri, 19 Apr 2019 07:36:32 GMT +ETag: "2abb-586dd2d7c21de" +Accept-Ranges: bytes +Content-Length: 10939 +Vary: Accept-Encoding +Content-Type: text/html +Connection: close + + + +… +``` + +--- + +Un outil plus pratique est quand même `curl` ! + +``` +% curl -v http://sylvain.eliade.net/resume/ +``` + +--- + +## Structure d'une requête + +Première ligne : `MÉTHODE RESSOURCE PROTOCOLE` + +* Méthode (ou verbe) HTTP = action que l'on souhaite utiliser (`GET`, `DELETE`, `POST`, etc.) +* Ressource sur laquelle on souhaite effectuer l'action +* Version du protocole : `HTTP/1.0` ou `HTTP/1.1` (il existe encore des clients HTTP/0.9 mais bon…) + +Lignes suivantes : les entêtes. Puis : une ligne vide. + +Puis éventuellement (méthodes `POST`, `PUT`, `PATCH`, etc.) : corps (contenu) de la requête. + +--- + +### Méthodes HTTP + +* GET : la plus courante, renvoie la ressource demandée (exemple : visualiser une page web) +* POST : envoyer des données liées à la ressource (exemple : envoyer un formulaire web) + +Les méthodes suivantes sont rarements utilisées par les navigateurs mais souvent dans les API : + +* HEAD : obtenir des infos sur la ressource. En pratique c'est souvent pareil que GET, mais ça ne renvoie que les entêtes et pas le corps. +* PUT : ajouter / remplacer une ressource +* OPTIONS : savoir quelles sont les méthodes supportées par le serveur pour une ressource + +--- + +## Structure d'une réponse + +Première ligne : `PROTOCOLE CODE MESSAGE` + +* Code = code de réponse du serveur (200 = OK, 404 = Not Found, etc.) +* Message = message de réponse associé au code + +Lignes suivantes : les entêtes de réponse. + +Puis : une ligne vide. + +Puis éventuellement (tout le temps sauf avec requête `HEAD`) : corps de la réponse. + +--- + +### Codes de réponses HTTP + +Le premier chiffre indique le type de code : + +* 1xx = requête reçue mais son exécution n'est pas terminée +* 2xx = succès +* 3xx = redirection +* 4xx = erreur du client +* 5xx = erreur du serveur + +--- + +### Codes courants + +* 200 OK = la plus courante +* 301 Moved Permanently = ressource déplacée définitivement (voir l'entête `Location` pour la nouvelle adresse) +* 302 Found = ressource déplacée temporairement +* 400 Bad Request = erreur dans la requête du client +* 401 Unauthorized = le client n'a pas accès, il lui faut s'authentifier +* 403 Forbidden = accès refusé (par exemple mauvais login/mot de passe) +* 404 Not Found = ressource non trouvée +* 500 Internal Server Error +* 503 Service Unavailable = serveur surchargé + +--- + +## Entêtes + +``` +Host: sylvain.eliade.net +User-Agent: telnet/1.0 +``` + +Chaque entête est une clé (en général avec une majuscule au début de chaque mot, les mots étant séparés par des tirets), suivi de deux points `:`, d'un espace et de la valeur de l'entête. + +Liste des entêtes : [https://en.wikipedia.org/wiki/List_of_HTTP_header_fields](https://en.wikipedia.org/wiki/List_of_HTTP_header_fields) + +--- + +### Entêtes courants pour les requêtes + +* `Host` : pour indiquer le nom de domaine que l'on essaye d'atteindre (car le serveur HTTP ne sais pas quelle requête DNS on a fait pour le contacter) +* `Accept-Language` : indique les langues préférées du client (`fr-BE, fr, en-AU, en`) +* `Accept` : les formats de fichier gérés par le client (`text/html, image/jpeg…`) +* `Connection` : pour garder la connexion TCP ouverte pour faire plusieurs requêtes de suite +* `User-Agent` : nom du client utilisé +* `Cookie` : contenu d'un cookie +* `Authorization` : identifiants de connexion HTTP (accès par mot de passe) + +--- + +### Entêtes courants pour les réponses + +* `Connection` : état de la connexion TCP +* `Date` : date de réponse +* `Content-Type` : type du contenu (`text/html; charset=utf-8`) +* `Location` : nouvelle adresse du contenu quand il a changé d'adresse +* `Server` : nom du serveur +* `Set-Cookie` : le client doit enregistrer ce cookie +* `WWW-Authenticate` : demande d'authentification + +--- + +## Aparté : les URLs + +Uniform Resource Locator (interchangeable avec URI, Uniform Resource Identifier) + +`protocol://[user[:password]@]host[:port]path[?query][#fragment]` + +Entre crochets les parties facultatives. + +--- + +* protocol : http ou https +* user[:password] : nom d'utilisateur (et éventuellement mot de passe), pour l'authentification HTTP +* host : nom de domaine (ou adresse IP, pour une IPv6 elle doit être entre crochets, exemple : `http://[::1]/page`) +* port : numéro de port optionnel +* path : chemin de la ressource +* query (ou query string) : liste de clés et valeurs, séparées par des `&` +* fragment : identifiant d'une sous-ressource à l'intérieur de la ressource (en pratique, utilisé pour se rendre à une point particulier de la page web, ou en javascript) + +--- + +`https://catalogue.cesi.fr/recherche/?domaine=informatique&niveau=bac4#type` + +* protocol: `https` +* host: `catalogue.cesi.fr` +* path: `/recherche/` +* query: `domaine=informatique&niveau=bac4` +* fragment: `type` + +--- + +## Les serveurs HTTP les plus courants + +* Apache (29% des serveurs) +* nginx (29%) : plus rapide qu'Apache sur les fichiers statiques, même performance sur le contenu dynamique (PHP) +* Microsoft IIS (19%) + +Apache est le plus courant, historiquement le plus utilisé, mais on trouve de plus en plus du nginx aussi. La configuration de nginx est un peu plus lisible que celle d'Apache. + +--- + +## Apache et ses MPM + +Apache possède plusieurs MPM (multi-processing module) qui ont des comportements différents : + +* prefork : moins performant (sans threads), chaque processus ne peut traiter qu'une seule requête à la fois +* worker ou event : plus performant, chaque processus a plusieurs threads, et peut donc traiter plusieurs requêtes à la fois + +Quel MPM choisir ? En production on utilisera *worker* ou *event*, car plus rapides, mais pour tester des trucs rapidement avec PHP on peut utiliser *prefork* qui est plus simple à metter en place. + +--- + +## Un mot sur l'utilisateur www-data + +Par défaut Apache est lancé avec l'utilisateur `www-data`. Ça va si on n'a qu'un seul site hébergé sur la machine. + +Si on veut héberger plusieurs sites, il vaut mieux pouvoir avoir un utilisateur par site, pour pas qu'un site puisse aller modifier les fichiers d'un autre site. + +Pour cela une version de *prefork* appelée **ITK** (`apt install libapache2-mpm-itk`) permet d'avoir des processus Apache qui se lancent avec les droits d'utilisateurs différents. + +--- + +## Installation Apache sous Debian + +* Installer le serveur : `apt install apache2` +* Statut du serveur : `apache2ctl status` (permet de voir les requêtes traitées en ce moment, le nombre de *workers* etc.) +* Tester si la config n'a pas d'erreur : `apache2ctl configtest` +* Recharger la configuration après modification : `apache2ctl graceful` + +--- + +## Gérer les modules Apache sous Debian + +* Activer un module : `a2enmod NOM_DU_MODULE` (exemple : `a2enmod rewrite`) +* L'outil préviendra s'il y a un conflit entre deux modules incompatibles :) +* Désactiver : `a2dismod NOM_DU_MODULE` +* Même chose pour les MPM : `a2dismod mpm_prefork` puis `a2enmod mpm_worker` + +Astuce : lancer `a2enmod` sans argument liste les modules disponibles. + +La configuration du module est dans le fichier `/etc/apache2/mods-available/NOM_DU_MODULE.conf` + +--- + +## Configuration Apache + +Syntaxe simple. Ce n'est pas du XML ! + +``` +Listen 80 +KeepAlive Off # Ne pas autoriser les connexions persistantes + + + Require all granted + Options -Indexes + +``` + +--- + +## VirtualHost + +Apache permet d'héberger plusieurs sites sur le même serveur avec des hôtes virtuels. L'hôte est reconnu avec l'entête "Host". Pour cela on utilise des hôtes virtuels. + +``` + + ServerName cadoles.com + DocumentRoot /var/www/monsite + + + + ServerName mail.cadoles.com + DocumentRoot /var/www/roundcube + +``` + +Le premier vhost de la liste sera utilisé comme vhost "par défaut" si aucun vhost n'est trouvé pour l'hôte demandé. + +--- + +### VirtualHost dans Debian/Ubuntu + +Les vhost disponibles sont séparés par fichiers dans `/etc/apache2/sites-available`, triés par ordre alpha-numérique. + +Ensuite : `a2ensite nomduvhost` pour activer, ou `a2dissite nomduvhost` pour désactiver. + +Ne pas oublier de tester la config et recharger ensuite ! + +Astuce : lancer `a2ensite` ou `a2dissite` sans argument liste les sites disponibles. + +--- + +## Fichiers .htaccess + +Apache permet de configurer des options pour un répertoire donné à l'aide d'un fichier `.htaccess` (en UNIX, les fichiers avec un point au début sont des fichiers "cachés"). + +C'est pratique, mais attention, cela veut dire qu'Apache sera beaucoup plus lent, car il va chercher ce fichier dans tous les sous-répertoires à chaque requête ! + +Donc il est recommandé de désactiver ce comportement par défaut, et de ne l'activer que pour les sites qui en ont besoin. Tant que possible il vaut mieux mettre toute la configuration dans les fichiers de configuration Apache du vhost. + +--- + +``` + + AllowOverride None + + + + AllowOverride All + +``` + +[AllowOverride](https://httpd.apache.org/docs/2.4/mod/core.html#allowoverride) permet de configurer le type de directive autorisée dans le fichier `.htaccess`. + +None = aucune directive autorisée = Apache ne va même pas lire les fichier `.htaccess` + +--- + + +## Restriction d'accès + +Un exemple courant de `.htaccess` est la restriction d'accès par mot de passe. Pour cela il faut dire à Apache de n'autoriser que les utilisateurs connectés avec `Require valid-user` : + +``` +Require valid-user +AuthType basic +AuthName "Accès restreint" +AuthUserFile /var/www/monsite/secret/.htpasswd +``` + +--- + +### Fichier htpasswd + +Pour créer le fichier `.htpasswd` qui contiendra la liste de nos utilisateurs autorisés et leurs mots de passe nous devons utiliser l'outil `htpasswd`. + +A installer avec `apt install apache2-utils`. + +--- + +* Créer le fichier avec `htpasswd -c /var/www/monsite/secret/.htpasswd NOM_UTILISATEUR` (`-c` comme **Création** du fichier) +* L'outil demande de taper, puis re-taper le mot de passe +* Pour ajouter un utilisateur ou modifier son mot de passe, simplement : `htpasswd /var/www/monsite/secret/.htpasswd NOM_UTILISATEUR` (sans le `-c` donc) + +``` +sylvain:$apr1$vfxnPOnt$gI7MkAizYirxT/CrUfCqU0 +``` + +--- + +## Exercice 1 + +Faire une requête avec `curl` sur `http://www.cesi.fr/`. Quel est le code HTTP retourné ? Quel est le serveur web utilisé ? + +--- + +## Exercice 2 + +Installation de Apache2. Faire une requête sur `http://localhost/` pour voir si ça fonctionne. + +Puis essayer d'accéder à l'IP de la VM depuis un navigateur de la machine hôte pour voir si ça fonctionne bien. + +(Pour obtenir l'IP : `ip addr` depuis la console) + +--- + +## Exercice 3 + +Prérequis : créer un répertoire `/var/www/cesi.test` et un fichier `/var/www/cesi.test/index.html` avec : + +``` +mkdir /var/www/cesi.test +echo "Hello monde !" > /var/www/cesi.test/index.html +``` + +Exercice : Mettre en place un VirtualHost `cesi.test` proprement, l'activer. + +Pour vérifier son fonctionnement, ajouter la ligne suivante dans `/etc/hosts` : `127.0.0.1 cesi.test`. Puis faire `curl http://cesi.test/`, le message "Hello monde" devrait apparaître. + +--- + +## Exercice 4 + +Prérequis : créer un répertoire `/var/www/cesi.test/secret` : `mkdir /var/www/cesi.test/secret` + +Désactiver les vhosts existants, sauf celui de `cesi.test`. Recharger apache. + +Mettre en place une protection par mot de passe du répertoire `/var/www/cesi.test/secret` avec un fichier `.htaccess`. + +Vérifier que ça marche correctement en utilisant le navigateur de la machine hôte sur l'IP de la VM. + +--- + +## Exercice 5 (facultatif) + +Tester la charge du serveur avec ApacheBench : + +* installer `ab` : `apt install apache2-utils` +* dans une première console, lancer `watch -d -n 0.1 sudo apache2ctl status` +* lancer dans une seconde console `ab -n 5000 -c 100 http://localhost/` (va lancer 5000 requêtes, par vagues de 100 en même temps) +* observer l'évolution du nombre de workers, et de la charger serveur (*Server load*) + +--- + +## Exercice 6 (facultatif) + +Changer de MPM, passer de *prefork* (celui utilisé par défaut normalement) à *event*. + +Répéter le test de l'exercice 5 et observer les différences. + +--- + +## Exercice 7 (facultatif) + +On nous demande de faire de la réécriture d'adresse. + +Faire en sorte que `http://cesi.test/etu` redirige vers `http://localhost/infos-etudiant` en utilisant la directive `Redirect` dans le vhost créé précédemment (voir la [documentation de Redirect](https://httpd.apache.org/docs/2.4/mod/mod_alias.html#redirect) pour un exemple). + +Pour cela il faudra activer le module `alias`. + +Il est courant d'utiliser `RewriteRule` pour faire cela (module `rewrite`), mais il est plus lent et complexe ([Documentation](https://httpd.apache.org/docs/2.4/rewrite/intro.html)), mais permet plus de possibilités. + +--- + +## Exercice 8 (facultatif) + +Installer `nginx` et créer un virtualhost `cesi.test`. + +Un exemple de configuration de virtualhost est dispo dans `/etc/nginx/sites-available/default`. + +Pour créer le vhost, créer un fichier `/etc/nginx/sites-available/cesi.test`. + +Pour l'activer exécuter `ln -s /etc/nginx/sites-available/cesi.test /etc/nginx/sites-enabled/cesi.test`, cela va créer un lien symbolique (pas de commande comme avec Apache type `a2ensite`). + +Puis `nginx -t` pour vérifier la configuration et `service nginx reload` pour recharger. \ No newline at end of file diff --git a/cesi/hebergement_web/03-https.md b/cesi/hebergement_web/03-https.md new file mode 100644 index 0000000..56eb8cb --- /dev/null +++ b/cesi/hebergement_web/03-https.md @@ -0,0 +1,174 @@ +% Introduction au HTTPS +% Sylvain Eliade — S.C.O.P. Cadoles +% Mai 2019 + +## Introduction au HTTPS + +* HTTP encapsulé dans une connexion chiffrée +* Historiquement avec le protocole SSL +* Aujourd'hui c'est TLS + +--- + +## Chiffrement à clé publique et privée + +* La clé publique est distribuée (non secrète) et ne sert qu'à chiffrer +* La clé privée est secrète et sert à déchiffrer + +Le serveur possède une clé privée (secrète) et une clé publique (appelée certificat), signée par une *autorité*. + +--- + +## Certificats + +* Prouve l'identité du propriétaire du certificat +* Doivent être signés par une autorité reconnue (ou plusieurs) +* Peuvent être signés par soi-même (*self signed*) mais c'est relou (difficile à utiliser), et du coup ça ne prouve pas grand chose + +--- + +## Autorités + +* Système hiérarchique (une autorité peut signer des certificats d'une sous-autorité, etc.) : on parle de *chaîne* de certificats +* Combine des acteurs publics (états, ministères, etc.) et privés (entreprises) +* On doit avoir confiance envers ces autorités +* Chaque OS a un « app store » de certificats d'autorités (paquet `ca-certificates` dans Debian/Ubuntu) +* Système centralisé, moyennement sûr (nombreux cas d'autorités qui font n'importe quoi) +* Un peu mieux depuis Let's Encrypt + +--- + +## Phase de négociation (handshake) TLS + +![](./img/tls_handshake.gif) + +--- + +En simplifié : + +1. Le client se connecte au serveur, lui indique les protocoles cryptographiques qu'il supporte (cipher suite) +2. Le serveur lui répond, en indiquant le protocole choisi, ainsi que son certificat public (signé par une autorité). +3. Le client vérifie le certificat. +4. Échange de clé entre le client et le serveur. Cette clé est spécifique à cette session entre client et serveur. + +Ensuite le client et le serveur communiquent en HTTP entre eux, mais tout est chiffré à l'aide des clés échangées. + +--- + +La phase de négociation ne se reproduit pas à chaque requête HTTP : normalement la connexion TLS reste ouverte une ou deux minutes, permettant de faire passer d'autres requêtes. + +De même, les étapes 1 à 3 peuvent être ignorées quand le serveur et le client se connaissent déjà et ont encore les infos de chacun en cache. + +--- + +## Vérification OCSP + +A l'étape 3, le client peut aller vérifier auprès d'un serveur OCSP (*Online Certificate Status Protocol*) que le certificat du serveur est bien valide. + +De nos jours, le serveur peut s'en charger lui-même (*OCSP stapling*), il envoie une certification OCSP (avec la date) au client : évite un aller-retour du client avec le serveur OCSP. + +--- + +## SNI (Server Name Indication) + +Rappel du HTTP : le nom d'hôte demandé est transmis dans l'entête `Host` de la requête HTTP. + +Donc : l'hôte demandé est dans la requête chiffrée, AVANT que le serveur web ne puisse savoir quel certificat utiliser pour le HTTPS ! + +Solution : le SNI ! + +--- + +* Le nom d'hôte demandé est inscrit dans la connexion TLS par le client +* Très bien supporté de nos jours (si pas supporté : utilisation du vhost par défaut) +* Inconvénient : le nom n'est pas chiffré (possibilité d'interception pour voir quel site vous visitez) + +--- + +## Configuration Apache HTTPS + +Attention : il faut créer un vhost différent, car le port est différent. + +``` + + ServerName cesi.test + SSLEngine on + SSLCertificateFile "/var/www/certs/cesi.cert" + SSLCertificateKeyFile "/var/www/certs/cesi.private" + +``` + +Si on a un site en HTTPS il est recommandé que la version HTTP ne fasse que rediriger vers le site en HTTPS (plus simple niveau config serveur). + +--- + +## Let's Encrypt + +* Autorité de certification à but non lucratif qui délivre des certificats signés gratuits. +* Avant LE, il fallait payer (en général cher) pour avoir un certificat signé par une autorité ! +* Inconvénient : durée du certificat limitée à 90 jours. +* Inconvénient : ne marche pas pour les domaines privés (réseau privé). +* Plusieurs manières de valider qu'on est bien propriétaire d'un domaine : HTTP ou DNS +* Plusieurs clients : certbot, dehydrated, etc. + +--- + +## Let's Encrypt : certbot + +* `# apt install certbot python-certbot-apache` +* `# certbot --apache` + +C'est tout, il va poser des questions et va tout configurer à votre place… Mais des fois ça ne marche pas trop du coup quand notre configuration est un peu complexe. + +--- + +## Let's Encrypt : [dehydrated](https://github.com/lukas2511/dehydrated) + +Plus léger que certbot, un peu plus manuel. + +* `# apt install dehydrated dehydrated-apache2` +* Ajouter les noms de domaine dans le fichier `/etc/dehydrated/domains.txt` (un par ligne) +* Lancer `dehydrated -c` +* Configurer son vhost : + +``` +SSLCertificateFile /var/lib/dehydrated/certs/example.org/fullchain.pem +SSLCertificateKeyFile /var/lib/dehydrated/certs/example.org/privkey.pem +``` + +Tester la config et recharger Apache. + +--- + +## Attention ! + +Dans certains cas, `apache2ctl configtest` ne renvoie pas d'erreur s'il y a un problème au niveau des certificats, mais ensuite le `reload` (ou `graceful`) plantera ! + +Exemple : si on utilise `chain.pem` de Let's encrypt (qui ne contient que la chaîne de certification, et pas le certificat lui-même) à la place de `fullchain.pem`. + +Solution : vérifier `/var/log/apache2/error.log` après un reload si on a modifié des trucs dans la config SSL ! + +--- + +## Exercice 1 + +Installer `dehydrated` et le configurer pour le domaine `cesi.sylvain.eliade.net`. Lancer dehydrated. + +Il va tenter de vérifier l'appartenance du domaine et échouer (logique). A la place, prendre les fichiers `.pem` fournis et les recopier dans le bon répertoire. + +Configurer un vhost Apache pour ce domaine, utilisant les certificats fournis. Ne pas oublier d'activer `mod_ssl` : `a2enmod ssl` et redémarrer Apache. + +Dans `/etc/hosts` inscrire une ligne avec `127.0.0.1 cesi.sylvain.eliade.net`. + +Tester la config avec curl, et si possible le navigateur de la machine hôte. + +## Exercice 2 (facultatif) + +Générer un certificat auto-signé : + +``` +# mkdir /etc/ssl/localcerts/ +# openssl req -new -x509 -days 365 -nodes -out /etc/ssl/localcerts/apache.pem -keyout /etc/ssl/localcerts/apache.key +``` + +Le mettre en place dans Apache, et vérifier que ça fonctionne avec un navigateur (qui affichera un message d'avertissement). \ No newline at end of file diff --git a/cesi/hebergement_web/04-dynamique.md b/cesi/hebergement_web/04-dynamique.md new file mode 100644 index 0000000..0ac51b7 --- /dev/null +++ b/cesi/hebergement_web/04-dynamique.md @@ -0,0 +1,271 @@ +% Introduction au web dynamique +% Sylvain Eliade — S.C.O.P. Cadoles + +## Introduction web dynamique + +* Dans le web *statique*, le serveur web ne fait que renvoyer le contenu d'un fichier existant +* Dans le web *dynamique*, le serveur web délègue la génération du contenu à un sous-programme +* Ce sous-programme peut réagir aux demandes de l'utilisateur, retourner des données d'une base de données, etc. + +--- + +## Script CGI + +À l'origine, le serveur web interagissait avec des scripts CGI (Common Gateway Interface) : il exécutait un programme, auquel il passait les données de la requête HTTP, et retournait ce que le script lui renvoyait. + +--- + +Configuration Apache : + +``` + + Options +ExecCGI + AddHandler cgi-script .cgi + +``` + +--- + +Exemple de script basique `date.cgi` + +``` +#!/bin/bash + +echo "Content-type: text/html" +echo "" + +echo "Nous sommes le " +date +``` + +Résultat : + +``` +Nous sommes le mercredi 15 mai 2019, 14:38:57 (UTC+0200) +``` + +--- + +Exemple d'interaction avec la requête `methode.cgi` : + +``` +#!/bin/bash + +echo "Content-type: text/html" +echo "" + +echo "Méthode de requête utilisée : " +echo "$REQUEST_METHOD" +``` + +Résultat : + +``` +Méthode de requête utilisée : GET +``` + +--- + +Avantage : très simple ! + +Inconvénient : peu performant, chaque requête crée un nouveau processus qui est détruit à la fin de la requête. + +--- + +## FastCGI + +* Un second serveur (FastCGI), qui communique avec le serveur web +* Il garde le processus lancé en permanence +* Il reçoit les requêtes du serveur web +* Il lui envoie des requêtes et reçoit des réponses +* Il renvoie les réponses au serveur web + +Ainsi il n'y a plus de création/destruction de processus, plus rapide. De plus le serveur FastCGI peut avoir plusieurs processus lancés en même temps, et répartir les requêtes. C'est un modèle similaire aux *workers* Apache ! + +--- + +## Présentation de PHP + +* Langage de programmation +* Créé en 1994 +* Originellement conçu comme proche de Perl et C +* Pour faire des pages web dynamiques (en CGI !) +* Mal considéré (à tort) +* Utilisé sur 79% des sites web (WordPress sur 32% des sites !) + +--- + +### Les versions + +* PHP 7 est 2-3 fois plus rapide que PHP 5.6 +* PHP 5 n'est plus supporté (plus de mises à jour de sécurité), PHP 7.0 non plus ! + +Les versions de PHP sont supportées environ 3 ans (mais les distributions peuvent allonger ce délai en backportant les correctifs). + +Moralité : beaucoup de boîtes sont à la ramasse, et se traînent des PHP qui ne sont pas à jour… Et ça peut durer longtemps. + +--- + +### A quoi ça ressemble ? + +``` + +

My favorite unicorn color is

+… +``` + +## Installation et configuration de PHP + +Il existe plusieurs versions de PHP : + +* En ligne de commande : CLI (`apt install php-cli`), utile pour lancer des scripts, tester rapidement avec le serveur web intégré… +* mod_php pour Apache (`apt install libapache2-mod-php`) +* FPM (FastCGI Process Manager) pour serveur web (`apt install php-fpm`) + +--- + +### PHP CLI + +Cette version en ligne de commande permet de lancer un script (`php monscript.php`) ou un serveur web de test pour essayer un site, etc. (`php -S localhost:8080 /var/www/monsite` et le site sera joignable sur http://localhost:8080/). + +Le serveur web ne peut traiter qu'une seule requête en même temps… pas très indiqué pour un vrai site web ! + +--- + +### mod_php + +* Très simple à mettre en place +* Nécessite mpm-prefork = pas très rapide +* Convient pour des petits sites + +Rien à configurer dans Apache : les fichiers `.php` seront exécutés directement. + +--- + +### Rappel sur MPM-ITK + +Pour configurer MPM-ITK sur un vhost pour qu'il se limite à utilisateur : + +``` + + AssignUserId USER GROUP + +``` + +--- + +### FPM + +* Basé sur FastCGI +* Crée un serveur d'application PHP +* Un peu de configuration à faire +* Permet de créer plusieurs *pools* pour des sites/utilisateurs différents +* Rapide ! + +--- + +## Configuration FPM + +Création de pool dans `/etc/php/7.0/fpm/pool.d/cesi.conf` : + +``` +[cesi] +… +user = cesi +group = cesi +… +listen = /run/php/php7.0-fpm-cesi.sock +``` + +--- + +Configuration du VHost : + +``` + + SetHandler "proxy:unix:/run/php/php7.0-fpm-cesi.sock" + +``` + +--- + +## Exercice 1 + +Faire un script PHP qui va afficher la date du jour. + +L'exécuter avec `php` en ligne de commande. + +--- + +## Exercice 2 + +Installer `mod_php`. + +Déplacer le script créé dans un répertoire d'un vhost existant. + +Vérifier sa bonne exécution avec curl, ou un navigateur. + +--- + +## Exercice 3 + +Prérequis : avoir au moins deux vhosts actifs différents. + +* Créer un utilisateur par vhost avec `useradd -G www-data USER` +* Installer et activer le MPM ITK de Apache. +* Pour chaque vhost, configurer le vhost pour utiliser ITK et l'utilisateur du vhost et le groupe *www-data* (via `AssignUserId`) + +Puis : + +Dans chaque répertoire de chaque vhost mettre un fichier `compteur.php` dont le contenu est : + +``` + + Require all granted + Require not ip 10.252.46.165 + +``` + +--- + +Tout bloquer sauf si connexion valide OU adresse IP spécifique : + +``` + + Require all denied + + Require ip 192.168.1.12 + Require valid-user + + +``` + +--- + +## Ne pas se tirer une balle dans le pied + +* Utiliser PHP 7.2 ou 7.3 ! Abandonnez PHP 5 et PHP 7.0 (plus supportés !) ! Enfin si c'est possible… +* Configurer le serveur web pour n'écouter que sur l'interface / port nécessaire (`/etc/apache2/ports.conf`) +* Ne pas exposer sa version de PHP ou Apache (ou nginx) +* Désactiver le vhost par défaut d'apache, dont la page HTML peut contenir des infos utiles à un attaquant +* Bloquer l'accès aux répertoires .svn et .git ! + +``` +RedirectMatch 404 /\.git +RedirectMatch 404 /\.svn +``` + +--- + +## Cacher les versions + +Pourquoi ? Contre les bots qui scannent les serveurs pas à jour. + +Dans `/etc/apache2/conf-enabled/security.conf` : + +``` +ServerTokens Prod +ServerSignature Off +``` + +--- + +Avant : + +`Server: Apache/2.4.25 (Debian)` + +Après : + +`Server: Apache` + +--- + +Dans `/etc/php/7.0/apache/conf.d/local.ini` ajouter : + +``` +expose_php = off +``` + +--- + +## Restreindre la surface d'attaque (Apache) + +Désactiver les index de répertoires, l'exécution de CGI, les liens symboliques et les inclusions : + +``` + + Options -Indexes -ExecCGI -FollowSymLinks -Includes + +``` + +Désactiver les .htaccess si possible. + +--- + +## Restreindre la surface d'attaque (PHP) + +Restreindre les répertoires accessibles de PHP (dans le vhost Apache) : + +``` +php_admin_value open_basedir /var/www/monsite.com +``` + +Interdire l'exécution de programme externe : + +``` +disable_functions = exec,passthru,shell_exec,system,proc_open,popen +``` + +à mettre dans le `/etc/php/7.0/apache/conf.d/local.ini`, ou dans un `php_admin_value` par vhost. + +--- + +## Aller plus loin + +Vérifier sa config : + +* Audit automatisé : mieux que ne rien faire, mais à ne pas faire en prod, laisse pas mal de traces (logs), peut surcharger le serveur +* Audit manuel : de bonnes connaissances en sécu, ou un bon chéquier ! +* Hardening PHP : ça restreint certaines fonctions et attaques, mais c'est bien mais ça peut casser des applis :( +* WAF (Web Application Firewall) : idem, ça détecte des attaques connues, bonne stratégie défensive, mais attention aux effets de bord. + +--- + +* [Auditer son site avec Nikto](https://doc.ubuntu-fr.org/nikto) +* [Hardening PHP : snuffleupagus (Apache)](https://github.com/nbs-system/snuffleupagus) +* [Tester son certificat SSL avec SSL Labs](https://www.ssllabs.com/ssltest/) +* [Mise en place de WAF avec mod_security pour Apache](https://www.it-connect.fr/installation-de-mod_security-devant-un-serveur-web-apache/) +* [WAF pour nginx avec naxsi](https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-naxsi-on-ubuntu-16-04) + + +--- + +## Exercice 1 + +Installer `ufw` et n'autoriser que le port 80 en entrée. + +Vérifier avec : + +``` +nmap -p 80 ADRESSE_IP +nmap -p 443 ADRESSE_IP +``` + +La première doit renvoyer que le port est ouvert, mais pas la seconde. + +--- + +## Exercice 2 + +Modifier le `.htaccess` du répertoire `secret` précédemment créé pour autoriser aussi l'adresse IP `127.0.0.1` à y accéder sans mot de passe. + +Vérifier avec curl. + +--- + +## Exercice 3 + +Cacher les versions de PHP et Apache. Vérifier avec Curl. + +--- + +## Exercice 4 (facultatif) + +Installer Nikto et scanner les vhosts du serveur web. Nikto est dans les dépôts `non-free` de Debian : https://debian-facile.org/doc:systeme:apt:sources.list:sources.list-non-free \ No newline at end of file diff --git a/cesi/hebergement_web/Makefile b/cesi/hebergement_web/Makefile new file mode 100644 index 0000000..832ed28 --- /dev/null +++ b/cesi/hebergement_web/Makefile @@ -0,0 +1,11 @@ +.PHONY: slides pdf all + +all: slides pdf + +slides: + for i in 0*.md; do pandoc -t s5 -s -o $$i.html $$i; done; + rename 's/.md.html/.html/' *.html + +pdf: + for i in 0*.html; do prince $$i; done; + rename 's/.html.pdf/.pdf/' *.pdf \ No newline at end of file diff --git a/cesi/hebergement_web/README.md b/cesi/hebergement_web/README.md new file mode 100644 index 0000000..0b6d83e --- /dev/null +++ b/cesi/hebergement_web/README.md @@ -0,0 +1,37 @@ +Préparation pour intervenant : + +== Partie 1 - DNS + +1. Mettre en place un enregistrement CNAME d'un sous-domaine qui pointe sur un autre sous-domaine qui n'existe pas. +2. Bonus si possible : désynchroniser le DNS primaire et les secondaires de la zone pour que seul le primaire ait le CNAME, et que le serial du SOA soit différent entre primaire et secondaire. + +== Partie 2 - HTTP + +Rien à faire. + +== Partie 3 - HTTPS + +Faire signer un sous-domaine réel (mais non utilisé) par Let's Encrypt, et recopier le certificat (fullchain.pem et privkey.pem) pour que les étudiants puissent mettre en place ce vhost signé sur leur VM. + +== Partie 4 - Web dynamique + + + +== TODO - améliorations et idées à prendre en compte pour prochaine session + +- pas assez de schémas visuels dans les slides / supports +- texte (tags pre) qui dépassent des slides + +Difficultés rencontrées le 16 mai 2019 : + +- DNS : problèmes de DNS menteur sur certains réseaux 4G (Bouygues) qui altèrent les réponses DNS +- mauvaise assimilation / confusion sur différence entre IP et host DNS, confusion entre host DNS et vhost HTTP chez certains étudiants (environ 3-4 sur 17) +- certains recopient de tutos datés du net sans réfléchir… +- certains ne lisent pas les énoncés… +- rythme relativement soutenu, parfois un peu dur pour les élèves de suivre d'une partie à l'autre (beaucoup de sujets abordés) + +Idées pour la partie DNS : + +- Mettre en place un DNS sur réseau local, avec un TLD virtuel, et pouvoir déléguer des zones NS à chacun des postes des étudiants, pour qu'ils puissent mettre en place leur propre serveur autoritaire et se faire des requêtes entre eux + +Pour le web dynamique ça serait bien de leur faire installer un CMS flatfile (pas de base de données, pour simplifier). \ No newline at end of file diff --git a/cesi/hebergement_web/img/hierarchie_dns.svg b/cesi/hebergement_web/img/hierarchie_dns.svg new file mode 100644 index 0000000..baba0ef --- /dev/null +++ b/cesi/hebergement_web/img/hierarchie_dns.svg @@ -0,0 +1,142 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + . + com + org + net + + fr + + ... + ... + wikipedia + + de + en + es + jbo + pl + ru + fr + + ... + + diff --git a/cesi/hebergement_web/img/tls_handshake.gif b/cesi/hebergement_web/img/tls_handshake.gif new file mode 100644 index 0000000000000000000000000000000000000000..f0f63a16c4691d535019ce55811fbf4e6746a24d GIT binary patch literal 19388 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 LxD5n5{s8|2oKU1H literal 0 HcmV?d00001 diff --git a/cesi/hebergement_web/s5/default/bg-shade.png b/cesi/hebergement_web/s5/default/bg-shade.png new file mode 100755 index 0000000000000000000000000000000000000000..172c914f6f0dd3ef6d97b3c23c31f539f8f69389 GIT binary patch literal 594 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 literal 0 HcmV?d00001 diff --git a/cesi/hebergement_web/s5/default/blank.gif b/cesi/hebergement_web/s5/default/blank.gif new file mode 100644 index 0000000000000000000000000000000000000000..75b945d2553848b8b6f41fe5e24599c0687b8472 GIT binary patch literal 49 zcmZ?wbhEHbWMp7unE0RJ|Ns9C3=9Vj8~~DvKUo+V7?>DzfNY>Fh|Ltj$Y2csQN9XW literal 0 HcmV?d00001 diff --git a/cesi/hebergement_web/s5/default/bodybg.gif b/cesi/hebergement_web/s5/default/bodybg.gif new file mode 100755 index 0000000000000000000000000000000000000000..5f448a16fe6dc7a03a4279fb19f9ba3af38eb634 GIT binary patch literal 10119 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 Duh@-b literal 0 HcmV?d00001 diff --git a/cesi/hebergement_web/s5/default/framing.css b/cesi/hebergement_web/s5/default/framing.css new file mode 100644 index 0000000..ad0d690 --- /dev/null +++ b/cesi/hebergement_web/s5/default/framing.css @@ -0,0 +1,23 @@ +/* The following styles size and place the slide components. + Edit them if you want to change the overall slide layout. + The commented lines can be uncommented (and modified, if necessary) + to help you with the rearrangement process. */ + +div#header, div#footer, div.slide {width: 100%; top: 0; left: 0;} +div#header {top: 0; left: 0; z-index: 1;} +div#footer {top: auto; bottom: 0; width: 100%; z-index: 5;} +div.slide {top: 0; width: 88%; padding: 1em 7% 2em 5%; z-index: 2;} + +#footer div#controls {bottom: 1.5em; left: 0; width: 100%; text-align: center; z-index: 1;} +div#controls form {margin: 0; padding: 0;} + +#currentSlide {position: absolute; left: 0; bottom: 0.5em; z-index: 10; + width: 100%; text-align: center;} +html>body #currentSlide {position: fixed;} + +/* +div#header {background: #FCC;} +div#footer {background: #CCF;} +div#controls {background: #BBD;} +div#currentSlide {background: #FFC;} +*/ diff --git a/cesi/hebergement_web/s5/default/opera.css b/cesi/hebergement_web/s5/default/opera.css new file mode 100644 index 0000000..9e9d2a3 --- /dev/null +++ b/cesi/hebergement_web/s5/default/opera.css @@ -0,0 +1,7 @@ +/* DO NOT CHANGE THESE unless you really want to break Opera Show */ +.slide { + visibility: visible !important; + position: static !important; + page-break-before: always; +} +#slide0 {page-break-before: avoid;} diff --git a/cesi/hebergement_web/s5/default/outline.css b/cesi/hebergement_web/s5/default/outline.css new file mode 100644 index 0000000..62db519 --- /dev/null +++ b/cesi/hebergement_web/s5/default/outline.css @@ -0,0 +1,15 @@ +/* don't change this unless you want the layout stuff to show up in the outline view! */ + +.layout div, #footer *, #controlForm * {display: none;} +#footer, #controls, #controlForm, #navLinks, #toggle { + display: block; visibility: visible; margin: 0; padding: 0;} +#toggle {float: right; padding: 0.5em;} +html>body #toggle {position: fixed; top: 0; right: 0;} + +/* making the outline look pretty-ish */ + +#slide0 h1, #slide0 h2, #slide0 h3, #slide0 h4 {border: none; margin: 0;} +#slide0 h1 {padding-top: 1.5em;} +.slide h1 {margin: 1.5em 0 0; padding-top: 0.25em; + border-top: 1px solid #888; border-bottom: 1px solid #AAA;} +#toggle {border: 1px solid; border-width: 0 0 1px 1px; background: #FFF;} diff --git a/cesi/hebergement_web/s5/default/pretty.css b/cesi/hebergement_web/s5/default/pretty.css new file mode 100644 index 0000000..3c9bf97 --- /dev/null +++ b/cesi/hebergement_web/s5/default/pretty.css @@ -0,0 +1,38 @@ +/* Following are the presentation styles -- edit away! + Note that the 'body' font size may have to be changed if the resolution is + different than expected. */ + +body {background: #95A7D4 url(bg-slide.jpg) 100% 100% no-repeat; color: #210; font: 29px Arial, sans-serif;} +a {text-decoration: none; color: #336; border-bottom: 1px dotted;} +h1, h2, h3, h4, h5, h6 {font-size: 1em; margin: 0;} +sup {font-size: 0.75em; font-weight: normal; + vertical-align: 0.5em; line-height: 1px;} +ul {margin-left: 1em; padding-left: 0;} +li {margin-bottom: 0.66em;} +li li {margin: 0.33em 0; font-size: smaller;} + +#header {background: url(bg-shade.png); border-bottom: 1px solid #333; + padding-bottom: 2em;} +#footer {background: url(bg-shade.png); color: #BBB; border-top: 1px solid #333;} +#header, #footer {font-size: 0.5em;} +#footer h1, #footer h2 { padding: 0.5em 0.75em; + font-weight: normal; font-style: italic;} +#footer h1 {left: 0; font-size: 1em; letter-spacing: 1px;} +#footer h2 {position: absolute; bottom: 0; right: 0;} + +#controls a {display: none;} +#controls select {visibility: hidden;} +#controls div:hover select {visibility: visible;} + +#currentSlide {font-size: 0.5em;} +#currentSlide span {font-size: 13px; color: rgb(49%,47%,66%);} +#currentSlide #csSep {display: none;} +#currentSlide #csHere {font-weight: bold;} +#currentSlide #csHere:before {content: "#"; font-weight: normal;} +#currentSlide #csTotal:before {content: " of ";} + +.slide h1 {font-size: 1.66em; line-height: 1; letter-spacing: -1px; + margin: 0 -15% 1em 0; padding: 0.25em 15% 0.06125em 0; border-bottom: 0.06125em solid rgb(90,94,120);} +#slide0 h1 {border: none; font-size: 2.25em; letter-spacing: 0; margin: 3em 0 1.5em;} +#slide0 h3 {margin-bottom: 0;} +#slide0 h4 {margin-top: 0; font-size: smaller;} diff --git a/cesi/hebergement_web/s5/default/print.css b/cesi/hebergement_web/s5/default/print.css new file mode 100644 index 0000000..16dd345 --- /dev/null +++ b/cesi/hebergement_web/s5/default/print.css @@ -0,0 +1 @@ +/* The following rule is necessary to have all slides appear in print! DO NOT REMOVE IT! */ .slide, ul {page-break-inside: avoid; visibility: visible !important;} h1 {page-break-after: avoid;} body {font-size: 12pt; background: white;} * {color: black;} #slide0 h1 {font-size: 200%; border: none; margin: 0.5em 0 0.25em;} #slide0 h3 {margin: 0; padding: 0;} #slide0 h4 {margin: 0 0 0.5em; padding: 0;} #slide0 {margin-bottom: 3em;} h1 {border-top: 2pt solid gray; border-bottom: 1px dotted silver;} .extra {background: transparent !important;} div.extra, pre.extra, .example {font-size: 10pt; color: #333;} ul.extra a {font-weight: bold;} p.example {display: none;} #header {display: none;} #footer h1 {margin: 0; border-bottom: 1px solid; color: gray; font-style: italic;} #footer h2, #controls {display: none;} /* The following rule keeps the layout stuff out of print. Remove at your own risk! */ .layout, .layout * {display: none !important;} img { max-width: 95%; } \ No newline at end of file diff --git a/cesi/hebergement_web/s5/default/s5-core.css b/cesi/hebergement_web/s5/default/s5-core.css new file mode 100644 index 0000000..8d96b87 --- /dev/null +++ b/cesi/hebergement_web/s5/default/s5-core.css @@ -0,0 +1,9 @@ +/* Do not edit or override these styles! The system will likely break if you do. */ + +div#header, div#footer, div.slide {position: absolute;} +html>body div#header, html>body div#footer, html>body div.slide {position: fixed;} +div.slide {visibility: hidden;} +#slide0 {visibility: visible;} +div#controls {position: absolute;} +#footer>div#controls {position: fixed;} +.handout {display: none;} diff --git a/cesi/hebergement_web/s5/default/slides.css b/cesi/hebergement_web/s5/default/slides.css new file mode 100644 index 0000000..23ad129 --- /dev/null +++ b/cesi/hebergement_web/s5/default/slides.css @@ -0,0 +1,5 @@ +@import url("s5-core.css"); /* required to make the slide show run at all */ +@import url("framing.css"); /* sets basic placement and size of slide components */ +@import url(pretty.css); /* stuff that makes the slides look better than blah */ + +img { max-height: 25rem; } \ No newline at end of file diff --git a/cesi/hebergement_web/s5/default/slides.js b/cesi/hebergement_web/s5/default/slides.js new file mode 100644 index 0000000..38fe853 --- /dev/null +++ b/cesi/hebergement_web/s5/default/slides.js @@ -0,0 +1,553 @@ +// S5 v1.1 slides.js -- released into the Public Domain +// +// Please see http://www.meyerweb.com/eric/tools/s5/credits.html for information +// about all the wonderful and talented contributors to this code! + +var undef; +var slideCSS = ''; +var snum = 0; +var smax = 1; +var incpos = 0; +var number = undef; +var s5mode = true; +var defaultView = 'slideshow'; +var controlVis = 'visible'; + +var isIE = navigator.appName == 'Microsoft Internet Explorer' && navigator.userAgent.indexOf('Opera') < 1 ? 1 : 0; +var isOp = navigator.userAgent.indexOf('Opera') > -1 ? 1 : 0; +var isGe = navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('Safari') < 1 ? 1 : 0; + +function hasClass(object, className) { + if (!object.className) return false; + return (object.className.search('(^|\\s)' + className + '(\\s|$)') != -1); +} + +function hasValue(object, value) { + if (!object) return false; + return (object.search('(^|\\s)' + value + '(\\s|$)') != -1); +} + +function removeClass(object,className) { + if (!object) return; + object.className = object.className.replace(new RegExp('(^|\\s)'+className+'(\\s|$)'), RegExp.$1+RegExp.$2); +} + +function addClass(object,className) { + if (!object || hasClass(object, className)) return; + if (object.className) { + object.className += ' '+className; + } else { + object.className = className; + } +} + +function GetElementsWithClassName(elementName,className) { + var allElements = document.getElementsByTagName(elementName); + var elemColl = new Array(); + for (var i = 0; i< allElements.length; i++) { + if (hasClass(allElements[i], className)) { + elemColl[elemColl.length] = allElements[i]; + } + } + return elemColl; +} + +function isParentOrSelf(element, id) { + if (element == null || element.nodeName=='BODY') return false; + else if (element.id == id) return true; + else return isParentOrSelf(element.parentNode, id); +} + +function nodeValue(node) { + var result = ""; + if (node.nodeType == 1) { + var children = node.childNodes; + for (var i = 0; i < children.length; ++i) { + result += nodeValue(children[i]); + } + } + else if (node.nodeType == 3) { + result = node.nodeValue; + } + return(result); +} + +function slideLabel() { + var slideColl = GetElementsWithClassName('*','slide'); + var list = document.getElementById('jumplist'); + smax = slideColl.length; + for (var n = 0; n < smax; n++) { + var obj = slideColl[n]; + + var did = 'slide' + n.toString(); + obj.setAttribute('id',did); + if (isOp) continue; + + var otext = ''; + var menu = obj.firstChild; + if (!menu) continue; // to cope with empty slides + while (menu && menu.nodeType == 3) { + menu = menu.nextSibling; + } + if (!menu) continue; // to cope with slides with only text nodes + + var menunodes = menu.childNodes; + for (var o = 0; o < menunodes.length; o++) { + otext += nodeValue(menunodes[o]); + } + list.options[list.length] = new Option(n + ' : ' + otext, n); + } +} + +function currentSlide() { + var cs; + if (document.getElementById) { + cs = document.getElementById('currentSlide'); + } else { + cs = document.currentSlide; + } + cs.innerHTML = '' + snum + '<\/span> ' + + '\/<\/span> ' + + '' + (smax-1) + '<\/span>'; + if (snum == 0) { + cs.style.visibility = 'hidden'; + } else { + cs.style.visibility = 'visible'; + } +} + +function go(step) { + if (document.getElementById('slideProj').disabled || step == 0) return; + var jl = document.getElementById('jumplist'); + var cid = 'slide' + snum; + var ce = document.getElementById(cid); + if (incrementals[snum].length > 0) { + for (var i = 0; i < incrementals[snum].length; i++) { + removeClass(incrementals[snum][i], 'current'); + removeClass(incrementals[snum][i], 'incremental'); + } + } + if (step != 'j') { + snum += step; + lmax = smax - 1; + if (snum > lmax) snum = lmax; + if (snum < 0) snum = 0; + } else + snum = parseInt(jl.value); + var nid = 'slide' + snum; + var ne = document.getElementById(nid); + if (!ne) { + ne = document.getElementById('slide0'); + snum = 0; + } + if (step < 0) {incpos = incrementals[snum].length} else {incpos = 0;} + if (incrementals[snum].length > 0 && incpos == 0) { + for (var i = 0; i < incrementals[snum].length; i++) { + if (hasClass(incrementals[snum][i], 'current')) + incpos = i + 1; + else + addClass(incrementals[snum][i], 'incremental'); + } + } + if (incrementals[snum].length > 0 && incpos > 0) + addClass(incrementals[snum][incpos - 1], 'current'); + ce.style.visibility = 'hidden'; + ne.style.visibility = 'visible'; + jl.selectedIndex = snum; + currentSlide(); + number = 0; +} + +function goTo(target) { + if (target >= smax || target == snum) return; + go(target - snum); +} + +function subgo(step) { + if (step > 0) { + removeClass(incrementals[snum][incpos - 1],'current'); + removeClass(incrementals[snum][incpos], 'incremental'); + addClass(incrementals[snum][incpos],'current'); + incpos++; + } else { + incpos--; + removeClass(incrementals[snum][incpos],'current'); + addClass(incrementals[snum][incpos], 'incremental'); + addClass(incrementals[snum][incpos - 1],'current'); + } +} + +function toggle() { + var slideColl = GetElementsWithClassName('*','slide'); + var slides = document.getElementById('slideProj'); + var outline = document.getElementById('outlineStyle'); + if (!slides.disabled) { + slides.disabled = true; + outline.disabled = false; + s5mode = false; + fontSize('1em'); + for (var n = 0; n < smax; n++) { + var slide = slideColl[n]; + slide.style.visibility = 'visible'; + } + } else { + slides.disabled = false; + outline.disabled = true; + s5mode = true; + fontScale(); + for (var n = 0; n < smax; n++) { + var slide = slideColl[n]; + slide.style.visibility = 'hidden'; + } + slideColl[snum].style.visibility = 'visible'; + } +} + +function showHide(action) { + var obj = GetElementsWithClassName('*','hideme')[0]; + switch (action) { + case 's': obj.style.visibility = 'visible'; break; + case 'h': obj.style.visibility = 'hidden'; break; + case 'k': + if (obj.style.visibility != 'visible') { + obj.style.visibility = 'visible'; + } else { + obj.style.visibility = 'hidden'; + } + break; + } +} + +// 'keys' code adapted from MozPoint (http://mozpoint.mozdev.org/) +function keys(key) { + if (!key) { + key = event; + key.which = key.keyCode; + } + if (key.which == 84) { + toggle(); + return; + } + if (s5mode) { + switch (key.which) { + case 10: // return + case 13: // enter + if (window.event && isParentOrSelf(window.event.srcElement, 'controls')) return; + if (key.target && isParentOrSelf(key.target, 'controls')) return; + if(number != undef) { + goTo(number); + break; + } + case 32: // spacebar + case 34: // page down + case 39: // rightkey + case 40: // downkey + if(number != undef) { + go(number); + } else if (!incrementals[snum] || incpos >= incrementals[snum].length) { + go(1); + } else { + subgo(1); + } + break; + case 33: // page up + case 37: // leftkey + case 38: // upkey + if(number != undef) { + go(-1 * number); + } else if (!incrementals[snum] || incpos <= 0) { + go(-1); + } else { + subgo(-1); + } + break; + case 36: // home + goTo(0); + break; + case 35: // end + goTo(smax-1); + break; + case 67: // c + showHide('k'); + break; + } + if (key.which < 48 || key.which > 57) { + number = undef; + } else { + if (window.event && isParentOrSelf(window.event.srcElement, 'controls')) return; + if (key.target && isParentOrSelf(key.target, 'controls')) return; + number = (((number != undef) ? number : 0) * 10) + (key.which - 48); + } + } + return false; +} + +function clicker(e) { + number = undef; + var target; + if (window.event) { + target = window.event.srcElement; + e = window.event; + } else target = e.target; + if (target.getAttribute('href') != null || hasValue(target.rel, 'external') || isParentOrSelf(target, 'controls') || isParentOrSelf(target,'embed') || isParentOrSelf(target,'object')) return true; + if (!e.which || e.which == 1) { + if (!incrementals[snum] || incpos >= incrementals[snum].length) { + go(1); + } else { + subgo(1); + } + } +} + +function findSlide(hash) { + var target = null; + var slides = GetElementsWithClassName('*','slide'); + for (var i = 0; i < slides.length; i++) { + var targetSlide = slides[i]; + if ( (targetSlide.name && targetSlide.name == hash) + || (targetSlide.id && targetSlide.id == hash) ) { + target = targetSlide; + break; + } + } + while(target != null && target.nodeName != 'BODY') { + if (hasClass(target, 'slide')) { + return parseInt(target.id.slice(5)); + } + target = target.parentNode; + } + return null; +} + +function slideJump() { + if (window.location.hash == null) return; + var sregex = /^#slide(\d+)$/; + var matches = sregex.exec(window.location.hash); + var dest = null; + if (matches != null) { + dest = parseInt(matches[1]); + } else { + dest = findSlide(window.location.hash.slice(1)); + } + if (dest != null) + go(dest - snum); +} + +function fixLinks() { + var thisUri = window.location.href; + thisUri = thisUri.slice(0, thisUri.length - window.location.hash.length); + var aelements = document.getElementsByTagName('A'); + for (var i = 0; i < aelements.length; i++) { + var a = aelements[i].href; + var slideID = a.match('\#slide[0-9]{1,2}'); + if ((slideID) && (slideID[0].slice(0,1) == '#')) { + var dest = findSlide(slideID[0].slice(1)); + if (dest != null) { + if (aelements[i].addEventListener) { + aelements[i].addEventListener("click", new Function("e", + "if (document.getElementById('slideProj').disabled) return;" + + "go("+dest+" - snum); " + + "if (e.preventDefault) e.preventDefault();"), true); + } else if (aelements[i].attachEvent) { + aelements[i].attachEvent("onclick", new Function("", + "if (document.getElementById('slideProj').disabled) return;" + + "go("+dest+" - snum); " + + "event.returnValue = false;")); + } + } + } + } +} + +function externalLinks() { + if (!document.getElementsByTagName) return; + var anchors = document.getElementsByTagName('a'); + for (var i=0; i' + + '