ApacheActionTDM.fm Page v Lundi, 23. février 2004 3:48 15 Préface... xi 1. Installation...1 1.1 Installer à partir des paquetages de Red Hat Linux... 2 1.2 Installer Apache sous Windows... 3 1.3 Télécharger les sources d Apache... 9 1.4 Construire Apache à partir des sources... 11 1.5 Installer avec ApacheToolbox... 12 1.6 Démarrer, arrêter et redémarrer Apache... 15 1.7 Désinstaller Apache... 16 2. Ajout de modules communs...19 2.1 Installer un module de tiers... 20 2.2 Installer mod_dav sur un système Unix... 20 2.3 Installer mod_dav sous Windows... 22 2.4 Installer mod_perl sur un système Unix... 25 2.5 Installer mod_php sur un système Unix... 26 2.6 Installer mod_php sous Windows... 27 2.7 Installer le module Python mod_snake... 28 2.8 Installer mod_ssl... 29 3. Journaux...31 3.1 Détailler davantage vos entrées de journaux... 34 3.2 Obtenir des erreurs plus détaillées... 35 3.3 Tracer les contenus POST... 37 3.4 Journaliser l adresse IP d un client mandaté... 38 3.5 Consigner l adresse MAC des clients... 38 3.6 Consigner les cookies... 39 3.7 Ne pas journaliser les requêtes aux images depuis les pages locales.. 41
ApacheActionTDM.fm Page vi Lundi, 23. février 2004 3:48 15 vi 3.8 Consigner les requêtes par jour ou par heure... 42 3.9 Changer de journal le premier du mois... 43 3.10 Consigner les noms d hôtes au lieu des adresses IP... 43 3.11 Maintenir des journaux séparés pour chaque hôte virtuel... 45 3.12 Consigner les requêtes de mandataires... 46 3.13 Consigner les erreurs des hôtes virtuels dans plusieurs fichiers... 47 3.14 Consigner les adresses IP du serveur... 48 3.15 Consigner la page référant... 49 3.16 Consigner le nom du navigateur... 49 3.17 Consigner des champs arbitraires des en-têtes de requêtes... 50 3.18 Consigner des champs arbitraires des en-têtes de réponses... 51 3.19 Consigner l activité dans une base de données MySQL... 51 3.20 Consigner dans syslog... 52 3.21 Consigner les répertoires utilisateur... 54 4. Hôtes virtuels...57 4.1 Mettre en place des hôtes virtuels basés sur le nom... 58 4.2 Désigner un hôte virtuel basé sur le nom par défaut... 59 4.3 Mettre en place des hôtes virtuels basés sur l adresse... 60 4.4 Créer un hôte virtuel basé sur l adresse par défaut... 61 4.5 Utiliser de concert des hôtes virtuels basés sur le nom et l adresse... 62 4.6 Des hôtes virtuels en nombre avec mod_vhost_alias... 63 4.7 Des hôtes virtuels en nombre à l aide de règles de réécriture... 65 4.8 SSL et les hôtes virtuels basés sur le nom... 65 4.9 Journalisation propre à chaque hôte virtuel... 67 4.10 Diviser un journal... 68 4.11 Hôtes virtuels basés sur le port... 68 4.12 Renvoyer le même contenu sur plusieurs adresses... 69 5. Alias, redirection et réécriture...71 5.1 Afficher le code source PHP coloré sans liens symboliques... 71 5.2 Attribuer un répertoire à une URL... 73 5.3 Créer une nouvelle URL pour du contenu existant... 74 5.4 Donner aux utilisateurs leur propre URL... 75 5.5 Mettre en place des alias pour plusieurs URL avec une seule directive... 77 5.6 Renvoyer plusieurs URL vers le même répertoire CGI... 78 5.7 Créer un répertoire CGI pour chaque utilisateur... 78 5.8 Renvoyer vers un autre emplacement... 79 5.9 Renvoyer plusieurs URL vers la même destination... 81 5.10 Autoriser les URL insensibles à la casse... 82 5.11 Remplacer du texte dans les URL requises... 82 5.12 Réécrire les informations de chemin sous forme d arguments CGI.. 83 5.13 Refuser l accès aux requêtes sans référant... 84
ApacheActionTDM.fm Page vii Lundi, 23. février 2004 3:48 15 vii 5.14 Réécrire en se fondant sur la chaîne de requête... 84 5.15 Rediriger tout ou partie de votre serveur vers SSL... 85 5.16 Transformer les répertoires en noms d hôtes... 86 5.17 Renvoyer toutes les requêtes vers un même hôte... 87 5.18 Transformer les noms de documents en arguments... 87 6. Sécurité...89 6.1 Utiliser les informations des comptes système pour l authentification web... 91 6.2 Mettre en place des mots de passe à emploi unique... 92 6.3 Faire expirer des mots de passe... 93 6.4 Limiter la taille des fichiers déposés... 95 6.5 Empêcher les images d être utilisées hors du site... 97 6.6 Exiger des authentifications faible et forte... 98 6.7 Administrer des fichiers.htpasswd... 99 6.8 Créer des fichiers de mots de passe pour une authentification Digest... 101 6.9 Relâcher la sécurité dans un sous-répertoire... 102 6.10 Ôter sélectivement les restrictions... 104 6.11 Autoriser à l aide de la propriété des fichiers... 104 6.12 Stocker les créances des utilisateurs dans une base de données MySQL... 106 6.13 Accéder au nom de l utilisateur authentifié... 107 6.14 Obtenir le mot de passe utilisé pour l authentification... 108 6.15 Éviter des attaques de force brute contre les mots de passe... 108 6.16 Comparaison des authentifications Digest et Basic... 109 6.17 Accéder à des créances localisées dans des URL... 110 6.18 Sécuriser WebDAV... 111 6.19 Activer WebDAV sans donner les droits d écriture à l utilisateur web... 112 6.20 Restreindre l accès du mandataire à certaines URL... 113 6.21 Protéger des fichiers à l aide d un programme enveloppant... 114 6.22 Protéger tous les fichiers sauf un sous-ensemble... 116 6.23 Protéger les fichiers du serveur des scripts malicieux... 117 6.24 Mettre en place des permissions convenables sur les fichiers... 118 6.25 Employer le moins de modules possible... 120 6.26 Restreindre l accès aux fichiers situés hors de la racine web... 122 6.27 Limiter les méthodes utilisateur par utilisateur... 123 6.28 Restreindre les intervalles des requêtes... 124 7. SSL...127 7.1 Installer SSL... 127 7.2 Générer des certificats SSL... 129 7.3 Générer une AC de confiance... 131 7.4 Servir une partie d un site par SSL... 133 7.5 Authentifier à l aide de certificats clients... 135
ApacheActionTDM.fm Page viii Lundi, 23. février 2004 3:48 15 viii 8. Contenu dynamique...137 8.1 Activer un répertoire CGI... 137 8.2 Activer des scripts CGI dans des répertoires non spécifiés par une directive ScriptAlias... 138 8.3 Utiliser les extensions de fichiers de Windows pour invoquer les programmes CGI... 139 8.4 Identifier les scripts CGI par leur extension... 140 8.5 Tester la bonne configuration de CGI... 141 8.6 Lire les paramètres d un formulaire... 143 8.7 Invoquer un programme CGI pour certains types de contenu... 146 8.8 Faire fonctionner les SSI... 147 8.9 Afficher la date de dernière modification... 149 8.10 Inclure un en-tête standard... 149 8.11 Inclure la sortie d un programme CGI... 150 8.12 Exécuter des scripts CGI sous un utilisateur différent avec suexec.. 151 8.13 Installer un gestionnaire de mod_perl depuis le CPAN... 153 8.14 Écrire un gestionnaire mod_perl... 154 8.15 Activer les scripts PHP... 155 8.16 Contrôler l installation de PHP... 156 9. Gestion des erreurs...157 9.1 Réagir à un champ Host manquant... 157 9.2 Modifier le statut de réponse des scripts CGI... 158 9.3 Messages d erreur personnalisés... 159 9.4 Fournir des documents d erreur dans plusieurs langues... 160 9.5 Renvoyer des URL invalides vers une autre page... 161 9.6 Faire afficher votre page d erreur à Internet Explorer... 162 9.7 Être prévenu de conditions d erreur... 163 10. Mandataires...165 10.1 Sécuriser votre serveur mandataire... 165 10.2 Empêcher le serveur mandataire de servir de relais de courrier électronique... 167 10.3 Faire suivre les requêtes vers un autre serveur... 167 10.4 Bloquer les requêtes mandatées demandant certains emplacements... 168 10.5 Mandater du contenu mod_perl vers un autre serveur... 169 10.6 Configurer un serveur mandataire cache... 170 10.7 Filtrer le contenu mandaté... 170 10.8 Exiger d un serveur mandaté qu il s authentifie... 171 11. Performances...173 11.1 Déterminer la quantité de mémoire nécessaire... 174 11.2 Mettre en place des bancs de tests pour Apache avec ab... 175 11.3 Régler finement la directive Keepalive... 176
ApacheActionTDM.fm Page ix Lundi, 23. février 2004 3:48 15 ix 11.4 Prendre un instantané de l activité du site... 177 11.5 Éviter les recherches DNS... 178 11.6 Optimiser les liens symboliques... 180 11.7 Minimiser l impact sur les performances des fichiers.htaccess... 181 11.8 Désactiver la négociation de contenu... 182 11.9 Optimiser la création de processus... 184 11.10 Régler finement la création de processus légers... 185 11.11 Placer les fichiers fréquemment demandés en mémoire cache... 187 11.12 Répartir la charge du serveur à l aide du modulemod_proxy... 188 11.13 Équilibrer la charge entre plusieurs serveurs... 189 11.14 Placer des contenus de répertoires en mémoire cache... 190 11.15 Accélérer les programmes CGI à l aide de mod_perl... 191 12. Divers...195 12.1 Placer les directives correctement... 195 12.2 Changer le nom des fichiers.htaccess... 197 12.3 Générer des listes de contenu de répertoires ou dossiers... 198 12.4 Résoudre le problème du slash final... 199 12.5 Mettre en place le champ Content-Type en fonction des capacités du navigateur... 201 12.6 Gérer l absence des champs d en-tête Host:... 201 12.7 Changer de document par défaut... 202 12.8 Mettre en place une icône par défaut... 202 A. Les expressions régulières sous Apache...205 B. Expertise des pannes...211 Index...219
ApacheActionTDM.fm Page x Lundi, 23. février 2004 3:48 15 x